题目描述
统计一篇文章里不同单词的总数。
输入
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
输出
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
样例输入
you are my friend #
样例输出
4
问题分析
将其中每一个单词取出存到另一二维字符数组中,然后取出字符串数组的第一个与其之前的每一个字符串比较,如果没有相同的字符串则说明这一单词是新出现的,num++;
代码实现
#include<stdio.h>
#include<string.h>
int main(){
char s[10000];
char c[1000][10];
while(gets(s),strcmp(s,"#")!=0){//遇到#退出循环
int i=0,j=0;
int cnum=0;
int num=0,flag=1;
while(s[i]!='\0'){
if(s[i]==' '){
i++;
}else{
for(j=0;s[i]!=' '&&s[i]!='\0';j++,i++){//将单词取出存进c[num]中
c[cnum][j]=s[i];
}
c[cnum][j]='\0';
cnum++;
}
}
for(int i=0;i<cnum;i++){//让下标为i的单词与其前面每一个比较如果都不相等,则让num++
flag=1;
for(int j=0;j<i;j++){
if(strcmp(c[i],c[j])==0){//判断相等与否相等则让flag=0;
flag=0;
break;
}
}
if(flag==1){//flag=1说明没有相等的c[i]所储存的单词第一次出现
num++;
}
}
printf("%d\n",num);//输出num的值
}
return 0;
}
提交结果: