if语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int score;
cin >> score;
if (score >= 60)
{
cout << "及格" << endl;
}
else
{
cout << "不及格" << endl;
}
return 0;
}

练习

  1. 绝对值

    输入一个整数,输出他的绝对值。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a;
cin >> a;
if (a >= 0)
cout << a << endl;
else
cout << -a << endl;
return 0;
}
  1. 比大小1

    输入两个整数,输出两个整数里更大的那个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a>=b)
{
cout << a << endl;
}
else
{
cout << b << endl;
}
return 0;
}
  1. 比大小2

    输入三个整数,输出三个整数里最大的那个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
if (a>=b)
{
if (a>=c)
{
cout << a << endl;
}
else
{
cout << c << endl;
}
}
else
{
if (b>=c)
{
cout << b << endl;
}
else
{
cout << c << endl;
}
}
return 0;
}
  1. 评分

    输入一个0到100之间的分数,
    如果大于等于85,输出A;
    如果大于等于70并且小于85,输出B;
    如果大于等于60并且小于70,输出C;
    如果小于60,输出 D。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a;
cin >> a;
if (a >= 85)
{
cout << 'A' << endl;
}
else
{
if (a >= 70)
{
cout << 'B' << endl;
}
else
{
if (a >= 60)
{
cout << 'C' << endl;
}
else
{
cout << 'D' << endl;
}
}
}
return 0;
}
  1. 简单计算器

    输入两个数,以及一个运算符+, -, *, /,输出这两个数运算后的结果。
    当运算符是/,且除数是0时,输出Divided by zero!; 当输入的字符不是+, -, *, /时,输出Invalid operator!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
int a, b;
char c;
cin >> a >> b >> c;

if (c == '+') cout << a + b << endl;
else if (c == '-') cout << a - b << endl;
else if (c == '*') cout << a * b << endl;
else if (c == '/')
{
if (b != 0)
{
cout << a / b << endl;
}
else
{
cout << "Divided by zero!" << endl;
}
}
else
{
cout << "Invalid operator!" << endl;
}

return 0;
}
  1. 判断闰年

    闰年有两种情况:
    (1) 能被100整除时,必须能被400整除;
    (2) 不能被100整除时,被4整除即可。
    输入一个年份,如果是闰年输出yes,否则输出no。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a;
cin >> a;
if (a % 100 == 0)
{
if (a % 400 == 0)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
}
else
{
if (a % 4 == 0)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
}
return 0;
}

条件表达式

  • &&
  • ||
  • !

练习

  1. 最大值
    输入三个数,输出三个数中的最大值(使用条件表达式)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
    #include <cstdio>
    using namespace std;
    int main()
    {
    int a, b, c;
    cin >> a >> b >> c;
    if (a >= b && a >= c) cout << a << endl;
    else if (b >= a && b >= c) cout << b << endl;
    else cout << c << endl;

    return 0;
    }
  2. 判断闰年

    用一条if语句,判断闰年。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int year;
cin >> year;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
cout << "yes" << endl;
else
cout << "no" << endl;
return 0;
}

例题

  1. 倍数

    读取两个正整数值 A 和 B。

    如果其中一个是另一个的整数倍,则输出 Sao Multiplos,否则输出 Nao sao Multiplos
    输入格式
    共一行,两个整数 A 和 B。
    输出格式
    按题目所述,输出结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a % b == 0 || b % a == 0)
{
cout << "Sao Multiplos" << endl;
}
else
{
cout << "Nao sao Multiplos" << endl;
}
return 0;
}
  1. 零食

    某商店出售 5 种零食,零食编号为 1∼5。

    5 种零食的价目表如下所示:

    种类 价格
    零食1 R$ 4.00
    零食2 R$ 4.50
    零食3 R$ 5.00
    零食4 R$ 2.00
    零食5 R$ 1.50

    现在给定某种零食的编号和数量,请你计算总价值是多少。
    输入格式
    输入包含两个整数 x 和 y,其中 x 为零食编号,y 为零食数量。
    输出格式
    输出格式为 Total: R$ X,其中 X 为总价值,保留两位小数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
