c语言数组输入一行字符,统计其中有多少单词,单词之间用空格分开。
时间: 2023-12-26 13:23:30 浏览: 59
可以通过循环遍历输入的字符数组,遇到空格时就认为一个单词结束,累加单词数即可。下面是示例代码:
```c
#include <stdio.h>
int main() {
char str[100];
int count = 0, i;
printf("请输入一行字符:\n");
fgets(str, sizeof(str), stdin); // 读入一行字符
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == ' ') { // 遇到空格,认为一个单词结束
count++;
}
}
count++; // 最后一个单词后没有空格,需要额外计数
printf("单词数为:%d\n", count);
return 0;
}
```
需要注意的是,最后一个单词后没有空格,需要额外计数。另外,上述代码只能处理单个空格作为单词分隔符的情况,如果输入中包含多个连续空格或其他标点符号,需要进行特殊处理。
相关问题
C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分开
要统计一行字符中的单词数量,可以使用以下 C 语言代码实现:
```c
#include <stdio.h>
int main() {
char line[1000];
int wordCount = 0;
int i;
printf("请输入一行字符:");
fgets(line, sizeof(line), stdin);
// 遍历字符数组,统计单词数量
for (i = 0; line[i] != '\0'; i++) {
// 如果当前字符是空格且上一个字符不是空格,则认为是一个单词的结束
if (line[i] == ' ' && line[i - 1] != ' ') {
wordCount++;
}
}
// 最后一个单词后可能没有空格,需要额外判断
if (line[i - 1] != ' ') {
wordCount++;
}
printf("单词数量:%d\n", wordCount);
return 0;
}
```
这段代码中使用了一个字符数组 `line` 来存储输入的一行字符,最大长度为 1000。然后使用 `fgets()` 函数从标准输入中读取一行字符。接下来,通过遍历字符数组,统计空格的出现次数来计算单词数量。最后一个单词后可能没有空格,因此需要额外判断。最终,通过输出变量 `wordCount` 的值来得到统计结果。
C语言用数组实现输入一行英文句子,统计其中有多少个单词,单词之间用空格分开,单独的数值不计入单词数。
可以按照以下步骤实现:
1. 定义一个字符串数组 `str` 来存放输入的英文句子。
2. 通过 `fgets()` 函数从标准输入中读取一行英文句子,存放到 `str` 中。
3. 定义一个变量 `count` 来记录单词数,初始值为 0。
4. 遍历 `str` 中的每个字符,如果当前字符是空格,则说明前面是一个单词,将 `count` 加 1。需要注意的是,如果前面的字符是数字或者标点符号,也不能算作单词。
5. 输出统计结果,即单词数。
下面是具体的代码实现:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[1000];
printf("请输入一行英文句子:");
fgets(str, 1000, stdin);
int i, count = 0;
for (i = 0; str[i] != '\0'; i++) {
if (isspace(str[i])) { // 判断当前字符是否为空格
if (isalpha(str[i - 1])) { // 判断前一个字符是否是字母
count++;
}
}
}
if (isalpha(str[i - 2])) { // 如果最后一个字符是字母,则单词数加 1
count++;
}
printf("单词数为:%d\n", count);
return 0;
}
```
需要注意的是,在判断前一个字符是否是字母时,需要用到 `<ctype.h>` 头文件中的 `isalpha()` 函数,该函数用来判断一个字符是否是字母。同时,在遍历完整个字符串后,还需要判断最后一个字符是否是字母,如果是,则单词数也需要加 1。