问题描述:
输入一串字符串,输出其中有多少个单词,例如:I am a boy,输出4
方法一:
解题思路:
1、创建一个字符类型的数组,将输入的字符保存在字符数组中,每次从字符数组中读取一个字节,判断其是否为空格,如果遇到空格,则表示其是一个单词;
2、创建两个变量,用num统计单词的个数,word标记单词是否为新单词的状态;
3、如果遇到空格,将word置成0,如果是一个单词,则word一直置成1;
代码实现:
#include<stdio.h>
void main()
{
char string[100];
char c;
int i=0, num = 0, word = 0; //word为0,即使开头就为空格,认为是新单词的开始
gets(string);
while ((c = string[i++])!='\0')
{
if (c == ' ') //为空格,就是代表新单词开始
{
word = 0;
}
else if (word == 0) //c既不等于空格又是新单词的开始
{
num++; //单词个数加1
word = 1; //word=1 就不是新单词
}
}
printf("%d\n", num);
}
运行结果:
方法二:
解题思路:
统计一个字符串空格的个数,然后加1;(不建议使用,不严谨,没考虑两个单词之间有多个空格)
代码实现:
#include<stdio.h>
void main()
{
char string[100];
char c;
int i = 0, num = 0;
gets(string);
while ((c = string[i++]) != '\0')
{
if (c == ' ')
{
num++;
}
}
num++;
printf("%d\n", num);
}
运行结果: