本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入为若干英文单词,每行一个,以#
作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出为排序后的结果,每个单词后面都额外输出一个空格。
blue
red
yellow
green
purple
#
red blue green yellow purple
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C程序如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[20][10];
int i = 0;
scanf("%s", a[i]);
while(a[i][0] != '#')//输入字符串
{
i++;
scanf("%s", a[i]);
}
for(int j = 1; j <= i - 1; j++)//冒泡排序
{
for(int k = 0; k < i - j; k++)
{
if(strlen(a[k]) > strlen(a[k + 1]))
{
char temp[10];
strcpy(temp, a[k]);
strcpy(a[k], a[k + 1]);
strcpy(a[k + 1], temp);
}
}
}
for(int j = 0; j < i; j++)//输出字符串
{
printf("%s ", a[j]);
}
return 0;
}