本题目要求用C语言编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。输入格式: 输入给出一行字符。输出格式: 在一行中输出单词个数。
时间: 2024-11-20 16:40:11 浏览: 30
要编写一个C语言程序来统计一行字符中的单词个数,你可以遵循以下步骤:
1. 定义一个计数变量`word_count`初始化为0,用于存储单词的数量。
2. 创建一个指针`current_word`指向当前处理的单词开始位置,并设置为0(表示从第一个字符开始)。
3. 遍历输入的字符串,对于每个字符:
a. 如果遇到空格或字符结束(例如,是字符串结束符'\0'),这意味着找到了一个完整的单词:
- 检查`current_word`是否已经移动过(即是否非零),如果是,则说明找到一个单词,将`word_count`加一。
- 将`current_word`置回下一个字符的位置,以便开始处理下一个单词。
b. 如果不是空格,继续处理下一个字符,更新`current_word`。
4. 循环结束后,检查最后一个单词是否已处理(即`current_word`是否为0),如果不是,也需要将`word_count`加一。
以下是示例C代码实现这个功能:
```c
#include <stdio.h>
#include <string.h>
int count_words(const char* line) {
int word_count = 0;
const char* current_word = line;
while (*current_word != '\0') {
// 检查非空格字符
if (*current_word != ' ') {
// 跳过非空格部分,直到遇到空格或字符串结束
while (*++current_word != ' ' && *current_word != '\0');
}
// 如果到达了字符串结束,跳过检查
if (*current_word == '\0')
break;
// 找到一个单词,增加计数
++word_count;
}
// 最后一个单词也计算在内
if (current_word != line)
++word_count;
return word_count;
}
int main() {
char input[100];
printf("请输入一行字符: ");
fgets(input, sizeof(input), stdin);
// 删除末尾换行符
input[strcspn(input, "\n")] = '\0';
int result = count_words(input);
printf("单词个数: %d\n", result);
return 0;
}
```
阅读全文