问题描述
从键盘输入一串字符,仅有字符串和空格,统计字符串中单词的个数
标准输入:
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;
}