输入一段英文统计各个字母个数

用c语言咋写??求解😭我是真的想不出来,想了一晚上了

如果不区分大小写是

#include <stdio.h>
#include <string.h>
int main()
{
    int i;
    int a[26]={0}; // 计数
    char c;
    while ((c=getchar())!='\n' && c!=EOF)
    {
        if ((c >= 'A') && (c <= 'Z')) {
            a[c-'A']++;
        }
        else if ((c >= 'a') && (c <= 'z')) {
            a[c-'a']++;
        }
    }
    for(i=0;i<26;i++)
        if(a[i]>0)
            printf("%c:%d\n",i+'A',a[i]);
    return 0;
}

img

如有帮助,望采纳!谢谢!

区分大小写就有52个计数值,不区分就是26个计数值,循环遍历整段文字检查每一个字节,按ASCII标准 循环字节 - A >= 0 并 < 26 时为大写 A到Z, 循环字节 -a >= 0 并 < 26时为小时为小写的a到z

char strTest = "abcdef, a, addea 123123"; //测试的字符串
int count[52]; //计数器
memset (count, 0 , 52); //清零
for (int i = 0 ; i < strlen (strTest); i++) {
     int offset = strTest[i] - 'a';
     if (offset >= 0 && offset < 26)
        count[offset] ++;       
    offset = strTest[i] - 'A';
    if ( offset > 0 && offfset < 26) 
        count[offfet+26] ++;
}
// count[0] 是a出现的次数...依次类推


注意,只对纯英文有效,如果是里面有中文或是其它语言,就保不准了。

对了我刚学到数组,能用我现在学到的内容写吗