1254 - C语言10.24
在main函数中输入10个等长的字符串,另外写一个函数对它们按字典序从小到大排序。并在main函数中输出这10个已经排好序的字符串。
Input
共有10行,每行一个字符串。输入保证每行的字符串长度相等且不超过100个字符。但是请注意字符串中有可能包含空格。
Output
与输入格式相同,每行输出一个排好序之后的字符串。
请注意行尾输出换行。
Examples
Input
String D String E string A String C string G string J String I String H string F String B
Output
String B String C String D String E String H String I string A string F string G string J
Solution C
#include<stdio.h> #include<string.h> int main() { char a[10][120],e[120]; int i,j; for(i=0;i<10;i++) { gets(a[i]); } for(i=0;i<10;i++) { for(j=i;j<10;j++) { if( strcmp(a[i],a[j]) > 0 ) {strcpy(e,a[i]); strcpy(a[i],a[j]); strcpy(a[j],e); } } } for(i=0;i<10;i++) { puts(a[i]); } return 0; }
Solution C++
#include <stdio.h> #include <string.h> int main() { void sort(char str[][101], int n, int length); char str[10][101], ch; int i, j, length; for (i = 0;i < 10;i++) { j = 0; while ((ch = getchar()) != '\n') { str[i][j] = ch; j++; } length = j; str[i][length] = '\0'; } sort(str, 10, length); for (i = 0;i < 10;i++) printf("%s\n", str[i]); return 0; } /* 字符串排序函数 */ void sort(char str[][101], int n, int length) { int i, j, current; char temp; for (i = 0;i < n - 1;i++) { /* 寻找剩余的最小的字符串 */ current = i; for (j = i + 1;j < n;j++) if (strcmp(str[j], str[current]) < 0) current = j; /* 将剩余的最小字符串替换到最靠前的位置 */ for (j = 0;j < length;j++) { temp = str[i][j]; str[i][j] = str[current][j]; str[current][j] = temp; } } }