C语言统计不同单词个数编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“onelittletwolittlethreelittleboys”,总共有5个不同的单词:one,little,t
编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, three, boys。
说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子;(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开;(3)不用考虑单词的大小写,假设输入的都是小写字符;(4)句子长度不超过100个字符。
输入格式:输入只有一行,即一个英文句子。
输出格式:输出只有一行,是一个整数,表示句子中不同单词的个数。
输入样例:
one little two little three little boys
输出样例:
5
#include<stdio.h>
#include<string.h>
int is_same(char*str,char*s)
{
char*p;
char str2[100];
int flag=0;
strcpy(str2,s);//将内容复制到另一个数组中
p=strtok(str2," ");//目的是为了避免strtok函数对原来字符串的破坏!
while(p!=NULL)
{
if(strcmp(p,str)==0)//比较是否相同!
{
flag=1;
break;
}
p=strtok(NULL," ");
}
if(flag==0)
return 0;
else
return 1;
}
int getcount(char*s)
{
int i=0,j=0,length=0;
char str[20],str1[100];//将前一个单词储存起来,以便与后面的单词比较看是否一样
int word_count=0;//统计单词个数
int k=0;//每个单词的字符数量!
while(s[i])
{
if(s[i]!=' ')
{
if(word_count==0)
word_count++;
j=i;
for(k=0;k<i;k++)
str1[k]=s[k];
str1[k]='\0';
while((s[j]!=' ')&&(s[j]!='\0'))
{
str[length]=s[j];
j++;
length++;
}
str[length]='\0';
if((word_count!=0)&&(!is_same(str,str1)))
{
word_count++;
}
i+=length;
}
else
i++;
length=0;
}
return (word_count-1);//减去第一次统计重复的
}
int main(void)
{
char str[100];
int count=0;
printf("input a string :");
gets(str);
count=getcount(str);
printf("不同单词的数量:%d\n",count);
return 0;
}
测不准原理对单个粒子单次试验不成立吗?昨天导师在给我们上课时给我们说测不准原理对单个粒子单次实验不 2020-04-25 …
在自然界中有很多元素都存在着同位素现象,如氢元素有三种核素:H,D,T,氧元素有三种核素:16O, 2020-06-11 …
在验证光的波粒二象性的实验中,下列说法正确的是()A.使光子一个一个地通过单缝,如果时间足够长,底 2020-07-07 …
下列说法中正确的是()A.物体吸收热量,同时对外做功,其内能可能增加B.当两分子间距离大于平衡位置 2020-07-20 …
RT……还有不是同一种原子构成的分子叫什么?由单个原子构成的分子叫什么?能举个例子么(一个原子的分 2020-07-22 …
对下列各单质晶体类型的分析,正确的是[]A.氩原子不跟别的原子成键,由单个原子聚集成晶体,因此属子 2020-07-29 …
甲:红3红4黑4米5黑5红6黑6方7米7红9方9红Q方Q黑Q方Y黑Y米Y红2乙:红A方A红10方10 2020-11-03 …
近日,奥地利维也纳理工大学的一个科学家团队成功在两个单光子之间建立起强大的相互作用,据科学家介绍:两 2020-11-25 …
文人请进,请帮我写组排比句,我急用,谢谢了请以“感恩”为内容写三句话。要求每句话都使用比喻,并使三句 2020-11-26 …
总体积除以单个体积是什么?原子总体积能不能除以单个原子的体积然后会不会得出的就是个数.我错了原子紧密 2020-12-29 …