7-1 字母统计

编写程序,输入一句话,要求将这句话中所有的字母都变成大写字母并打印输出,然后再打印输出出现次数最多的字母及其出现的次数(次数一样的情况下,仅输出字母顺序的第一个最大值的字母信息即可)。

输入格式:

输入一句话(最多80个字符)。

输出格式:

将这句话中所有的字母都变成大写字母并打印输出,然后再打印输出出现次数最多的字母及其出现的次数(次数一样的情况下,仅输出字母顺序的第一个最大值的字母信息即可)

输入样例:

Which question do you like? 1, 2 or 3?

输出样例:

WHICH QUESTION DO YOU LIKE? 1, 2 OR 3?
O:4

 一步一步的进行编写,难度在"仅输出字母顺序的第一个最大值的字母信息即可"


#include <stdio.h>

int main()
{
    char ch[1000];     //题目中给的是80字符,但是多多益善,防止pta节点错误
    int c[26]={0};     //设置一个计数数组,并置零,一个空保存一个字母的数量
    gets(ch);
    int i,max,flag[26]={0},j;  //注意flag数组

    for (i=0;ch[i] != 0;i++)     //检查大小写,并转换,其实可以考虑string.h中的strupr
    {
        if (ch[i]>='a' && ch[i]<='z')
            ch[i]=ch[i]-32;
    }

    for (i=0;ch[i] != 0;i++)    //存入计数数组
    {
        if (ch[i]>='A' && ch[i]<='Z')
            c[ch[i]-'A']++;
    }

    max=c[0];
    j=0;

    for (i=0;i<26;i++)  //查找数量最多的字母的数量
    {
        if (c[i] > max)
            max = c[i];
    }

    for (i=0;i<26;i++)  //列出和数量最多的字母一样的数量的字母
    {                   //然后保存在flag,因为是i++的形式判断并保存
        if (c[i]==max)  //所以flag[0]存的字母就是最大的位置
        {               //即题中所给(输出字母顺序的第一个最大值的字母信息)
            flag[j]=i;
            j++;
        }
    }

    puts(ch);          
    printf("%c:%d",'A'+flag[0],max); //注意%c的输出

}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值