用C语言实现:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。(10分)
时间: 2023-12-26 13:57:36 浏览: 79
您好,感谢您的提问!以下是关于C语言统计单词数量的代码,希望能够帮到您:
```
#include <stdio.h>
int main()
{
char str[100];
int i, cnt = 1;
printf("请输入一行字符:");
gets(str);
for(i = 0; str[i] != '\0'; i++)
{
if(str[i] == ' ')
{
cnt++;
}
}
printf("这行字符中有 %d 个单词。", cnt);
return 0;
}
```
代码思路是先定义一个字符数组,然后使用 `gets()` 函数读取控制台输入的一行字符。接着使用 `for` 循环遍历整个字符串,当遇到空格时,将计数器 `cnt` 加 1。最后输出单词数量即可。
希望这个解答能够对您有所帮助!若有其他问题,请随时提出。
相关问题
用c语言编写:输入一行字符,统计其中包括多少单词,单词之间用一个或多个空格分隔
在C语言中,我们可以使用标准库函数来统计输入的一行字符中包含的单词数。下面是一个简单的示例程序,它首先读取一行输入,然后分割成单词并计算单词的数量:
```c
#include <stdio.h>
#include <ctype.h> // 包含用于处理字符类型的头文件
int count_words(char str[]) {
int word_count = 0;
int start_word = 0; // 用于跟踪当前单词的开始位置
for (int i = 0; str[i] != '\0'; i++) { // 遍历字符串直到遇到结束符
if (isspace(str[i])) { // 如果字符是空格
if (i > start_word) { // 如果这之前有非空格字符,则计数加一
word_count++;
}
start_word = i + 1; // 更新起始位置到下一个单词
} else { // 非空格字符
start_word = i; // 如果遇到非空格,更新起始位置
}
}
// 别忘了检查最后一个单词
if (str[i] == '\0' && i > start_word) {
word_count++; // 如果字符串结尾是空格后的单词,也计入
}
return word_count;
}
int main() {
char input[100]; // 定义足够大的数组来存储一行字符
printf("请输入一行字符(以空格分隔单词): ");
fgets(input, sizeof(input), stdin); // 从标准输入获取一行字符
input[strcspn(input, "\n")] = '\0'; // 移除换行符
int word_count = count_words(input);
printf("输入的字符串中有 %d 个单词。\n", word_count);
return 0;
}
```
c语言编译.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
以下是两种C语言编译的例子,用于输入一行字符并统计其中有多少个单词,单词之间用空格分隔开:
1. 使用gets()函数和循环遍历字符数组的方法:
```c
#include<stdio.h>
int main() {
char string[81];
int i, num = 0, word = 0;
char c;
gets(string);
for (i = 0; (c = string[i]) != '\0'; i++) {
if (c == ' ')
word = 0;
else if (word == 0) {
word = 1;
num++;
}
}
printf("这个字符串有%d个单词\n", num);
return 0;
}
```
2. 使用循环遍历字符数组的方法:
```c
#include<stdio.h>
int main() {
char string[100];
gets(string);
int word, num = 0;
int i;
for (i = 0; i < 100; i++) {
if (string[i] == ' ')
word = 0;
else if (string[i - 1] == ' ') {
num++;
word = 1;
}
else
word = 1;
}
printf("%d", num);
return 0;
}
```
阅读全文