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

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日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看