//首先要明白字符串的排序是根据ASCII大小排序,而不是长短,这个在测试数据的时候很重要
 //然后分析题意要输入五个学生的姓名,首先就是用gets,puts输入输出,详情看下:
 #include<iostream>
 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 using namespace std;
 int main()
 {
     int i,j,p;
     char str[20],name[5][20];//因为是输入的字符数组,所以要定义一个字符串进行字符串的赋值
     for(i=0;i<5;i++)//循环输入五个名字
    {
         gets(name[i]);
     }
    for(i=0;i<5;i++)
     {
         //p是为了存储i的实时地址,先将输入的字符数组赋值给str字符串
         p=i;
         strcpy(str,name[i]);
         //从这个字符串往后输入的字符数组与该字符串进行比较,如果后面小的话,将后面的字符串赋值给前面的字符串
         //也将j赋值给p,更新P的地址
     for(j=i+1;j<5;j++)
     {
         if(strcmp(name[j],str)<0)
             {
                 p=j;
                 strcpy(str,name[j]);
             }
     }
     //如果p不等于i就说明后面的一定更小,交换两个字符串
             if(p!=i)
             {
                 strcpy(str,name[i]);
                 strcpy(name[i],name[p]);
                 strcpy(name[p],str);
             }
             puts(name[i]);
             cout<<endl;//换行进入下一个
         }
     return 0;
 }

京公网安备 11010502036488号