if语句

基本语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;

public class Main
{
public static void main (String[] args)
{
Scanner sc =new Scanner(System.in);
int a = sc.nextInt();

if (a > 5)
{
System.out.printf("%d is big!\n", a);
System.out.printf("%d + 1 = %d\n", a, a + 1);
}
else
{
System.out.printf("%d is small!\n", a);
System.out.printf("%d - 1 = %d", a, a - 1);
}
}
}

输入

1
6

输出

1
2
6 is big!
6 + 1 = 7

练习

  1. 输入一个整数,输出这个数的绝对值。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int x = sc.nextInt();
    if (x >= 0)
    System.out.println(x);
    else
    System.out.println(- x);
    }
    }
  2. 输入两个整数,输出两个数中较大的那个。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int x = sc.nextInt(), y = sc.nextInt();
    if (x >= y)
    System.out.println(x);
    else
    System.out.println(y);
    }
    }
  3. 输入三个整数,输出三个数中最大的那个。

    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt();

    if (a >= b)
    {
    if (a >= c)
    System.out.println(a);
    else
    System.out.println(c);
    }
    else
    {
    if (b >= c)
    System.out.println(b);
    else
    System.out.println(c);
    }
    }
    }

常用比较运算符

1
2
3
4
5
6
<
>
>=
<=
==
!=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(), b = sc.nextInt();

if (a > b) System.out.printf("%d > %d\n", a, b);
if (a >= b) System.out.printf("%d >= %d\n", a, b);
if (a < b) System.out.printf("%d < %d\n", a, b);
if (a <= b) System.out.printf("%d <= %d\n", a, b);
if (a == b) System.out.printf("%d == %d\n", a, b);
if (a != b) System.out.printf("%d != %d\n", a, b);
}
}

if-else连写

输入一个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
import java.util.Scanner;

public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();

if (x >= 85)
System.out.println("A");
else if (x >= 70)
System.out.println("B");
else if (x >= 60)
System.out.println("C");
else
System.out.println("D");
}
}

练习

判断闰年。闰年有两种情况:
(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
import java.util.Scanner;

public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();

if (x % 100 == 0)
{
if (x % 400 == 0)
System.out.println("yes");
else
System.out.println("no");
}
else
{
if (x % 4 == 0)
System.out.println("yes");
else
System.out.println("no");
}
}
}

条件表达式

&&||!

例题

输入三个数,输出三个数中的最大值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;

public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt();

if (a >= b && a >= c)
System.out.println(a);
else if (b >= a && b >= c)
System.out.println(b);
else
System.out.println(c);
}
}

练习

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Scanner;

public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int y = sc.nextInt();
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
System.out.println("yes");
else
System.out.println("no");
}
}

switch语句

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
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int day = sc.nextInt();
String name;

switch(day) {
case 1:
name = "Monday";
break;
case 2:
name = "Tuesday";
break;
case 3:
name = "Wednesday";
break;
case 4:
name = "Thursday";
break;
case 5:
name = "Friday";
break;
case 6:
name = "Saturday";
break;
case 7:
name = "Sunday";
break;
default:
name = "not valid";
}

System.out.println(name);
}
}

注意swtich语句中如果不加break语句,则从上到下匹配到第一个case后,会顺次执行后面每个case中的语句。