double p;
cin >> n >> p;
if (n == 1)
{
printf("Total: R$ %.2lf", p * 4);
}
else if (n == 2)
{
printf("Total: R$ %.2lf", p * 4.5);
}
else if (n == 3)
{
printf("Total: R$ %.2lf", p * 5);
}
else if (n == 4)
{
printf("Total: R$ %.2lf", p * 2);
}
else if (n == 5)
{
printf("Total: R$ %.2lf", p * 1.5);
}
return 0;
}
  1. 区间

    给定一个浮点数,请你判断该数字属于以下哪个区间:[0,25],(25,50],(50,75],(75,100]。
    如果给定的数值小于 0 或大于 100,则程序输出 Fora de intervalo,表示超出范围。
    开区间 (a,b):在实数 a 和实数 b 之间的所有实数,但不包含 a 和 b。
    闭区间 [a,b]:在实数 a 和实数 b 之间的所有实数,包含 a 和 b。

    输入格式

    输入一个浮点数。

    输出格式

    判断输入数值位于哪个区间,按格式 Intervalo x 输出,其中 x 为区间范围 [0,25],(25,50],(50,75],(75,100] 中的一个。

    如果数值位于所有区间之外,则输出 Fora de intervalo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a;
scanf("%lf", &a);
if (a >= 0 && a <= 25)
{
printf("Intervalo [0,25]");
}
else if (a > 25 && a <= 50)
{
printf("Intervalo (25,50]");
}
else if (a > 50 && a <= 75)
{
printf("Intervalo (50,75]");
}
else if (a > 75 && a <= 100)
{
printf("Intervalo (75,100]");
}
else
{
printf("Fora de intervalo");
}
return 0;
}
  1. 三角形

    读取三个浮点数 A,B 和 C 并验证是否可以用它们形成三角形。
    如果可能,则计算并输出三角形的周长:

    Perimetro = XX.X

    如果不可能,则计算并输出以 A 和 B 为底以 C 为高的梯形面积:

    Area = XX.X

    输入格式

    共一行,包含三个浮点数 A,B,C。

    输出格式

    按题目描述格式,输出答案,答案保留一位小数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a, b, c;
scanf("%lf%lf%lf", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a)
{
printf("Perimetro = %.1lf", a + b + c);
}
else
{
printf("Area = %.1lf", (a + b) * c * 0.5);
}
return 0;
}
  1. 游戏时间

    读取两个整数 A 和 B,表示游戏的开始时间和结束时间,以小时为单位。

    然后请你计算游戏的持续时间,已知游戏可以在一天开始并在另一天结束,最长持续时间为 24 小时。

    如果 A 与 B 相等,则视为持续了 24 小时。

    输入格式

    共一行,包含两个整数 A 和 B。

    输出格式

    输出格式为 O JOGO DUROU X HORA(S),其中 X 为游戏持续时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a > b)
printf("O JOGO DUROU %d HORA(S)", 24 - a + b);
else if (a < b)
printf("O JOGO DUROU %d HORA(S)", b -a);
else if (a = b)
printf("O JOGO DUROU 24 HORA(S)");
return 0;
}
  1. 加薪

    ABC 公司决定给员工加薪,加薪情况如下所示

    薪水 涨薪幅度
    0 - 400.00 15%
    400.01 - 800.00 12%
    800.01 - 1200.00 10%
    1200.01 - 2000.00 7%
    超过 2000.00 4%

    读取员工的工资,计算并输出员工的新工资,以及员工增加的收入和涨薪幅度。

    输入格式

    共一行,包含一个保留两位小数的浮点数。

    输出格式

    输出格式如下所示:

    第一行输出 Novo salario: X,X 表示员工新工资,保留两位小数。

    第二行输出 Reajuste ganho: Y,Y 表示员工增加的具体收入数值,保留两位小数。

    第三行输出 Em percentual: Z,Z 表示涨薪幅度,注意用百分比表示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a;
