这道题使用结构体数组好一点,每个节点存储单词,以及他的长度,以便之后排序输出。
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
struct english{
char word[15];
int len;
};
int cmp( void const *a, void const *b){
return ((struct english*)a)->len - ((struct english*)b)->len;
}
int main()
{
char ch;
int i = 0, n, k = 0;
struct english arr[20];
while(1){
scanf("%s", arr[k].word);
getchar();
if ( arr[k].word[0] == '#') //注意循环结束条件
break;
k++;
}
for ( i = 0; i < k; i++)
arr[i].len = strlen(arr[i].word);
qsort(arr, k, sizeof(arr[0]), cmp);
for ( i = 0; i < k; i++)
printf("%s ", arr[i].word);
return 0;
}