例题

  1. 倍数

    读取两个正整数值 A 和 B

    如果其中一个是另一个的整数倍,则输出 Sao Multiplos,否则输出 Nao sao Multiplos

    输入格式

    共一行,两个整数 A 和 B

    输出格式

    按题目所述,输出结果

    数据范围

    0< A, B < 100

    输入样例

    1
    6 24

    输出样例

    1
    Sao Multiplos

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt(), b = sc.nextInt();
    if ((a % b == 0) || (b % a == 0))
    System.out.println("Sao Multiplos");
    else
    System.out.println("Nao sao Multiplos");
    }
    }
  2. 零食

    某商店出售 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≤x≤5, 1≤y≤100

    输入样例

    1
    3 2

    输出样例

    1
    Total: R$ 10.00

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int x = sc.nextInt(), y = sc.nextInt();

    if (x == 1)
    System.out.printf("Total: R$ %.2f", (double)y * 4);
    if (x == 2)
    System.out.printf("Total: R$ %.2f", (double)y * 4.5);
    if (x == 3)
    System.out.printf("Total: R$ %.2f", (double)y * 5);
    if (x == 4)
    System.out.printf("Total: R$ %.2f", (double)y * 2);
    if (x == 5)
    System.out.printf("Total: R$ %.2f", (double)y * 1.5);
    }
    }
  3. 区间

    给定一个浮点数,请你判断该数字属于以下哪个区间:[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
    25.01

    输出样例

    1
    Intervalo (25,50]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double x = sc.nextDouble();

    if (x >= 0 && x <= 25)
    System.out.printf("Intervalo [0,25]");
    else if (x > 25 && x <= 50)
    System.out.printf("Intervalo (25,50]");
    else if (x > 50 && x <= 75)
    System.out.printf("Intervalo (50,75]");
    else if (x > 75 && x <= 100)
    System.out.printf("Intervalo (75,100]");
    else
    System.out.printf("Fora de intervalo");
    }
    }
  4. 三角形

    读取三个浮点数 A,B 和 C 并验证是否可以用它们形成三角形。

    如果可能,则计算并输出三角形的周长:

    Perimetro = XX.X

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

    Area = XX.X

    输入格式

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

    输出格式

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

    数据范围

    0< A,B,C <100.0

    输入样例1

    1
    6.0 4.0 2.0

    输出样例1

    1
    Area = 10.0

    输入样例2

    1
    6.0 4.0 2.1

    输出样例2

    1
    Perimetro = 12.1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double a = sc.nextDouble(), b = sc.nextDouble(), c = sc.nextDouble();

    if (a + b > c && a + c > b && b + c > a)
    System.out.printf("Perimetro = %.1f", a + b + c);
    else
    System.out.printf("Area = %.1f", (a + b) * c / 2);
    }
    }
  5. 游戏时间

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

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

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

    输入格式

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

    输出格式

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

    数据范围

    0≤A,B≤23

    输入样例1

    1
    16 2

    输出样例1

    1
    O JOGO DUROU 10 HORA(S)

    输入样例2

    1
    0 0

    输出样例2

    1
    O JOGO DUROU 24 HORA(S)

    输入样例3

    1
    2 16

    输出样例3

    1
    O JOGO DUROU 14 HORA(S)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt(), b = sc.nextInt();

    if (b > a)
    System.out.printf("O JOGO DUROU %d HORA(S)", b - a);
    else
    System.out.printf("O JOGO DUROU %d HORA(S)", 24 - a + b);
    }
    }
  6. 加薪

    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 表示涨薪幅度,注意用百分比表示。

    数据范围

    0≤原工资≤2500.00

    输入样例1

    1
    400.00

    输出样例1

    1
    2
    3
    Novo salario: 460.00
    Reajuste ganho: 60.00
    Em percentual: 15 %

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double n = sc.nextDouble();

    if (n >= 0.00 && n <= 400.00)
    System.out.printf("Novo salario: %.2f\nReajuste ganho: %.2f\nEm percentual: %d %%", n * 1.15, n * 0.15, 15);
    else if (n > 400.00 && n <= 800.00)
    System.out.printf("Novo salario: %.2f\nReajuste ganho: %.2f\nEm percentual: %d %%", n * 1.12, n * 0.12, 12);
    else if (n > 800.00 && n <= 1200.00)
    System.out.printf("Novo salario: %.2f\nReajuste ganho: %.2f\nEm percentual: %d %%", n * 1.10, n * 0.10, 10);
    else if (n > 1200.00 && n <= 2000.00)
    System.out.printf("Novo salario: %.2f\nReajuste ganho: %.2f\nEm percentual: %d %%", n * 1.07, n * 0.07, 7);
    else
    System.out.printf("Novo salario: %.2f\nReajuste ganho: %.2f\nEm percentual: %d %%", n * 1.04, n * 0.04, 4);
    }
    }
  7. 动物

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

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

    输入格式

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

    输出格式

    输出识别出的动物的名称

    输入样例1

    1
    2
    3
    vertebrado
    mamifero
    onivoro

    输出样例1

    1
    homem

    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    String a = sc.next(), b = sc.next(), c = sc.next();

    if (a.equals("vertebrado"))
    {
    if (b.equals("ave"))
    {
    if (c.equals("carnivoro"))
    System.out.println("aguia");
    else
    System.out.println("pomba");
    }
    else
    {
    if (c.equals("onivoro"))
    System.out.println("homem");
    else
    System.out.println("vaca");
    }
    }
    else
    {
    if (b.equals("inseto"))
    {
    if (c.equals("hematofago"))
    System.out.println("pulga");
    else
    System.out.println("lagarta");
    }
    else
    {
    if (c.equals("hematofago"))
    System.out.println("sanguessuga");
    else
    System.out.println("minhoca");
    }
    }
    }
    }

