1255 - C语言10.25
在main函数中输入10个不等长的字符串,另外写一个函数对它们按字典序从小到大排序。并在main函数中输出这10个已经排好序的字符串。
题目输入
共有10行,每行一个字符串。输入保证每行的字符串长度不超过100个字符。请注意字符串中有可能包含空格。
题目输出
与输入格式相同,每行输出一个排好序之后的字符串。
请注意行尾输出换行。
输入/输出样例
题目输入
String DDD String Ee string AA String CCCCC string GG string jJj String IiiIII String h string fFf String BBbb
题目输出
String BBbb String CCCCC String DDD String Ee String IiiIII String h string AA string GG string fFf string jJj
C语言解答
#include <stdio.h> #include <stdlib.h> #include <string.h> int cmp(const void* pa,const void* pb) { return strcmp((char*)pa,(char*)pb); } void sort(char string[][1000]) { qsort(string,10,1000*sizeof(char),cmp); } int main () { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); char s[10][1000]; for(int i=0;i<10;i++) gets(s[i]); //printf("kddoe\n"); sort(s); for(int i=0;i<10;i++) puts(s[i]); //printf("dkdoe\n"); }
C++解答
#include <stdio.h> #include <string.h> int main() { void sort(char *strings[], int n); char str[10][101], *strings[10], ch; int i, j; for (i = 0;i < 10;i++) { j = 0; while ((ch = getchar()) != '\n') { str[i][j] = ch; j++; } str[i][j] = '\0'; strings[i] = &str[i][0]; } sort(strings, 10); for (i = 0;i < 10;i++) printf("%s\n", strings[i]); return 0; } /* 字符串排序函数 */ void sort(char *strings[], int n) { int i, j, current; char *temp; for (i = 0;i < n - 1;i++) { /* 寻找剩余的最小的字符串 */ current = i; for (j = i + 1;j < n;j++) if (strcmp(strings[j], strings[current]) < 0) current = j; /* 将剩余的最小字符串替换到最靠前的位置 */ temp = strings[i]; strings[i] = strings[current]; strings[current] = temp; } }