c语言 统计每个字母出现的次数
时间: 2024-10-19 08:07:47 浏览: 21
在C语言中统计每个字母出现的次数,可以使用字符数组、哈希表或者二维数组等数据结构来实现。这里是一个基本的示例,使用字符数组配合ASCII值来完成这个任务:
```c
#include <stdio.h>
#include <ctype.h>
#define ALPHABET_SIZE 26
void count_chars(char *str) {
int freq[ALPHABET_SIZE] = {0}; // 初始化一个大小为26的数组,记录每个字母频率
for (int i = 0; str[i]; i++) { // 遍历字符串中的每一个字符
char ch = tolower(str[i]); // 转换为小写字母,统一处理
if (isalpha(ch)) { // 检查是否为字母
freq[ch - 'a']++; // 增加对应字母的频率
}
}
for (int i = 0; i < ALPHABET_SIZE; i++) {
if (freq[i] > 0) { // 只显示非零的频率
printf("'%c': %d\n", 'a' + i, freq[i]);
}
}
}
int main() {
char input[] = "Hello, World!";
count_chars(input);
return 0;
}
相关问题
c语言统计每个字母出现的次数
C语言可以通过遍历字符串的方式统计每个字母出现的次数。首先,我们可以创建一个长度为26的数组来存储26个字母出现的次数,数组的索引与字母的ASCII码值相对应,这样可以直接通过字母的ASCII码值来确定数组的索引位置。然后,我们可以循环遍历字符串中的每一个字符,当字符是字母时,就可以将其转换为大写字母(或小写字母),然后减去相应的ASCII码值来确定其在数组中的索引位置,然后将对应的数组元素加1,表示该字母出现的次数加1。最后,我们可以遍历整个数组,输出每个字母及其出现的次数。
一个简单的C语言实现如下:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[100];
int count[26] = {0}; // 用来存储26个字母出现的次数,初始化为0
printf("请输入一个字符串: ");
gets(str);
for (int i = 0; i < strlen(str); i++) {
if (isalpha(str[i])) { // 如果是字母
char c = toupper(str[i]); // 转换为大写字母
int index = c - 'A'; // 计算数组索引位置
count[index]++; // 对应字母出现次数加1
}
}
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>
int main()
{
char str[100];
int i, freq[26] = {0};
printf("输入一个字符串:");
gets(str); // 获取用户输入的字符串
for(i = 0; str[i] != '\0'; i++)
{
if(str[i] >= 'a' && str[i] <= 'z') // 判断字符是否为小写字母
{
freq[str[i] - 'a']++;
}
}
printf("\n小写字母出现次数:\n");
for(i = 0; i < 26; i++)
{
if(freq[i] != 0)
{
printf("%c - %d\n", i + 'a', freq[i]);
}
}
return 0;
}
```
该代码中,我们使用了一个大小为26的数组 `freq` 来统计每个小写字母出现的次数。首先,我们获取用户输入的字符串,然后遍历该字符串,对于每个小写字母,我们在 `freq` 数组相应位置加 1。最后,我们遍历 `freq` 数组,输出每个小写字母出现的次数。
阅读全文