从键盘接收入用户五个姓名,将这些字符串按照升序排序输出
//首先要明白字符串的排序是根据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;
}