C语言系列之单词分析

给出一个单词后,找到出现最多的字母和这 个字母出现的次数。
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。

第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
第一个是稍微复杂点的

#include <stdio.h>
#include <string.h>
//仅供自己学习,做笔记  先遍历所有字母,记录字母的格式,然后进行最大值判断。
int main()
{
  
  char a[1000];
  int b[26]={0};
  int lenth;
  scanf("%s",a);

  lenth=strlen(a);

  int i=0;
  int max = 0;
  int j=0;
  int max_index =0;

  
  for (i=0;i<lenth;i++){

    switch(a[i]){
      case 'a': b[0] += 1;   break;
      case 'b': b[1] += 1;   break;
      case 'c': b[2] += 1;   break;
      case 'd': b[3] += 1;   break;
      case 'e': b[4] += 1;   break;
      case 'f': b[5] += 1;   break;
      case 'g': b[6] += 1;   break;
      case 'h': b[7] += 1;   break;
      case 'i': b[8] += 1;   break;
      case 'j': b[9] += 1;   break;
      case 'k': b[10] += 1;   break;
      case 'l': b[11] += 1;   break;
      case 'm': b[12] += 1;   break;
      case 'n': b[13] += 1;   break;
      case 'o': b[14] += 1;   break;
      case 'p': b[15] += 1;   break;
      case 'q': b[16] += 1;   break;
      case 'r': b[17] += 1;   break;
      case 's': b[18] += 1;   break;
      case 't': b[19] += 1;   break;
      case 'u': b[20] += 1;   break;
      case 'v': b[21] += 1;   break;
      case 'w': b[22] += 1;   break;
      case 'x': b[23] += 1;   break;
      case 'y': b[24] += 1;   break;
      case 'z': b[25] += 1;   break;
    }
  }

  for (j=0;j<26;j++){
    if(b[j] > max)
    {
       max = b[j];
       max_index = j;
    }
    else if (b[j] == max ){
      if(j<max_index){
        max_index = j;
        max = b[j];
      } 
      else {
        max = max;
        max_index = max_index;
      }
    }
  } 

  //for(i=0;i<26;i++){
  //  printf("%d\n",b[i]);
  //}

  //printf("%s\n%d%d",a,max,max_index);

  printf("%c\n%d\n",'a'+max_index,max);

  return 0;
}

当然还有种简单的方法

#include <stdio.h>
#include <stdlib.h>

int main()
{

  int count[26]={0},max=0,i;
  char ch;
  while((ch=getchar())!='\n')
    count[ch-'a']++;
  for(i=1;i<26;i++)
    if(count[i]>count[max])
      max=i;
  printf("%c\n%d",max+'a',count[max]);
  return 0;
}

小伙伴们快去试试吧!!!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据分析不是个事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值