统计一个字符串中单词的个数(C语言)

统计字符串中单词的个数可以根据字符串中空格的数量判断。当然,不是每遇到一次空格就能计一次数的,有可能两个或者更多空格连在一起,为此需要设计计数判断的标准。

空格有三种情况会影响计数,第一种是出现在字符串的一开始,这时的单词很明显是0。第二种情况是出现在字符串中间,程序需要靠这种空格计数,但是如果两个或两个以上的空格连在一起,就只能计一次数。第三种就是空格在‘\0’前一位,这种也不需要计算进去。另外还有一个大问题,无法判断两个空格中间的字母连成的是不是一个词典内有的单词,也许只是一个字母,这个问题只是我觉得束手无策的事,也许还要导入词典,不过现阶段我是没办法完成这样的事。大笑

在这里我准备了3个程序,两个是需要依靠变量word标记的,剩下一个是根据空格的情况筛选的。

一、

#include<stdio.h>
int main()
{
int num = 0, word = 0, i = 0;     
char ch[80];     
gets(ch);     
while(ch[i] != '\0')     
{  
if(ch[i] == ' ')  
{      
word = 0;       
}  
else  
{     
if(word==0)     
{   
num++;   
word = 1;     
}     
else     
{      
word = 1;     
}  
}  
i++;     
}     
printf("%d\n",num);
return 0;
 } 

二、

#include<stdio.h> 
#include<stdlib.h> 
int main() 
{     
int num = 0, word = 0;     
char *p = NULL;     
p = (char *)malloc(sizeof(char)*100);     
gets(p);     
while(*p != '\0')     
{  
if(*p == ' ')  
{      
word = 0;       
}  
else  
{     
if(0 == word)     
{   
num++;   
word = 1;     
}     
else     
{      
word = 1;     
}  
}  
p++;     
}     
printf("%d\n",num);     
return 0; 
}

三、

#include<stdio.h>
int main()
{
char ch[100];
int i=0,num=0;
gets(ch);
char *p=ch;
while(*p!='\0')
{
if(*p!=' '&&*(p+1)==' ')
num++;
if(*p!=' '&&*(p+1)=='\0')
num++;
p++;
}
printf("%d\n",num);
return 0;
}

下面是运行结果:


  • 26
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值