cin >> a;
if (a > 0 && a <= 400)
{
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 15 %%", a * 1.15, a * 0.15);
}
else if (a > 400.00 && a <= 800)
{
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 12 %%", a * 1.12, a * 0.12);
}
else if (a > 800 && a <= 1200)
{
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 10 %%", a * 1.1, a * 0.1);
}
else if (a > 1200 && a <= 2000)
{
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 7 %%", a * 1.07, a * 0.07);
}
else if (a > 2000)
{
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 4 %%", a * 1.04, a * 0.04);
}
return 0;
}
※在printf()中使用双引号""时,中间的单独的%无法输出,代码里必须有两个%%才能输出一个%
  1. 动物

    给定你三个葡萄牙语单词,这些词将根据下表从左到右定义一个动物。

    动物

    请你确定并输出这个动物的名称。

    输入格式

    根据上表,输入包含三个单词,每行一个,用以识别动物,单词由小写字母构成。

    输出格式

    输出识别出的动物的名称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
string a, b, c;
cin >> a >> b >> c;
if (a == "vertebrado")
{
if (b == "ave")
{
if (c == "carnivoro")
{
cout << "aguia" << endl;
}
else if (c == "onivoro")
{
cout << "pomba" << endl;
}
}
else if (b == "mamifero")
{
if (c == "onivoro")
{
cout << "homem" << endl;
}
else if (c == "herbivoro")
{
cout << "vaca" << endl;
}
}
}
else if (a == "invertebrado")
{
if (b == "inseto")
{
if (c == "hematofago")
{
cout << "pulga" << endl;
}
else if (c == "herbivoro")
{
cout << "lagarta" << endl;
}
}
else if (b == "anelideo")
{
if (c == "hematofago")
{
cout << "sanguessuga" << endl;
}
else if (c == "onivoro")
{
cout << "minhoca" << endl;
}
}
}
return 0;
}

习题

  1. 练习1

    读取 4 个整数值 A,B,C 和 D。
    如果四个整数同时满足以下条件:

    • B 大于 C。
    • D 大于 A。
    • C 和 D 的总和大于 A 和 B 的总和。
    • C 和 D 是正值。
    • A 是偶数。

    则输出 Valores aceitos,否则,输出 Valores nao aceitos

    输入格式

    输入占一行,包含四个整数 A,B,C,D。

    输出格式

    如果输入数值满足题目条件则输出 Valores aceitos,否则,输出 Valores nao aceitos

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
if (b > c && d > a && (c + d) > (a + b) && c > 0 && d > 0 && a % 2 == 0)
cout << "Valores aceitos" << endl;
else
cout << "Valores nao aceitos" << endl;
return 0;
}
  1. DDD

    给定一个整数,请根据下表确定并输出其对应的城市名称:

    DDD

    如果输入数字不在上表中,则输出 DDD nao cadastrado

    输入格式

    共一行,包含一个整数。

    输出格式

    输出对应城市名称,如果没有对应城市名称,则输出 DDD nao cadastrado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a;
