习题6-8 统计一行文本的单词个数 (15分)
题目描述
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let’s go to room 209.
输出样例:
5
【注意】
1、字符数组都是以【\0】来结尾的。strlen( )以【\0】为结束
例如:
char str[] = 'I\t\r\\\0 will\n';
strlen(str) = 4 //【"I", "\t", "\r", "\\转义成一个\" 。见到"\0"就终止了,只计算\0前面的】
2、各个单词之间用空格分开,说明一个单词的末尾必然是 ‘空格’ 或者 ‘\0’,而且要注意有连续的空格存在。
【答案】
#include<stdio.h>
#include<string.h>
int main() {
char str[1000];
int n, cnt = 0;
gets(str);
n = strlen(str);
for (int i = 0; i < n; i++) {
if (str[i] != ' ' && (str[i + 1] == ' ' || str[i + 1] == '\0')) {
// 如果str[i]是单词里的字母,则不能为空;
// 上面的条件都满足的话,才算一个单词
cnt++;
}
}
printf("%d", cnt);
return 0;
}