C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

解题思路:问题的关键是怎样确定“出现一个新单词了”。

可以采取这样的方法:从策1个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量num的值加1(用变量num统计单词数),最后得到的num的值就是单词总数。

判断是否出现新单词,可以由是否有空格出现来决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时使num(单词数)累加1。如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1。用变量word作为判别当前是否开始了一个新单词的标志,若word=0表示未出现新单词,如出现了新单词,就把word置成1。

前面一个字符是否为空格可以从 word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。_第1张图片

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。_第2张图片

#include
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;
 } 

运行结果:

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。_第3张图片

你可能感兴趣的:(c语言,开发语言)