cin >> a;
if (a == 61)
cout << "Brasilia" << endl;
else if (a == 71)
cout << "Salvador" << endl;
else if (a == 11)
cout << "Sao Paulo" << endl;
else if (a == 21)
cout << "Rio de Janeiro" << endl;
else if (a == 32)
cout << "Juiz de Fora" << endl;
else if (a == 19)
cout << "Campinas" << endl;
else if (a == 27)
cout << "Vitoria" << endl;
else if (a == 31)
cout << "Belo Horizonte" << endl;
else
cout << "DDD nao cadastrado" << endl;
return 0;
}
  1. 点的坐标

    给定两个保留一位小数的浮点数 X,Y,用来表示一个点的横纵坐标。

    zuobiao

    请你判断该点在坐标系中的位置。

    输入格式

    共一行,包含两个浮点数 X,Y,表示点的横纵坐标。

    输出格式

    如果点在第一象限,则输出 Q1,在第二象限,则输出 Q2,以此类推。

    如果点在原点处,则输出 Origem

    否则,如果点在 x 坐标上,则输出 Eixo X,在 y 坐标上,则输出 Eixo Y

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double x, y;
cin >> x >> y;
if (x > 0 && y > 0)
cout << "Q1" << endl;
else if (x < 0 && y > 0)
cout << "Q2" << endl;
else if (x < 0 && y < 0)
cout << "Q3" << endl;
else if (x > 0 && y < 0)
cout << "Q4" << endl;
else if (x == 0 && y != 0)
cout << "Eixo Y" << endl;
else if (x != 0 && y == 0)
cout << "Eixo X" << endl;
else if (x == 0 && y == 0)
cout<< "Origem" << endl;
return 0;
}
  1. 三角形类型

    读取表示三角形三条边的 3 个浮点数 A,B 和 C 并按降序排列,使 A 边是三边中最大的一边。

    接下来,根据以下情况,确定它们可以组成的三角形类型:

    • 如果 A≥B+C,则说明三条边不能构成三角形,请输出:NAO FORMA TRIANGULO
    • 否则,说明三条边可以构成三角形,然后按如下情况输出:
      • 如果A^2 = B^2+C^2,请输出:TRIANGULO RETANGULO
      • 如果A^2 > B^2+C^2,请输出:TRIANGULO OBTUSANGULO
      • 如果A^2 < B^2+C^2,请输出:TRIANGULO ACUTANGULO
      • 如果三个边长度都相同,请输出:TRIANGULO EQUILATERO
      • 如果只有两个边长度相同而第三个边长度不同,请输出:TRIANGULO ISOSCELES

    输入格式

    共一行,包含三个浮点数 A,B,C。

    输出格式

    输出 A,B,C 组成的三角形的类型。

    注意,上述条件可能满足不止一条,这种情况下将所有类型名称,按题目介绍顺序输出,每行输出一条。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a, b, c, x, y, z;
cin >> a >> b >> c;
if (a < b)
{
x = a;
a = b;
b = x;
}
if (a < c)
{
y = a;
a = c;
c = y;
}
if (b < c)
{
z = b;
b = c;
c = z;
}
if (a >= b + c)
cout << "NAO FORMA TRIANGULO" << endl;
else
{
if (a * a > b * b + c * c)
cout << "TRIANGULO OBTUSANGULO" << endl;
if (a * a < b * b + c * c)
cout << "TRIANGULO ACUTANGULO" << endl;
if (a * a == b * b + c * c)
cout << "TRIANGULO RETANGULO" << endl;
if (a == b && b == c)
cout << "TRIANGULO EQUILATERO" << endl;
else if (a == b || b == c)
cout << "TRIANGULO ISOSCELES" << endl;
}
return 0;
}
  1. 游戏时间2

    读取四个整数 A,B,C,D,用来表示游戏的开始时间和结束时间。

    其中 A 和 B 为开始时刻的小时和分钟数,C 和 D 为结束时刻的小时和分钟数。

    请你计算游戏的持续时间。比赛最短持续 1 分钟,最长持续 24 小时。

    输入格式

    共一行,包含四个整数 A,B,C,D。

    输出格式

    输出格式为 O JOGO DUROU X HORA(S) E Y MINUTO(S),表示游戏共持续了 X 小时 Y 分钟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b, c, d, x, y;