习题

  1. 选择练习1

    读取 4 个整数值 A,B,C 和 D

    如果四个整数同时满足以下条件:

    B 大于 C

    D 大于 A

    C 和 D 的总和大于 A 和 B 的总和。

    C 和 D 是正值。

    A 是偶数。

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

    输入格式

    输入占一行,包含四个整数

    输出格式

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

    数据范围

    −100≤A,B,C,D≤100

    输入样例

    1
    5 6 7 8

    输出样例

    1
    Valores nao aceitos

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();

    if (b > c && d > a && (c + d) > (a + b) && c > 0 && d > 0 && (a % 2 == 0))
    System.out.printf("Valores aceitos");
    else
    System.out.printf("Valores nao aceitos");
    }
    }
  2. DDD

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

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

    输入格式

    共一行,包含一个整数。

    输出格式

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

    输入样例

    1
    11

    输出样例

    1
    Sao Paulo

    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int x = sc.nextInt();

    if (x == 61)
    System.out.printf("Brasilia");
    else if (x == 71)
    System.out.printf("Salvador");
    else if (x == 11)
    System.out.printf("Sao Paulo");
    else if (x == 21)
    System.out.printf("Rio de Janeiro");
    else if (x == 32)
    System.out.printf("Juiz de Fora");
    else if (x == 19)
    System.out.printf("Campinas");
    else if (x == 27)
    System.out.printf("Vitoria");
    else if (x == 31)
    System.out.printf("Belo Horizonte");
    else
    System.out.printf("DDD nao cadastrado");
    }
    }
  3. 选择练习1

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

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

    输入格式

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

    输出格式

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

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

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

    数据范围

    −10.0≤X,Y≤10.0

    输入样例1

    1
    4.5 -2.2

    输出样例1

    1
    Q4

    输入样例2

    1
    0.0 0.0

    输出样例2

    1
    Origem

    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double x = sc.nextDouble(), y = sc.nextDouble();
    if (x != 0 && y != 0)
    {
    if (x > 0)
    {
    if (y > 0)
    System.out.printf("Q1");
    else
    System.out.printf("Q4");
    }
    else
    {
    if (y > 0)
    System.out.printf("Q2");
    else
    System.out.printf("Q3");
    }
    }
    else if (x == 0 && y != 0)
    System.out.printf("Eixo Y");
    else if (x != 0 && y == 0)
    System.out.printf("Eixo X");
    else if (x == 0 && y == 0)
    System.out.printf("Origem");
    }
    }
  4. 三角形类型

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

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

    如果 A≥B+C,则说明三条边不能构成三角形,请输出:NAO FORMA TRIANGULO

    否则,说明三条边可以构成三角形,然后按如下情况输出:

    如果A2=B2+C2,请输出:TRIANGULO RETANGULO

    如果A2>B2+C2,请输出:TRIANGULO OBTUSANGULO

    如果A2< B2+C2,请输出:TRIANGULO ACUTANGULO

    如果三个边长度都相同,请输出:TRIANGULO EQUILATERO

    F如果只有两个边长度相同而第三个边长度不同,请输出:TRIANGULO ISOSCELES

    输入格式

    共一行,包含三个浮点数

    输出格式

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

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

    数据范围

    0< A,B,C≤ 10.0

    输入样例

    1
    7.0 5.0 7.0

    输出样例

    1
    2
    TRIANGULO ACUTANGULO
    TRIANGULO ISOSCELES

    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double a = sc.nextDouble();
    double b = sc.nextDouble();
    double c = sc.nextDouble();

    if(a < b)
    {
    double tmp = a;
    a = b;
    b = tmp;
    }
    if(a < c)
    {
    double tmp = a;
    a = c;
    c = tmp;
    }
    if(b < c)
    {
    double tmp = b;
    b = c;
    c = tmp;
    }

    if (a >= b + c)
    System.out.println("NAO FORMA TRIANGULO");
    else
    {
    if (a * a == b * b + c * c)
    System.out.println("TRIANGULO RETANGULO");
    else if (a * a > b * b + c * c)
    System.out.println("TRIANGULO OBTUSANGULO");
    else
    System.out.println("TRIANGULO ACUTANGULO");

    if (a == b && a == c)
    System.out.println("TRIANGULO EQUILATERO");
    else if (a == b || a == c || b == c)
    System.out.println("TRIANGULO ISOSCELES");
    }
    }
    }
  5. 游戏时间2

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

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

    请你计算游戏的持续时间。

    比赛最短持续 1 分钟,最长持续 24 小时。

    输入格式

    共一行,包含四个整数

    输出格式

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

    数据范围

    0≤A,C≤23

    0≤B,D≤59

    输入样例1

    1
    7 8 9 10

    输出样例1

    1
    O JOGO DUROU 2 HORA(S) E 2 MINUTO(S)

    输入样例2

    1
    7 7 7 7

    输出样例2

    1
    O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)

    输入样例3

    1
    7 10 8 9

    输出样例3

    1
    O JOGO DUROU 0 HORA(S) E 59 MINUTO(S)

    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int h1 = sc.nextInt(), m1 = sc.nextInt();
    int h2 = sc.nextInt(), m2 = sc.nextInt();

    if (m2 > m1)
    {
    if (h2 > h1)
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", h2 - h1, m2 - m1);
    else if (h2 < h1)
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", 24 - h1 + h2, m2 - m1);
    else
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", 0, m2 - m1);

    }
    else if (m2 < m1)
    {
    if (h2 > h1)
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", h2 - h1 - 1, m2 + 60 - m1);
    else if (h2 < h1)
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", 24 - h1 + h2 - 1, m2 + 60 - m1);
    else
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", 23, m2 + 60 - m1);
    }
    else
    {
    if (h2 > h1)
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", h2 - h1, 0);
    else
    System.out.printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)", 24 - h1 + h2, 0);
    }

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

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

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

    java2tax

    输入格式

    共一行,包含一个浮点数

    输出格式

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

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

    数据范围

    0≤公民工资≤5000

    输入样例1

    1
    3002.00

    输出样例1

    1
    R$ 80.36

    输入样例2

    1
    1700.00

    输出样例2

    1
    Isento

    输入样例3

    1
    4520.00

    输出样例3

    1
    R$ 355.60

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double x = sc.nextDouble();

    if (x <= 2000)
    System.out.printf("Isento");
    else if (x > 2000 && x <= 3000)
    System.out.printf("R$ %.2f", (x - 2000) * 0.08);
    else if (x > 3000 && x <= 4500)
    System.out.printf("R$ %.2f", 1000* 0.08 + (x - 3000) * 0.18);
    else if (x > 4500)
    System.out.printf("R$ %.2f", 1000* 0.08 + 1500 * 0.18 + (x - 4500) * 0.28);
    }
    }
  7. 读取三个整数并按升序对它们进行排序

    输入格式

    共一行,包含三个整数

    输出格式

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

    然后,输出一个空行。

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

    数据范围

    −100≤输入整数≤100

    输入整数各不相同。

    输入样例

    1
    7 21 -14

    输出样例

    1
    2
    3
    4
    5
    6
    7
    -14
    7
    21

    7
    21
    -14

    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int a0 = sc.nextInt(), b0 = sc.nextInt(), c0 = sc.nextInt();
    int a = a0, b = b0, c = c0;

    if (a > b)
    {
    int tmp = a;
    a = b;
    b = tmp;
    }
    if (a > c)
    {
    int tmp = a;
    a = c;
    c = tmp;
    }
    if (b > c)
    {
    int tmp = b;
    b = c;
    c = tmp;
    }

    System.out.printf("%d\n%d\n%d\n\n", a, b, c);
    System.out.printf("%d\n%d\n%d\n", a0, b0, c0);
    }
    }
  8. 一元二次方程公式

    读取三个浮点数 a,b,c 的值,利用一元二次方程求根公式对方程 ax2+bx+c=0 进行求解。

    如果 b2−4ac<0 导致方程无解或 a=0,则输出 Impossivel calcular

    输入格式

    输入三个浮点数

    输出格式

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

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

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

    数据范围

    −1000.0≤a,b,c≤1000.0

    输入样例

    1
    10.0 20.1 5.1

    输出样例

    1
    2
    R1 = -0.29788
    R2 = -1.71212

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double a = sc.nextDouble(), b = sc.nextDouble(), c = sc.nextDouble();

    if (b * b - 4 * a * c < 0 || a == 0)
    System.out.printf("Impossivel calcular");
    else
    {
    double delta = b * b - 4 * a * c;
    double x1 = (- b + Math.sqrt(delta)) / (2 * a);
    double x2 = (- b - Math.sqrt(delta)) / (2 * a);

    System.out.printf("R1 = %.5f\nR2 = %.5f", x1, x2);
    }
    }
    }
  9. 平均数3

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

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

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

    1. 如果平均值为 7.0 或更高,则输出 Aluno aprovado.

    2. 如果平均值小于 5.0,则输出 Aluno reprovado.

    3. 如果平均值大于等于 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 即视为正确。

    数据范围

    0≤输入数据≤10.0

    输入样例1

    1
    2
    2.0 4.0 7.5 8.0
    6.4

    输出样例1

    1
    2
    3
    4
    5
    Media: 5.4
    Aluno em exame.
    Nota do exame: 6.4
    Aluno aprovado.
    Media final: 5.9

    输入样例2

    1
    2.0 6.6 4.0 9.0

    输出样例2

    1
    2
    Media: 4.9
    Aluno reprovado.

    输入样例3

    1
    9.0 4.0 8.5 9.0

    输出样例3

    1
    2
    Media: 7.3
    Aluno aprovado.


    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
    import java.util.Scanner;

    public class Main
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    double n1 = sc.nextDouble(), n2 = sc.nextDouble(), n3 = sc.nextDouble(), n4 = sc.nextDouble();

    double x = n1 * 0.2 + n2 * 0.3 + n3 * 0.4 + n4 * 0.1;
    System.out.printf("Media: %.1f", x);

    if (x >= 7.0)
    System.out.printf("Aluno aprovado.\n");
    else if (x < 5.0)
    System.out.printf("Aluno reprovado.\n");
    else
    {
    System.out.printf("Aluno em exame.\n");
    double y = sc.nextDouble();
    System.out.printf("Nota do exame: %.1f", y);
    double z = (x + y) / 2;
    if (z >= 5.0)
    System.out.printf("Aluno aprovado.\n");
    else
    System.out.printf("Aluno reprovado.\n");
    System.out.printf("Media final: %.1f", z);
    }
    }
    }