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

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

如果按照 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;
}
 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);
}

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