单词排序
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 273 通过数: 90
【题目描述】
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次。(区分大小写)
【输入】
一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。数据不含除字母、空格外的其他字符。
【输出】
按字典序输出这些单词,重复的单词只输出一次。
【输入样例】
She wants to go to Peking University to study Chinese
【输出样例】
Chinese Peking She University go study to wants
【来源】
【代码】
#include
#include
int main()
{
char a[5000],b[100][50]={NULL},temp[50];//定义一个a数组,用来存放输入的单词组;定义一个二维数组b,用来存放一个一个的单词。
int i=0,j=0,h=0;
gets(a);
while(a[i]!='\0')//当a[i]不为空时
{
if(a[i]!=' ')//当a[i]是字母时
{
b[j][h]=a[i];//把a[i]放在b数组中的第j行的第h中
h++;
i++;
}
else if(a[i]==' '&&a[i+1]!=' ')//只有一个空格时,下一个字母存方放在b数组中的下一行的第一个
{
j++;//行数加一
i++;
h=0;
}
else//有多个空格时,继续遍历下一个字母
{
i++;
h=0;
}
}
for(i=0; i<=j; i++)
for(h=i; h<=j; h++)
if(strcmp(b[h],b[i])<0)//字符串排序。当s1
s2时,返回正数。即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
{
strcpy(temp,b[h]);
strcpy(b[h],b[i]);
strcpy(b[i],temp);
}
for(i=0; i
【说明】
dev-c++运行成功