计算文章中单词个数

Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。

Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

Sample Input
you are my friend #

Sample Output
4
思路:
将输入字符串重新按照单词组合并保存下来,即a[i][j]中 i表示每个单词,j表示单词内字母然后在新数组中筛出重复单词,记录不重复单词数。
代码:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
	char s[1000];
	while(strcmp(gets(s),"#")!=0)//连续输入字符且不为#时
	{
		char a[1000][1000];//每个单词分别保存
		int i=0,j=0,l=0;//初始化,i表示每个单词,j表示单词内字母
		while(l<strlen(s)) //或者s[l]!='\0'
		{
			if(s[l]==' ')//遇到空格则跳到下一个字符
			  l++;
			else
			{
				while(s[l]!=' '&&s[l]!='\0')//遇到空格或\0均结束
				{
				a[i][j]=s[l];//保存该字符
				j++;
				l++;
				}
				a[i][j] = '\0';  //字符串以\0结尾,防止下面读取出错 
				i++;//存完一个单词
				j=0;//单词字母清0	
			} 				
		}
		int m,n,f,count=0;
        for(m=0; m<i; m++){
			f= 0;
			for(n=m+1; n<i; n++){
				if(strcmp(a[m],a[n])==0){
					f = 1;
				}数组内每个单词与后一个比较,若相同则标记出来
			}
			if(f==0){
				count++;//没有重复则单词数加一 
			}
		}
		printf("%d\n",count);		
	}
	return 0;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值