1135.字符串排序

题目描述:
先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串少于一百个字符。
 如果在输入过程中输入的一个字符串为“stop”,也结束输入。
 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。
输入:
字符串的个数,以及该组字符串。每个字符串以‘ ’结束。如果输入字符串为“stop”,也结束输入.
输出:
可能有多组测试数据,对于每组数据,
 将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。
样例输入:

5
sky is grey
cold
very cold
stop
3
it is good enough to be proud of
good
it is quite good
样例输出:

 cold
very cold
sky is grey
good
it is quite good
it is good enough to be proud of
提示:
根据输入的字符串个数来动态分配存储空间(采用new()函数)。每个字符串会少于100个字符。
 测试数据有多组,注意使用while()循环输入。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

struct str{
    string a;
};

str s[1000];

bool compare(str p,str q){
    return p.a.size()<q.a.size();
}

int main(){
    int n;
    while(cin>>n){
        getchar(); 
        for(int i=0;i<n;i++){
            getline(cin,s[i].a);
            if(s[i].a=="stop"){
                n=i;
                break;
            }
        }
        sort(s,s+n,compare);
        for(int i=0;i<n;i++){
            cout<<s[i].a<<endl;
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/bernieloveslife/p/9735087.html