编写一个程序,接收用户输入的字符串,然后分别计算其中英文字母的数量、数字的数量以及非字母和非数字字符(如空格、标点符号等)的总数,并将这些计数值输出。能否提供对应的代码实现或者算法步骤?
时间: 2024-11-27 10:16:27 浏览: 3
Java小程序 输入一个字符串,将每一个单词首字母大写
当然可以。要编写这样的程序,你可以使用C语言中的`ctype.h`库,这个库提供了处理字符类别(例如字母、数字、空白符等)的函数。以下是一个简单的C语言代码实现,包含了算法步骤:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
char input[100]; // 假设最大输入长度为100个字符
int alpha_count = 0, digit_count = 0, non_alpha_digit_count = 0;
printf("Enter a string: ");
fgets(input, sizeof(input), stdin); // 接收用户输入
for (int i = 0; i < strlen(input); i++) { // 遍历输入的每一个字符
if (isalpha(input[i])) { // 判断是否为字母
alpha_count++;
} else if (isdigit(input[i])) { // 判断是否为数字
digit_count++;
} else { // 其他非字母和数字字符
non_alpha_digit_count++;
}
}
printf("Number of letters: %d\n", alpha_count);
printf("Number of digits: %d\n", digit_count);
printf("Number of non-alphanumeric characters: %d\n", non_alpha_digit_count);
return 0;
}
```
在这个程序中,我们首先定义了三个计数器变量,用来记录字母、数字和非字母/数字字符的数量。接着,使用`fgets()`获取用户输入的字符串,遍历每个字符并使用`isalpha()`检查是否为字母,用`isdigit()`检查是否为数字。如果不是,则增加非字母/数字计数。
最后,输出这三个计数结果。
阅读全文