2017吉首大学新生赛问题F:是你飘了,还是我拿不动刀了?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41550842/article/details/78928509
题目描述

Eternally给出长度在1000以内的英语文章,让你找出文章中的单词,按照英语的格式是每个单词是以空格分开的,但是呢,在这里不同,每个单词是以除大小写字母以外的字符来分开的。

例如Eternally#is#a#student中Eternally,is,a,student是单词。

(不必多想,Eternally输入的文章中的每个单词有可能在英语中不是单词)。

输入

输入包含多组输入,每行是一篇文章(文章,是没有空格的)。

输出

输出有特定的格式,输出单词时请按照单词在文章中的顺序输出单词。(如果同一个单词有多个,那么就只输出最先出现的那个),如果是Eternally开玩笑给的文章中没单词,那么输出NO.

样例输入
Eternally@is@a@student
样例输出
Case 1:
Eternally
is
a
student
题目分析:水题,数据看起来不大,直接暴力搜索,查询。
 
   
#include<bits/stdc++.h>
int main()
{
    char a[2005] ,b[1000][100] ,c[100];//读入字符串存入a字符串。
    int i , j ,cnt = 1 ,t ,k;
    while(~scanf("%s",a))
    {
        j = t = 0;
        printf("Case %d:\n",cnt++);
        for(i = 0;a[i]!= '\0';i++)
        {
            if((a[i] > 64 &&a[i] < 91)|| (a[i] > 96 &&a[i] < 123))//注意:只要不是英文字母,就是分隔符
                c[j++] = a[i];		//将每个单词存入c字符串
            else	//若遇到分隔符,则将前面存储在c字符串中的单词与单词库中的单词比较
            {
                c[j] = '\0';
                for(k = 0;k <= t;k++)
                {
                    if(!strcmp(c,b[k]))
                        break;
                }
                if(k > t)		//若单词库中没有该单词,则输出,并保存在单词库b中
                {
                    printf("%s\n",c);	
                    strcpy(b[++t],c);
                }
                j = 0;
            }
        }
        c[j] = '\0';
        for(k = 0;k <= t;k++)	//验证最以后一个存入c中的单词是否存在b单词库中
        {
            if(!strcmp(c,b[k]))
                break;
        }
        if(k > t)
            {printf("%s\n",c); t++;}
        if(!t)			//一个单词都没有,则输出NO
            printf("NO\n");
    }
    return 0;
}




 
   
 
   
 
  

猜你喜欢

转载自blog.csdn.net/qq_41550842/article/details/78928509
今日推荐