//首先要明白字符串的排序是根据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;
}