每日一练

目录

1178:题目描述

                统计一篇文章里不同单词的总数。

答案:


1178:题目描述

统计一篇文章里不同单词的总数。

输入

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

输出

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

答案:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
	int i,j,k,a,b;
	char s[10000],w[100][100];  // 一维数组接受整句话,二维数组把单词分开
	while(gets(s))
	{
		if(s[0]=='#')			//当接受为‘#’时结束
			break;
		a=0,b=0,k=0;
		for(i=0; s[i]!='\0';)//将s中的字符存到二位数组中,空格不存 
			if(s[i]==' ')//跳过起始空格 
				i++;
			else
			{
				while(s[i]!='\0'&&s[i]!=' ')//跳过结束的/0,后面有空格时结束存储 
					w[a][b++]=s[i++];
				a++;
				b=0;//按单词存 w[0]为第一个单词,w[1]为第二个单词 
			}
		int flag=0;
		for(i=0; i<a; i++)//记录非重复单词,a代表单词个数 
		{
			flag=0;
			for(j=0; j<i; j++)//w[i]代表第二个往后,w[j]从0到i-1,分别比较 
				if(strcmp(w[i],w[j])==0)
					flag++;
			if(flag==0)
				k++;
		}
		printf("%d\n",k);
		memset(s,'\0',sizeof(s));  //这里清空两个字符数组,从而不影响下次循环使用。
		memset(w,'\0',sizeof(w));
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值