习题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。(突然感觉自己这样子好蠢,自己骗自己)
提交了发现除了最经典的例子剩下都没有过,然后看了下其他的数据,发现自己太单纯了。
最后想到了这个办法,非常好!我觉得这个思路真的灰常棒。