《程序设计基础-c语言》杨莉 刘鸿翔
ISBN-978-7-03-032903-5
p113
习题4
7.统计一个字符串中单词的个数。字符串中两个空格之间的非空格字符串可看做单词。
#include<stdio.h>
#include<string.h>
#define MAX 99
int main(void)
{
char str[MAX];
int i,num,cnt=1;
puts("输入字符串:\n");
gets(str);
num=strlen(str);
for(i=0;i<num;i++)
{
if(str[i]==' ')
{
cnt++;
}
}
if(num==0) //用来判断不输入字符串的情况
{
printf("单词个数为 0 ");
}
else
{
printf("单词个数为 %d ",cnt);
}
}
【程序更新】2020/4/24
判断条件更改,解决输入多个空格时判断出错的问题
原程序以“空格”为判断条件,更改为“空格|字母”
/*
思想:字符串中的“字母空格”
例如
空格sdd空格fd空格d空格
匹配到【空格s】【空格d】【空格d】
输出3个单词
*/
#include<stdio.h>
#include<string.h>
int main(void)
{
char s[80],c1,c2=' ';
int i=0,num=0;
puts("输入字符串:\n");
gets(s);
while(s[i]!='\0')
{
c1=s[i];
if(i==0) //数组第一位,c2赋值为“空格”
//下面直接判断c1是否为空格,为空格num+1,否则num=0;
{
c2=' ';
}
else //i>=1开始,赋值给下面的if判断【空格字母】
{
c2=s[i-1];
}
if(c1!=' '&&c2==' ') //c1符合“不为空格”,c2符合“空格”
{
num++;
}
i++;
}
printf("单词个数为:%d\n",num);
}