输入一行字符(第一个字符有可能是空格),用函数编程统计其中有多少单词。假设单词之间以空格分开。要求如下: (1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符 调用CountWords函数,并统计字符串中的单词个数。 (2)在子函数CountWords中统计字符串中的单词个数。函数原型为: int CountWords(char str[]); (3)**输入提示信息:"Input a string:" **输出提示信息和格式:"Numbers of words = %d\n" **用gets()输入字符串 注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。
时间: 2024-03-03 19:49:45 浏览: 86
统计输入字符串中的单词个数
下面是统计单词个数的 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int CountWords(char str[])
{
int count = 0, i, len;
len = strlen(str);
for (i = 0; i < len; i++) {
if (str[i] != ' ' && (i == 0 || str[i - 1] == ' ')) {
count++;
}
}
return count;
}
int main()
{
char str[81];
printf("Input a string: ");
gets(str);
printf("Numbers of words = %d\n", CountWords(str));
return 0;
}
```
解释一下代码:
- `int CountWords(char str[])` 是统计单词个数的函数。使用一个计数器 count,初始值为 0,逐个扫描字符串中的字符。如果当前字符不是空格且前一个字符是空格或者当前字符是第一个字符,则认为是一个新单词,计数器加 1。
- `char str[81]` 声明了一个字符串变量,最大长度为 80,因为还要留一个字符存储字符串末尾的空字符。
- `printf("Input a string: ");` 输出提示信息,让用户输入字符串。
- `gets(str);` 从键盘输入字符串,注意不要使用 `scanf` 函数,因为它会在空格处停止读取。
- `printf("Numbers of words = %d\n", CountWords(str));` 输出统计结果,注意换行符要放在双引号外面。
需要注意的是,由于 gets 函数有缺陷,容易导致缓冲区溢出,所以建议使用 fgets 函数代替,更加安全。
阅读全文