cin >> a >> b >> c >> d;
if (a == c)
{
if (b == d)
{
x = 24;
y = 0;
}
if (b < d)
{
x = 0;
y = d - b;
}
if (b > d)
{
x = 23;
y = 60 + d - b;
}

}
else
{
if (a < c)
{
if (b <= d)
{
x = c - a;
y = d - b;
}
else
{
x = c - a -1;
y = 60 - b + d;
}
}
else
{
if (b <= d)
{
x = 24 - a + c;
y = d - b;
}
else
{
x = 24 - a + c - 1;
y = 60 - b + d;
}
}
}
printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", x, y);
return 0;
}
  1. 缴税

    读取一个保留两位小数的浮点数值,表示一个公民的工资。

    在公民缴纳个人所得税时,不同收入部分需要缴税的税率也是不同的。

    请根据下表确定该公民需要缴纳的个人所得税是多少。

    tax

    输入格式

    共一行,包含一个浮点数。

    输出格式

    如果公民需要缴税,则输出所需缴纳的税额。输出格式为 R$ X,其中 X 为个税的金额,保留两位小数。

    如果公民不需要缴税,则输出 Isento

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a, t;
cin >> a;
if (a >= 0 && a <= 2000)
{
cout << "Isento" << endl;
}
if (a <= 3000 && a > 2000)
{
t = (a - 2000) * 0.08;
printf("R$ %.2lf", t);
}
if (a > 3000 && a <= 4500)
{
t = 80 + (a - 3000) * 0.18;
printf("R$ %.2lf", t);
}
if (a > 4500)
{
t = 80 + 270 + (a - 4500) * 0.28;
printf("R$ %.2lf", t);
}
return 0;
}
  1. 简单排序

    读取三个整数并按升序对它们进行排序。

    输入格式

    共一行,包含三个整数。

    输出格式

    首先,将三个整数按升序顺序输出,每行输出一个整数。

    然后,输出一个空行。

    紧接着,将三个整数按原输入顺序输出,每行输出一个整数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
int x = a;
int y = b;
int z = c;
if (a > b)
{
int t = a;
a = b;
b = t;
}
if (a > c)
{
int t = a;
a = c;
c = t;
}
if (b > c)
{
int t = b;
b = c;
c = t;
}
printf("%d\n%d\n%d\n\n%d\n%d\n%d\n", a, b, c, x, y, z);
return 0;
}
  1. 一元二次方程的解公式

    读取三个浮点数 a,b,c 的值,利用一元二次方程求根公式对方程 ax^2+bx+c=0 进行求解。
    如果 b^2−4ac<0 导致方程无解或 a=0,则输出 Impossivel calcular

    输入格式

    输入三个浮点数 a,b,c。

    输出格式

    参照输出格式,输出方程的根,输出结果保留五位小数,如果无解则输出 Impossivel calcular

    两个根可以按任意顺序输出,都算正确。

    数据保证不存在只有一个解的情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
double a, b, c, x1, x2, delta;
cin >> a >> b >> c;
delta = b * b - 4 * a * c;
if ( delta < 0 || a == 0 )
cout << "Impossivel calcular" << endl;
else
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("R1 = %.5lf\nR2 = %.5lf", x1, x2);
}
return 0;
}
  1. 平均数3

    读取 4 个数字 N1,N2,N3,N4,这 4 个数字都是保留 1 位小数的浮点数,对应于学生获得的 4 个分数。

    这 4 个分数的权重分别为 2,3,4,1,请你计算学生成绩的平均值 X 并输出 Media: X

    接下来分为以下三种情况:

    • 如果平均值为 7.0 或更高,则输出 Aluno aprovado.
    • 如果平均值小于 5.0,则输出 Aluno reprovado.
    • 如果平均值大于等于 5.0 并且小于 7.0,则输出 Aluno em exame.,并再读取一个数字 Y,然后输出 Nota do exame: Y。接下来重新计算平均值 Z=(X+Y)/2,如果 Z 大于或等于 5.0,则输出 Aluno aprovado.,否则输出 Aluno reprovado.。最后输出 Media final: Z,表示学生的最终成绩。

    输入格式

    输入中包含四个浮点数,表示学生的四个成绩。

    也有部分满足情况 3 的数据,多包含一个浮点数。

    输出格式

    输出的结果,具体形式参照题目描述和输出样例。

    只要输出结果与答案的绝对误差不超过 0.1 即视为正确。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a, b, c, d, y, x, z;
cin >> a >> b >> c >> d;
x = (a * 2 + b * 3 + c * 4 + d) / 10;
printf("Media: %.1lf\n", x);
if (x >= 7)
cout << "Aluno aprovado." << endl;
else if (x < 5)
cout << "Aluno reprovado." << endl;
else
{
cout << "Aluno em exame." << endl;
cin >> y;
cout << "Nota do exame: " << y << endl;
z = (x + y) / 2;
if (z >= 5)
cout << "Aluno aprovado." << endl;
else
cout << "Aluno reprovado." << endl;
printf("Media final: %.1lf", z);
}
return 0;
}