问题描述:
键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示)
算法思想
用一个字符数组str[ ]获取输入的整个字符串,用一个大小为26的整型数组alp[ ]用于存放统计数据逐个扫描每个字符,在‘a’和‘z’之间或者在’A’和‘Z’之间,对应下标index的alp[index]自增打印数组alp,逐个扫描数组中的每个元素,凡是为0的均跳过打印完整代码如下
#include <stdio.h>#include <stdlib.h>#define N 50void 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);}
案例运行效果
28.【C语言】键盘输入一句英文 统计句子中每个字母出现的次数(不区分大小写 一律按小写显示)(Demo)