信息学奥赛一本通题目解析:1414:【17NOIP普及组】成绩(模拟)

【题目描述】

牛牛最近学习了 C++入门课程,这门课程的总成绩计算方法是:

总成绩 = 作业成绩 × 20% + 小测成绩 × 30% + 期末考试成绩 × 50%

牛牛想知道,这门课程自己最终能得到多少分。

【输入】

只有 1 行,包含三个非负整数A、B、C,分别表示牛牛的作业成绩、小测 成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是 100 分。

【输出】

只有 1 行,包含一个整数,即牛牛这门课程的总成绩,满分也是 100 分。

【输入样例】

100 100 80

【输出样例】

90

【提示】

【输入输出样例 1 说明】 牛牛的作业成绩是 100 分,小测成绩是 100 分,期末考试成绩是 80 分,总成 绩是 100 × 20% + 100 × 30% + 80 × 50% = 20 + 30 + 40 = 90。

【输入输出样例 2】

输入:

60 90 80

输出:

79

【输入输出样例 2 说明】 牛牛的作业成绩是 60 分,小测成绩是 90 分,期末考试成绩是 80 分,总成绩是 60 × 20% + 90 × 30% + 80 × 50% = 12 + 27 + 40 = 79。  

【数据说明】

对于 30% 的数据,A = B = 0。

对于另外 30% 的数据,A = B = 100。

对于 100% 的数据, 0 ≤ A、B、C ≤ 100 且 A、B、C 都是 10 的整数倍。

【解题思路】

1. 读取输入

  • 首先,需要从输入中读取三个非负整数ABC,分别代表牛牛的作业成绩、小测成绩和期末考试成绩。

2. 计算总成绩

  • 根据题目给出的总成绩计算公式,计算牛牛的总成绩。公式如下:

    总成绩 = 作业成绩 × 20% + 小测成绩 × 30% + 期末考试成绩 × 50%

    这里需要注意,计算时要保持成绩的精度,避免因为整数除法而丢失小数部分。因此,需要将成绩转换为浮点数进行计算。

3. 输出结果

  • 将计算出的总成绩四舍五入到最接近的整数,并输出这个整数作为牛牛这门课程的总成绩。

实现提示

  • 在实现时,由于成绩是以10的整数倍给出,直接使用整型变量接收输入即可。在计算总成绩时,为了保证计算的准确性,可以先将每部分成绩乘以对应的百分比,转换为浮点数进行计算,然后再将计算结果四舍五入到最接近的整数。

这是一个比较基础的编程问题,主要考察的是基本的数学运算和数据类型转换。

【代码实现】

#include <iostream>
#include <cmath> // 引入cmath库用于四舍五入操作
using namespace std;

int main() {
    int A, B, C; // 分别表示作业成绩、小测成绩和期末考试成绩
    cin >> A >> B >> C; // 从标准输入读取三项成绩
    
    // 计算总成绩,注意将整数转换为浮点数进行计算,以保持精度
    // 使用round函数四舍五入到最接近的整数
    int totalScore = round(A * 0.2 + B * 0.3 + C * 0.5);

    cout << totalScore << endl; // 输出计算得到的总成绩
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值