解题思路:问题的关键是怎样确定“出现一个新单词了”。
可以采取这样的方法:从策1个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量num的值加1(用变量num统计单词数),最后得到的num的值就是单词总数。
判断是否出现新单词,可以由是否有空格出现来决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时使num(单词数)累加1。如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1。用变量word作为判别当前是否开始了一个新单词的标志,若word=0表示未出现新单词,如出现了新单词,就把word置成1。
前面一个字符是否为空格可以从 word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格
#include<stdio.h>
int main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string); //输入一个字符串给字符数组string
for(i=0;(c=string[i])!='\0';i++) //只要字符不是'\0'就继续执行循环
if(c==' ')word=0; //如果是空格字符,使word置0
else if(word==0) //如果不是空格字符且word原值为0
{
word=1; //使word置为1
num++; //num累加1,表示增加一个单词
}
printf("There are %d words in this line.\n",num); //输出单词数
return 0;
}
运行结果: