ʕ̢̣̣̣̣̩̩̩̩·͡˔·梦生 2022-02-20 23:00 采纳率: 83.3%
浏览 142
已结题

C语言统计大写字母个数,这个程序能不能给我超级的详细解析呀


#include"stdio.h"
main(void)
{
    int n[26],i;
    char ch;
    for(i=0;i<26;i++)
    n[i]=0;
    while((ch=getchar())!='\n')
    {
        if(ch>='A'&&ch<='Z')
        n[ch-65]+=1;
    }
    for(i=0;i<26;i++)
    if(n[i]!=0)
    printf("%c,%d\n",i+65,n[i]);
}
输入:AAAASSSDDDFFF
运行结果:
A,4
D,3
F,3
S,3
请按任意键继续. . .


  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-02-21 00:00
    关注

    供参考:

    #include"stdio.h"
    main(void)
    {
        int n[26],i;
        char ch;
        for(i=0;i<26;i++)//循环 n[0] -- n[25] 数组初始化值为 0
        n[i]=0;
        while((ch=getchar())!='\n')//循环读入一个字符赋值给 ch ,直到读入'\n'回车换行符时退出循环
        {
            if(ch>='A'&&ch<='Z')//对读入的字符进行判断,是否是大写的字母,判断区间 'A' --- 'Z'之间
            n[ch-65]+=1;//ch-65等价于 ch-'A',字符'A'的ascii值为65,类推'Z'的值为65+25=90
        }               //n[ch-65] 如果读入的ch='A',n['A'-65]=n[0],类推'Z'时,n['Z'-65]=n[25]
        for(i=0;i<26;i++)
        if(n[i]!=0)     //当n[i]的值不为0 时输出
        printf("%c,%d\n",i+65,n[i]);// i=0时,i+65=65='A',输出字符 A,n[0]的值
                                    // i=3时,i+65=68='D',输出字符 D,n[3]的值
                                    //以此类推,输出n[i]!=0时的字符 和 个数值。
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月21日
  • 已采纳回答 2月21日
  • 创建了问题 2月20日