信息学奥赛一本通(1185:单词排序)
作者:互联网
1185:单词排序
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 11964 通过数: 6009
【题目描述】
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次。(区分大小写)
【输入】
一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。数据不含除字母、空格外的其他字符。
【输出】
按字典序输出这些单词,重复的单词只输出一次。
【输入样例】
She wants to go to Peking University to study Chinese
【输出样例】
Chinese
Peking
She
University
go
study
to
wants
【参考代码】
#include <stdio.h>
#include <string.h>
char s[5001];
char a[100][51];
char t[51];
void cmpsort(int n)
{
int i,j;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(strcmp(a[i],a[j])>0)
{
strcpy(t,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],t);
}
}
}
}
int main()
{
int i,j,n=0,flag=0;
while(gets(s)!=NULL)
{
j=0;
for(i=0;s[i]!='\0';i++) //将单词分割存放到a数组中
{
if(s[i]!=' ')
{
if(flag==0) //单词开始
{
flag=1;
n++; //单词数量
a[n][j]=s[i];
j++;
}
else
{
a[n][j]=s[i];
j++;
}
}
else
{
flag=0;
j=0;
}
}
cmpsort(n);
for(i=1;i<=n;i++)
{
if(strcmp(a[i],a[i-1])==0)
continue;
printf("%s\n",a[i]);
}
}
return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1185
标签:信息学,输出,++,1185,单词,int,flag,strcpy,奥赛 来源: https://blog.csdn.net/lvcheng0309/article/details/117637807