题目地址:
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
0≤输入数据≤10.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)。