1263 - C语言10.33
时间限制 : 1 秒
内存限制 : 32 MB
用指向指针的指针的方法实现对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; } }
Java解答
import java.util.Arrays; import java.util.Scanner; public class Main { private static Scanner s = new Scanner(System.in) ; public static void main(String[] args) { String strs[] = new String[5] ; for (int i = 0; i < 5; i++) { String str = s.next() ; if(str.length()<=100) strs[i] = str ; } Arrays.sort(strs); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]) ; } } }