【水滴计划 | 每日两题】:单词计数 以及 成绩统计

198 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

1、写在前面

大家好,我是翼同学,这里是【水滴计划 | 刷题日志】

每日两题,拒绝摆烂。

2、内容

2.1、单词计数

(1) 描述

给定一个英语单词,要求找到出现最多的字母以及出现的次数。

  • 输入描述
  • 输入一行,只包含一个单词(单词由小写英文字母组成,长度不超过1000)
  • 输出描述
  • 输出两行,第一行包含一个英文字母,即单词中出现得最多的字母,如果有多个字母出现的次数相等,输出字典序最小的那个。第二行包含一个整数,表示该字母出现的次数。

(2) 举例

  • 输入
happy
  • 输出
p
2

  • 输入
possessions
  • 输出
s
5

(3) 解题

C++解题:

#include <iostream>
using namespace std;
int main()
{
    int wordCount[26] = {0};  // 数组可存放每个字母出现的次数
    char ch;  // 用于获取字符
    while( (ch=getchar()) != '\n' ) {
        // 对每个字母对应的数组元素,自增加一
        wordCount[ch-'a']++;
    }

    int max = 0;  // 表示大值的索引
    for(int i = 1; i<26; i++) {
        // 从数组的第一个元素开始,依次比较,得出最大值的索引值 max
        if( wordCount[i] > wordCount[max] ) {
            max = i;
        }
    }

    // 最后,输出结果:
    cout << (max+'a') << '\n' << wordCount[max]);
    return 0;
}

2.2、成绩统计

(1) 描述

现有一场考试,需计算及格率以及优秀率。

备注:学生得分范围是[0,100][0, 100],并且分数大于等于6060属于及格,大于等于8585优秀。

  • 输入描述
  • 输入的第一行表示考试人数nn。(其中1n1041≤n≤10^4
  • 其后输出的nn行表示每个学生的得分情况。
  • 输出描述
  • 输出两行,第一行表示及格率,第二行表示优秀率。用百分数表示(百分号前的部分应四舍五入,保留整数)

(2) 举例

  • 输入
5
46
79
91
59
76
  • 输出
60%
20%

(3) 解题

C++解题:

#include <iostream>
using namespace std;
int main()
{
    int number = 0;
    cin >> number; // 获取考试人数
    int jige = 0, youxiu = 0;
    int data; // 获取学生成绩
    while(cin>>data) {
        // 获取及格人数
        if(data >= 60) {
            jige++;
        }
        // 获取优秀人数
        if(data >= 85) {
            youxiu++;
        }
    }
    // 最后格式化输出:
    printf("%.0f%%\n",jige*100.0/number); 
    printf("%.0f%%\n",youxiu*100.0/number);
    return 0;
}

3、写在最后

好了,今天刷题就到这里,明天再来。