前一个字符是否为空格,可以根据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; 运行结果: 分析题目,问题的关键是怎么确定“出现了一个新单词”。可以采取这样的方法: 从第一个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量mum的值加1(用变量mum统计单词数),最后得到的mum的值就是单词总数。 我编写的程序如下: 在程序运行时,出现了结果错误。 原因是:(1)scanf%s在输入空格或回车时会结束输入 (2)字符串的结束符号是'\0' (3)if判断语句要用双等号 解决办法是: 将输入换成gets,gets只有在输入回车时才会结束输入。