其他分享
首页 > 其他分享> > 信息学奥赛一本通(1185:单词排序)

信息学奥赛一本通(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