习题6-8 统计一行文本的单词个数

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.
 

输出样例:

5
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<math.h>
 5 int main() {
 6     int n = 0;                    //整个句子字数
 7     int words = 0;                        //单词个数
 8     char a[1000];
 9     gets(a);                    //读取整个句子
10     n = strlen(a);
11     for (int i = 0; i < n; i++) {
12         if (a[i] != ' ') {        //如果读到了字符
13             words++;            //单词数+1
14             for (;; i++) {              //进入小循环
15                 if (a[i] == ' ') {        //如果下一个字符是空格,说明这个单词结束了  
16                     break;          //跳出循环
17                 }
18             }
19         }
20     }
21     printf("%d", words);
22     return 0;
23 }

这个题目思路很重要。

我原来的思路是:把一行的文本保存到数组里面,如果读到空格了,计数器就+1,然后发现有问题,比如输入hello world!,只读到了1个空格,然而却有2个单词,于是就最后输出+1。(突然感觉自己这样子好蠢,自己骗自己)

提交了发现除了最经典的例子剩下都没有过,然后看了下其他的数据,发现自己太单纯了。

最后想到了这个办法,非常好!我觉得这个思路真的灰常棒。

 

posted @ 2020-10-21 23:26  沉梦昂志_doc  阅读(552)  评论(0编辑  收藏  举报