输入一行字符,统计其中单词的个数,单词之间用空格间隔。

#include<stdio.h>
#define IN 1
#define OUT 0
int main()
{
	char string[80], c;
	int i, num = 0, word = OUT; //用 num 来统计单词个数。 用 word 来判断是单词还是空格 
	gets(string);
	for (i = 0; (c = string[i]) != '\0'; i++)  // 字符数组以 '\0' 结束 
	    if(' ' == c)              //判断 c 是否为空格
		  word = OUT;     //使得连续的若干个空格也只看作一次空格,一行开头的空格不统计 
		else 
		  if(OUT == word) //保证了前一个字符必须是空格,且当前字符不是空格,num才会 +1 
		  {
		  	word = IN;
		  	num++;
		   } 
	printf("There are %d words in the line.\n", num);
	
	return 0;
 } 

下面进入编程学习:

(1)scanf 函数和 gets 函数的区别
格式:scanf("%s", 字符串数组);
功能:从键盘输入一以空格或回车结束的字符串放入字符数组中,并自动加 ‘\0’
例子:
char str[80]
scanf("%s", str);
当输入 hello world 时,str 将是 “hello”

格式:gets(字符数组);
功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加 ‘\0’
例子:
char str[80]
gets(str);
当输入 hello world 时,str 将是 “hello world”

(2)for (i = 0; (c = string[i]) != ‘\0’; i++)
注意:字符串是一种以 ‘\0’ 结尾的字符数组

(3)

       if(' ' == c)       //判断 c 是否为空格
		  word = OUT;     //使得连续的若干个空格也只看作一次空格,一行开头的空格不统计 
	   else 
		  if(OUT == word) //保证了前一个字符必须是空格,且当前字符不是空格,单词数量 num 才会 +1 
		  {
		  	word = IN;
		  	num++;
		   } 

这一个 else 中的 if语句用的很精妙,多读几遍,学习一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值