研究生复试上机编程练习12

问题描述

从键盘输入一串字符,仅有字符串和空格,统计字符串中单词的个数

标准输入

Hello world

标准输出

2

解题思路

题目并不难,但是需要考虑到一些极端情况的处理,我在运行结果给出了几种情况,包括以空格结尾,中间多个空格,以及只有空格的情况。

细节:用gets输入可以保存空格字符,用flag来标志单词的开始(上一个是空格 flag==0,当前是字符 flag==1,直至遇到下一个空格时才将flag置为0,期间cnt不变),单词的结束也就是flag=0,而只有当一开始遇到空格时才将计数器+1

解题代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
	int i,cnt=0,flag=0; //flag=0表示现在是空格,初始化为空格状态
	char str[100];
	gets(str); //gets可以接收空格字符
	//printf("%s",str);
	for(i = 0; i < strlen(str); i++){
		if(str[i] == ' '){ flag = 0; continue;}
		//没有continue表示是字符,也就是单词开始了
		if(flag == 0) cnt++; //这里表示前面是空格,新的单词开始了
		flag = 1; //表示单词在继续
	}
	printf("%d\n",cnt);
	return 0;
}

 

 

猜你喜欢

转载自blog.csdn.net/weixin_44572229/article/details/129565701
今日推荐