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

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

可以采取这样的方法:从策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;
 } 

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值