#include <stdio.h> #include <string.h> #include <stdlib.h> void sortmaxstr(int k,int m,char A[k][m]){ //选择排序,最小的放前面的,顺序增大 int i,j; char temp[m]; for(i=0;i<k;i++){ for(j=i+1;j<k;j++){ if(strcmp(A[i],A[j])>0){ //函数库的字符串比较排序 strcpy(temp,A[i]); //前者顺序大就调换,始终保持第i个都比i+1到最后一个小 strcpy(A[i],A[j]); strcpy(A[j],temp); } } printf("%s\n",A[i]); //直接输出 } return; } int main() { int n,i,j; scanf("%d",&n); char str[n][101]; char temp[101],a[5]; gets(a); i=0; while (i<n){ scanf("%s",str[i]); //为什么我这里用fgets(str,101,stdin),就出现段错误?? i++; } sortmaxstr(n,101,str); return 0; } /*void sortmaxstr(int k,int m,char A[k][m]){ //选择排序,最小的放前面的,顺序增大 int i,j; char temp[m]; for(i=0;i<k;i++){ for(j=i+1;j<k;j++){ if(strcmp(A[i],A[j])>0){ strcpy(temp,A[i]); strcpy(A[i],A[j]); strcpy(A[j],temp); } } printf("%s",A[i]); //这里,scanf的要换行。 } return; } int main() { int n,i,j; scanf("%d",&n); char str[n][101]; char temp[101],a[5]; gets(a); i=0; while (fgets(str[i],101,stdin)){ //这里fgets i++; } sortmaxstr(n,101,str); return 0; }*/