【ACWing】661. 平均数3

题目地址:

https://www.acwing.com/problem/content/663/

读取 4 4 4个数字 N 1 , N 2 , N 3 , N 4 N_1,N_2,N_3,N_4 N1,N2,N3,N4,这 4 4 4个数字都是保留 1 1 1位小数的浮点数,对应于学生获得的 4 4 4个分数。这 4 4 4个分数的权重分别为 2 , 3 , 4 , 1 2,3,4,1 2,3,4,1,请你计算学生成绩的平均值 X X X并输出Media: X。接下来分为以下三种情况:
如果平均值为 7.0 7.0 7.0或更高,则输出Aluno aprovado.
如果平均值小于 5.0 5.0 5.0,则输出Aluno reprovado.
如果平均值大于等于 5.0 5.0 5.0并且小于 7.0 7.0 7.0,则输出Aluno em exame.,并再读取一个数字 Y Y Y,然后输出Nota do exame: Y。接下来重新计算平均值 Z = ( X + Y ) / 2 Z=(X+Y)/2 Z=(X+Y)/2,如果 Z Z Z大于或等于 5.0 5.0 5.0,则输出Aluno aprovado.,否则输出Aluno reprovado.。最后输出Media final: Z,表示学生的最终成绩。

输入格式:
输入中包含四个浮点数,表示学生的四个成绩。也有部分满足情况 3 3 3的数据,多包含一个浮点数。

输出格式:
输出的结果均保留 1 1 1位小数,具体形式参照题目描述和输出样例。

数据范围:
0 ≤ 输 入 数 据 ≤ 10.0 0≤输入数据≤10.0 010.0

代码如下:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double N1, N2, N3, N4, media;
    int l;
    cin >> N1 >> N2 >> N3 >> N4;
    media = (N1 * 2 + N2 * 3 + N3 * 4 + N4 * 1) / 10.0;
    l = round(media * 100);
    if (l % 10 >= 5) media = (double) (l / 10) / 10 + 0.1;
    else media = (double) (l / 10) / 10;
    printf("Media: %.1lf\n", media);
    if (media >= 7) cout << "Aluno aprovado." << endl;
    else if (media < 5) cout << "Aluno reprovado." << endl;
    else {
        cout << "Aluno em exame." << endl;
        double Y, Z;
        cin >> Y;
        printf("Nota do exame: %.1lf\n", Y);
        Z = (media + Y) / 2;
        if (Z >= 5) cout << "Aluno aprovado." << endl;
        else cout << "Aluno reprovado." << endl;
        printf("Media final: %.1lf", Z);
    }
    
    return 0;
}

时空复杂度 O ( 1 ) O(1) O(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值