输入一行字符,统计其中的单词个数(标志变量法和数组跳过法)

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

#include<stdio.h>
int main()
{
	//输入一行字符,统计其中有多少个单词,单词之间用空格符分隔开
	char c;
	int word=0,lastchar=1;
	printf("请输入一行字符:");
	while((c=getchar())!='\n')
	{
		if(c==' ')
		{
			lastchar=1;	
		}
		else
		{
			if(lastchar)
			{
				word++;
				lastchar=0;
			}
		}
	}
	printf("该字符中共有%d个单词!\n",word);
	return 0;
}

        使用getchar进行输入,需要设置标志变量lastchar,表示上一次判断的字符类型是空格还是字符,0表示1表示空格,0表示字符,所以初始就要将lastchar设置为1,因为空格的数量会比单词的个数少一个。只有遇到了空格,且其后面出现非空格我们才统计单词的个数+1。

#include<stdio.h>
int main()
{
	//使用字符数组来输入字符串
	char str[81];
	int i=0,word=0;
	printf("请输入一行字符:");
	gets(str);
	while(str[i]!='\0')
	{
		if(str[i]==' ')
		{
			for(i++;str[i]==' ';i++);
		}	
		else
		{
			word++;
			for(i++;str[i]!=' '&&str[i]!='\0';i++); 
		}
	} 
	printf("该行字符共有%d个单词!\n",word);
	return 0;
}

        此外另一种方法则是使用数组来处理字符串,通过循环跳过连续的若干个空格来控制字符串的处理,for(i++;str[i]!=' '&&str[i]!='\0';i++);中的判断条件是在初始值i++的基础上进行判断其后一个是不是'\0',是'\0'的话就会结束for循环,这时的'\0'再次由while循环进行判断,结束while循环,最后才进行输出。

猜你喜欢

转载自blog.csdn.net/weixin_55848732/article/details/131983762