1263 - C语言10.33
用指向指针的指针的方法实现对5个字符串的排序和输出。本题中的排序指的是字符串的字典序。
题目输入
共5行,每一行有一个不包含空格的字符串。输入保证每个字符串的长度不超过100。
题目输出
共5行,与输入的格式相同,输出排序后的字符串。
请注意行尾输出换行。
输入/输出样例
题目输入
January February March April May
题目输出
April February January March May
C语言解答
#include<stdio.h> #include<string.h> int main() { char str[5][100]; char *p[5]; char temp[100]; char *t=temp; int i; int j; for(i=0;i<5;i++) { gets(str[i]); p[i]=str[i]; } for(i=0;i<4;i++) { for(j=i+1;j<5;j++) { if(strcmp(p[i],p[j])>0) { t=p[i]; p[i]=p[j]; p[j]=t; } } } for(i=0;i<5;i++) { puts(p[i]); } return 0; }
C++解答
#include <stdio.h> #include <string.h> int main() { void sort(char *strings[], int n); char *strings[5]; char buffer[5][101]; int i; for (i = 0;i < 5;i++) { scanf("%s", buffer[i]); strings[i] = buffer[i]; } sort(strings, 5); for (i = 0;i < 5;i++) printf("%s\n", strings[i]); return 0; } /* 字符串选择排序函数 */ void sort(char *strings[], int n) { int i, j; char **p, *temp; for (i = 0;i < n - 1;i++) { p = strings + i; for (j = i + 1;j < n;j++) { if (strcmp(strings[j], *p) < 0) p = strings + j; } temp = *p; *p = strings[i]; strings[i] = temp; } }