1178: 单词数
题目描述
统计一篇文章里不同单词的总数。
输入
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由大小写字母和空格组成,没有标点符号,遇到#时表示输入结束。每篇文章的单词数小于1000,每个单词最多由30个字母组成。
输出
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
样例输入 Copy
you are my friend
样例输出 Copy
4
来源/分类
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100
int main(){
char s[30000];
char *p[1000];
while(gets(s),strcmp(s,"#")!=0){
int j=0;//统计单词的个数
int k=0;//每个单词的字符
int count=0;//不重复的单词个数
for(int i=0;i<strlen(s);i++){
if(s[i]!=' '){
k=0;
p[j]=(char *)malloc(sizeof(char)*30);
for(i;s[i]!=' '&&i<strlen(s);i++){
p[j][k++]=s[i];
}
p[j][k]='\0';
j++;
}
}
//第i个单词的后面没有与它相同的就+1,结果需要再+最后一个单词
int f=1;//表示某一单词的后面没有与之重复的
for(int i=0;i<j-1;i++){
for(int k=i+1;k<j;k++){
f=1;
if(strcmp(p[i],p[k])==0){
f=0;
break;
}
}
if(f==1) count++;
}
printf("%d\n",count+1);
}
return 0;
}