实验11-1-1 英文单词排序(25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#
作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
1 2 3 4 5 6
| blue red yellow green purple #
|
输出样例:
1
| red blue green yellow purple
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <stdio.h> #include<stdlib.h> #include<string.h> void main() { int i,j, n = 0; char *color[20], str[10], *temp; scanf("%s", str); while(str[0] != '#') { color[n] = (char *)malloc(sizeof(char)*(strlen(str)+1)); strcpy(color[n], str); n++; scanf("%s", str); } color[n] = '\0'; for(i = 1; i < n; i++ ) { for(j = 0; j < n-i; j++) if(strcmp(color[j], color[j+1]) > 0) { temp = color[j]; color[j] = color[j+1]; color[j+1] = temp; } } for(i = 0; i < n; i++) { printf("%s ", color[i]); free(color[i]); } printf("\n"); }
|