蓝桥杯真题

您所在的位置:网站首页 远远超过英语造句 蓝桥杯真题

蓝桥杯真题

2023-07-29 03:46| 来源: 网络整理| 查看: 265

目录

一、题目描述

(1)输入描述

(2)输出描述

(3)输入输出样例

二、解题思路:

三、代码实现:

四、运行结果:

此题为自己理解,如有问题欢迎指正!如有更好的解法,可以留在评论区,共同学习!

一、题目描述

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。

(1)输入描述

输入一行包含一个单词,单词只由小写英文字母组成。

对于所有的评测用例,输入的单词长度不超过 1000。

(2)输出描述

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

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

(3)输入输出样例

示例 1

输入

lanqiao

输出

a 2

示例 2

输入

longlonglongistoolong

输出

o 6 二、解题思路:

1.题目要求的是,输出次数最多的字母 、及次数

2.第二条件:如果出现次数相同,比较字母的字典序,输出最小的字母

3.如何存放这个字符串,并且是能够知道它出现的次数和比较次数的大小?

   通过数组,遍历比较

4.如何接受字符串?

  通过循环,依次将字母放进数组中,直到‘\n’输入结束。

5.那么,每个字母的次数又怎么存放呢?再定义一个数组?

    定义一个结构体数组存放字母和次数,比较过程中,字母和它所出现的次数是一体的,输出时,只要知道结构体类型数组的下标就可以输出字母和其次数。

6.如何找到次数最大字母的下标?

先确定输入的第一个字母A为最大,通过循环依次与下一个字母比较,如果下一个字母B次数更多,将最大的下标确定为B,依次与B后面的字母比较。

   

三、代码实现: #include //单词分析 typedef struct //定义一个结构体用于存放符和所出现的次数 { char ch; int count; }number; main() { number L[1000] = { 0 }; //定义一个结构体类型的数组 char ch; int h = 0,i=0,max=0; while ((ch = getchar()) != '\n') //while()循环将字符串输入,依次存放到数组中的ch { L[h].ch = ch; h++; //通过变量h确定字符串的长度, } for (i = 0; i < h; i++) // 循环依次与后面字符比较,判断每个字符出现的次数 { int j = 0; L[i].count = 1; for (j = i+1; j < h; j++) { if (L[i].ch == L[j].ch) { L[i].count++; } } } for (i = 1; i < h; i++) //通过循环比较数组中字符的次数大小,包括次数相等判断字符的字典序大小,确定最大值在数组中的位置 { if (L[max].count < L[i].count) max = i; else if (L[max].count == L[i].count) { if (L[max].ch < L[i].ch) max = max; else max = i; } else max = max; } printf("%c\n", L[max].ch); printf("%d\n", L[max].count); } 四、运行结果:

 运行实例一:

 

 运行实例二:

                                  

此题为自己理解,如有问题欢迎指正!如有更好的解法,可以留在评论区,共同学习!


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3