问题描述:
键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示)
算法思想
- 用一个字符数组str[ ]获取输入的整个字符串,用一个大小为26的整型数组alp[ ]用于存放统计数据
- 逐个扫描每个字符,在‘a’和‘z’之间或者在’A’和‘Z’之间,对应下标index的alp[index]自增
- 打印数组alp,逐个扫描数组中的每个元素,凡是为0的均跳过打印
完整代码如下
#include <stdio.h>
#include <stdlib.h>
#define N 50
void alp_print(int alp[]); //打印统计数字
void count_alphabet(char* str); //统计字母出现次数,字母不区分大小写
int main(void)
{
char str[N];
fgets(str, sizeof(str), stdin);
count_alphabet(str);
system("pause");
return 0;
}
void alp_print(int alp[])
{
printf("----------统计数据如下------------\n");
for (int i = 0; i < 26; i++)
{
if (!alp[i])
continue;
printf("%c出现的次数:%d\n", i + 97, alp[i]);
}
}
void count_alphabet(char* str)
{
int alp[26] = { 0 };
int i = 0, index;
while (str[i])
{
if (str[i] > 'a' && str[i] < 'z')
{
index = str[i] - 'a';
alp[index]++;
}
else if (str[i] > 'A' && str[i] < 'Z') {
index = str[i] - 'A';
alp[index]++;
}
i++;
}
alp_print(alp);
}