解题思路:
number:记录当前出现的单词个数。
word:记录当前是否出现了新单词;若是,则word置1,否则word置0。
逐一检查每一个字符:
(1)若为空格,则未出现新单词,number不变,word置0;
(2)若不为空格,检查它的前一个字符:[1]若为空格,则出现新单词,number加1,word置1。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2]若不为空格,则未出现新单词,number不变。
前一个字符是否为空格,可以根据word的值判断,若word为0,则表示前一个字符为空格;若word为1,则表示前一个字符不为空格。
代码:
#include<stdio.h>
#include<string.h>
int main() {
int i,number=0, word=0;
char str[100];
printf("请输入字符串:");
gets(str);
for (i = 0; str[i]!='\0'; i++) {
if (str[i] == ' ') //当前字符为' ',未出现新单词
word = 0;
else { //当前字符不为空格
if (word == 0) { //如果前一个字符为空格,则表示出现了新单词,number++,word置1
number++;
word = 1;
}
}
}
printf("该字符串中包含%d个单词\n", number);
return 0;
}