2 ji1812062521 ji1812062521 于 2016.02.18 16:49 提问

C++小程序。。。。两个

编写程序,输入若干个字符串。要求:(1)按字符串长度的大小升序输出各个字符串。(2)按字符串中字符的ASCLL码值大小升序输出各个字符串。

3个回答

leilba
leilba   Rxr 2016.02.18 17:16
已采纳

如果按照 1条件优先于2的话,我会这么写。。(你作业好多呀)

 #include <string>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

//比较函数,用于排序
bool compare(string a,string b) {
    //长度不一样的时候采用长度来排序
    if (a.length() != b.length()) {
       return a.length() < b.length();
    }
    //长度一样的时候采用ASCLL值排序
    return a < b;
}

int main()
{

    vector<string>list;

    string inputString;

    while (cin>>inputString) {

        //结束标志,测试方便,可以注释掉
        if (inputString == "0") {
            break;
        }
        //加入到vector
        list.push_back(inputString);
    }
    //排序,系统方法
    sort(list.begin(),list.end(),compare);
    //依次输出
    for (int i=0; i<list.size(); i++) {
        cout<<list[i]<<endl;
    }

    return 0;
}
leilba
leilba 回复ji1812062521: 最后一个输入0表示结束,要看代码
接近 2 年之前 回复
ji1812062521
ji1812062521 〒_〒有警告啊,还有为什么我输入代码,不输出结果呢
接近 2 年之前 回复
devmiao
devmiao 很棒的程序,lz可以采纳了。
接近 2 年之前 回复
henuyx
henuyx   2016.02.19 10:20

排序算法之冒泡排序,最简答对的解法。

Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.18 17:06
 void main()
{
    char str[100];
    int i,j;
    printf("please input a string: ");
    gets(str);
    for(i=0;i<strlen(str)-1;i++)
    {
        for(j=i+1;j<strlen(str);j++)
            if(str[i]>str[j]) 
            {
                char temp; //交换这里错了
                temp=str[j];
                str[j]=str[i];
                str[i]=temp;
            }
    }
    printf("The ordered string is: ");
    puts(str);
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!