用C语言统计英文字符串的字符分布,只统计字母,不区分大小写,忽略非英文字符
时间: 2024-02-14 19:14:50 浏览: 76
好的,下面是用C语言统计英文字符串的字符分布的代码,仅统计字母,不区分大小写,忽略非英文字符:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_LEN 1000
int main() {
char str[MAX_LEN];
int len, i, freq[26] = {0};
printf("请输入一个英文字符串: ");
fgets(str, MAX_LEN, stdin);
len = strlen(str);
for(i = 0; i < len; i++) {
if(isalpha(str[i])) {
freq[tolower(str[i]) - 'a']++;
}
}
printf("字符分布如下:\n");
for(i = 0; i < 26; i++) {
printf("%c: %d\n", 'a' + i, freq[i]);
}
return 0;
}
```
运行程序后,输入一个英文字符串,程序会统计其中字母的出现次数,然后输出字符分布情况。
相关问题
c语言统计英文字符串的自符分布,即统计该字符串中每个字符的数量,只统计英文字母,不区分大小写,忽略其他非字母字符。输出按照“字符:数量”显示,每行一个结果,字符按字母表生序排序
好的,以下是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[1000];
int count[26] = {0}; // 用数组记录每个英文字母出现的次数
printf("请输入一个英文字符串:");
fgets(str, sizeof(str), stdin);
for (int i = 0; i < strlen(str); i++) {
if (isalpha(str[i])) { // 如果是英文字母
count[toupper(str[i]) - 'A']++; // 统计该字母出现的次数
}
}
for (int i = 0; i < 26; i++) {
if (count[i] > 0) {
printf("%c:%d\n", 'A' + i, count[i]); // 按字母表顺序输出结果
}
}
return 0;
}
```
运行程序后,输入一个英文字符串,程序就会输出该字符串中每个英文字母出现的次数。输出结果按照字母表顺序排序。注意,程序忽略了字符串中的非字母字符。
C语言:统计英文字符串的字符分布,即统计该字符串中每个字符的数量,只统计英文字母,不区分大小写,忽略其他非字母字符。输出按照 “字符:数量” 显示,每行一个结果,字符按字母表升序排列。
好的,以下是一个简单的 C 语言程序,可以实现该功能:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
int count[26] = {0}; // 数组用于统计每个字母出现的次数
char str[100]; // 存储输入的字符串
int len, i, index;
printf("请输入一个英文字符串:\n");
fgets(str, sizeof(str), stdin);
len = strlen(str);
for (i = 0; i < len; i++) {
if (isalpha(str[i])) { // 判断是否为字母
index = tolower(str[i]) - 'a'; // 转换为小写字母后计算下标
count[index]++;
}
}
printf("字符分布如下:\n");
for (i = 0; i < 26; i++) {
if (count[i] > 0) {
printf("%c:%d\n", 'a' + i, count[i]);
}
}
return 0;
}
```
程序的思路是:先定义一个长度为 26 的整型数组 count,用于存储每个字母出现的次数。然后通过 fgets 函数获取用户输入的字符串,遍历字符串中的每个字符,判断是否为字母,如果是,则将其转换为小写字母,并计算出对应的数组下标,将对应元素加 1。最后遍历数组,输出结果。
注意:本程序只能处理字符串长度不超过 99 个字符的情况,如果需要处理更长的字符串,需要修改数组和输入函数的参数。
阅读全文