输入一行字符,统计其中有多少个单词,单词之间用空格隔开,c语言编程
时间: 2023-08-22 21:03:30 浏览: 122
可以使用C语言的字符串处理函数和循环结构来实现。具体步骤如下:
1. 定义一个字符串变量,用于存储输入的一行字符。
2. 使用C语言的gets函数读取一行字符。
3. 定义一个计数器变量,用于统计单词个数,初值为0。
4. 使用C语言的循环结构遍历输入的字符串,逐个字符判断:
- 如果当前字符是空格,表示一个单词结束,计数器加1。
- 如果当前字符是字符串末尾的'\0',表示最后一个单词结束,计数器加1。
5. 输出统计结果。
下面是代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int count = 0;
printf("请输入一行字符:");
gets(str);
for (int i = 0; i < strlen(str); i++) {
if (str[i] == ' ') {
count++;
} else if (str[i] == '\0') {
count++;
}
}
printf("单词个数为:%d\n", count);
return 0;
}
```
注意:上述代码中使用了C语言的gets函数读取一行字符,但是gets函数不安全,容易导致缓冲区溢出。实际应用中应该使用更安全的函数,如fgets函数。
相关问题
c语言编程 统计一行字符串中单词的个数(不超过80字符)。规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[80];
int i, count = 1; // 初始化为1,因为一行的开始没有空格
printf("请输入一行字符串(不超过80字符):");
gets(str);
for (i = 0; i < strlen(str); i++) {
if (str[i] == ' ') {
count++; // 遇到空格,单词数加一
}
}
printf("单词数为:%d\n", count);
return 0;
}
```
这个程序中,我们使用 gets() 函数从键盘输入一行字符串,然后用一个循环遍历字符串中的每个字符。如果遇到一个空格,就说明前面的部分是一个单词,将单词数 count 加一。最后输出单词数。注意,我们在循环外面将 count 初始化为 1,因为一行的开始没有空格,是一个单词。
编程一段C语言代码,统计输入的一行中的大写字母,小写字母,数字的个数,以及单词的个数,单词间以空格隔开
当然可以。这是一个简单的C语言程序,用于统计字符串中大写字母、小写字母、数字和单词的数量。我们将使用`ctype.h`库来进行字符分类,并假设输入字符串不包含标点符号和其他特殊字符。
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
char input[100];
fgets(input, sizeof(input), stdin); // 输入一行
int uppercase = 0, lowercase = 0, digits = 0, words = 0;
for (int i = 0; input[i] != '\0'; i++) {
if (isupper(input[i])) { // 判断是否为大写字母
uppercase++;
} else if (islower(input[i])) { // 判断是否为小写字母
lowercase++;
} else if (isdigit(input[i])) { // 判断是否为数字
digits++;
}
// 检查非字母数字字符作为单词分界
if (!ispunct(input[i]) && !isspace(input[i]) && i > 0 && isspace(input[i - 1])) {
words++; // 当前字符是新单词的开始
}
}
printf("大写字母: %d\n", uppercase);
printf("小写字母: %d\n", lowercase);
printf("数字: %d\n", digits);
printf("单词: %d\n", words);
return 0;
}
```
阅读全文