题目描述:
输入一行字符,统计其中包括多少单词,单词之间用空格分隔。 输入输出格式要求: 输入格式:a b c d回车(空格可在任意位置,列如行头行尾可能会有空格。另外数字和字母一样,也可作为单词) 输出格式:单词数 输入的字符串长度最长为256个字符 例如: 输入:(空格)a a 112 c(空格)回车 输出:4
参考代码:
#include<stdio.h>
int main(){
char s[300];
int N=0,num=0;
s[0]=32;
do
{
N++;
s[N]=getchar();
if(s[N-1]==32&&s[N]!=32&&s[N]!=10) num++;
}while(s[N]!=10);
printf("%d",num);
return 0;
}
讲解:
本题目在判断单词的时候应该找准条件:一个单词,必与空格相邻。那么在判断的时候问题又来了:应该检测一个单词前面的空格好还是检测断单词后面的空格好呢?emmm,其实都可以。这里我选择的是检测单词前面的空格,这样可以边输入,边对单词进行计数。但如果输入的第一个字符就是字母,那岂不是检测不到第一个单词了?所以在第5行我做了一个巧妙的处理,将s[0]初始赋为空格,然后从s[1]开始输入单词,这样就可以检测到第一个单词了。
如果想要检测单词后面的空格,那么可以先输入字符串,再在字符串的最后加一个空格,再用循环检测一遍就好啦。
求实求真,大气大为。