定义一个char a[100][101]的二维字符数组,存储用户输入的n行m列个字符。其中n由用户输入确定,1<=n<=100;而m不需要用户输入,1<=m<=100,也就是一行最多只有100个有效字符。将n行字符串按照字符串长度从小到大排序,并输出排序后的结果。
输入格式:
用户先输入一个整数n,然后按回车键。
接下来输入n个字符串,每个字符串结束时按回车键。
注意:用户输入的一行字符信息中,可能含有空格和标点符号。
输出格式:
按照每行字符串长度升序排列后的输出结果,每行打印一个字符串。题目确保没有两行的长度完全相同。
输入样例:
用户输入数字5并回车后,输入五个字符串。
5
aaa
b
ccccc
dd
eeeeeee
输出样例:
按照输入的五个字符串的长度,从短到长输出。
b
dd
aaa
ccccc
eeeeeee
正确答案:
#include<stdio.h>
#include<string.h>
int main()
{
int n=0;
char a[101][101];
char arr[101];
scanf("%d",&n);
char st[101];
gets(st);//注意十分重要
for(int i=0;i<n;i++)
{
gets(a[i]);
}
int flag=0;
for(int j=0;j<n;j++)
{
flag=0;
for(int i=0;i<n-1;i++)
{
if(strlen(a[i])>strlen(a[i+1]))
{
strcpy(arr,a[b]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],arr);
flag=1;
}
}
if(flag==0)
{
break;
}
}
for(int i=0;i<n;i++)
{
printf("%s\n",a[i]);
}
return 0;
}