题目描述
Alice的记忆力不太好,如果一个句子中含的单词(每个单词之间用一个空格隔开)数量超过10,或者句子中字母种类(不区分大小写)超过10个,她就会记不住。现在给你若干个句子,请写个程序判断一下Alice是否能记住这些句子。
输入
存在多个样例。
每行输入一个字符串,表示句子。字符串长度不超过200,只含英文字母和空格。
输入数据保证每个单词之间只有一个空格,行末没有空格。
输出
对于每个样例,能记住,输出“Yes”,否则输出“No”。
样例输入
Alice is a smart girl but she is bad in memory a b c d e f g h i j A B C D E F G H I J K
样例输出
Yes No Yes No
易错点在输入不能用scanf()读取带空格的字符串的,用put();注意字符串中大小写均有加上判断根据前面判断字符串中是否所以的字母都出现(忽略大小写)的计数方法来记录出现字母种类数;再通过空格数目可计算单词数目;
#include<stdio.h>
#include<string.h>
int main()
{
char c[200];
while(gets(c))//不能用scanf()读取字符串时遇见空格结束
{
int sort = 0,count = 0;
int w[26] = {0};
int length = strlen(c);
// printf("%d\n",length);
for(int i = 0;i<length;i++)
{
if(c[i]==' ')
count++;
if(c[i]>='a')
{
if(w[c[i]-'a']==0)
{
sort++;
w[c[i]-'a'] = 1;
}
}
else if(w[c[i]-'A']==0)
{
sort++;
w[c[i]-'A'] = 1;
}
}
// printf("%d %d\n",count,sort);
if((count<10)&&(sort<=10))
printf("Yes\n");
else
printf("No\n");
}
}