统计字符串中单词的个数可以根据字符串中空格的数量判断。当然,不是每遇到一次空格就能计一次数的,有可能两个或者更多空格连在一起,为此需要设计计数判断的标准。
空格有三种情况会影响计数,第一种是出现在字符串的一开始,这时的单词很明显是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;
}
下面是运行结果: