Java语法要素练习

这个系列的编程挑战涵盖了从简单的算术运算到更复杂的几何计算,如圆的面积、两点间距离和三维图形体积。挑战涉及加法、乘法、求差、求积、平均数计算,以及工资、油耗、时间转换等实际应用问题。此外,还包括钞票组合、最大值寻找和距离计算等题目,旨在提升程序员解决实际问题的能力。
摘要由CSDN通过智能技术生成

目录

1.A + B

2.求差

3.圆的面积

4.平均数1

5.工资

6.油耗

7.两点间距离

8.钞票

9.时间转换

10.简单乘积

11.简单计算

12.球的体积

13.面积

14.平均数2

15.工资和奖金

16.最大值

17.距离

18.燃料消耗

19.钞票和硬币

20.天数转换


1.A + B

输入两个整数,求这两个整数的和是多少。

输入格式

输入两个整数A, B,用空格隔开

输出格式

输出一个整数,表示这两个数的和

数据范围

0 ≤ A, B10^{8}

样例输入:

3 4

样例输出:

7

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A = sc.nextInt();
        int B = sc.nextInt();
        System.out.print(A + B);
    }
}

2.求差

读取四个整数 A,B,C,D,并计算 (A×BC×D) 的值。

输入格式

输入共四行,第一行包含整数 A,第二行包含整数 B,第三行包含整数 C,第四行包含整数 D

输出格式

输出格式为 DIFERENCA = X ,其中 X 为 (A×BC×D)的结果。

数据范围

−10000 ≤ A, B, C, D ≤ 10000

输入样例:

5
6
7
8

输出样例:

DIFERENCA = -26

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] a = new int[4];
        for (int i = 0; i < 4; i++) {
            a[i] = sc.nextInt();
        }
        System.out.print("DIFERENCA = " + ((a[0] * a[1]) - (a[2] * a[3])));
    }
}

3.圆的面积

计算圆的面积的公式定义为 A=\piR^{2}

请利用这个公式计算所给圆的面积。

\pi 的取值为 3.14159。

输入格式

输入包含一个浮点数,为圆的半径 R

输出格式

输出格式为 A=X ,其中 X 为圆的面积,用浮点数表示,保留四位小数。

数据范围

0 < R < 10000.00

输入样例:

2.00

输出样例:

A=12.5664

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double R = sc.nextDouble();
        double X = 3.14159 * R * R;
        System.out.printf("A=%.4f", X);
    }
}

4.平均数1

读取两个浮点数 AB 的值,对应于两个学生的成绩。

请你计算学生的平均分,其中 A 的成绩的权重为 3.5,B 的成绩的权重为 7.5。

成绩的取值范围在 0 到 10 之间,且均保留一位小数。

输入格式

输入占两行,每行包含一个浮点数,第一行表示 A ,第二行表示 B

输出格式

输出格式为 MEDIA = X ,其中 X 为平均分,结果保留五位小数。

数据范围

0 ≤ A, B ≤ 10.0

输入样例:

5.0
7.1

输出样例:

MEDIA = 6.43182

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 X = (A * 3.5 + B * 7.5) / (3.5 + 7.5);
        System.out.printf("MEDIA = %.5f", X);
    }
}

5.工资

请编写一个程序,可以读取一名员工的员工编号,本月工作总时长(小时)以及时薪,并输出他的工资条,工资条中包括员工编号和员工月收入。

输入格式

输入包含两个整数和一个浮点数,分别代表员工编号,工作时长以及时薪。
每个数占一行。

输出格式

输出共两行,第一行格式为 NUMBER = X ,其中 X 为员工编号。

第二行格式为 SALARY = U$ Y ,其中 Y 为该员工月收入,保留两位小数。

数据范围

1 ≤ 员工编号 ≤ 100,
1 ≤ 总工作时长 ≤ 200,
1 ≤ 时薪 ≤ 50

输入样例:

25
100
5.50

输出样例:

NUMBER = 25
SALARY = U$ 550.00

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int W = sc.nextInt();
        double A = sc.nextDouble();
        double X = A * W;
        System.out.println("NUMBER = " + N);
        System.out.printf("SALARY = U$ %.2f", X);
    }
}

6.油耗

给定一个汽车行驶的总路程(km)和消耗的油量(l),请你求出汽车每消耗 1 升汽油可行驶多少公里路程。

输入格式

输入共两行,第一行包含整数 X ,表示行驶总路程。

第二行包含保留一位小数的浮点数 Y ,表示消耗的油量。

输出格式

输出格式为 M km/l ,其中 M 为计算结果,保留三位小数。

数据范围

1 ≤ X, Y10^{9}

输入样例:

500
35.0

输出样例:

14.286 km/l

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int X = sc.nextInt();
        double Y = sc.nextDouble();
        double M = X / Y;
        System.out.printf("%.3f km/l", M);
    }
}

7.两点间距离

给定两个点 P_{1}P_{2},其中 P_{1} 的坐标为 (x_{1}, y_{1}),P_{2} 的坐标为 (x_{2}, y_{2}),请你计算两点间的距离是多少。distance = \sqrt{(x_{2}-x_{1})^{2}+(y_{2}-y_{1})^{2}}

输入格式

输入共两行,每行包含两个双精度浮点数 x_{i}, y_{i},表示其中一个点的坐标。

输入数值均保留一位小数。

输出格式

输出你的结果,保留四位小数。

数据范围

10^{9}x_{i}, y_{i}10^{9}

输入样例:

1.0 7.0
5.0 9.0

输出样例:

4.4721

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double x1 = sc.nextDouble();
        double y1 = sc.nextDouble();
        double x2 = sc.nextDouble();
        double y2 = sc.nextDouble();
        double X = Math.sqrt(Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2));
        System.out.printf("%.4f", X);
    }
}

8.钞票

在这个问题中,你需要读取一个整数值并将其分解为多张钞票的和,每种面值的钞票可以使用多张,并要求所用的钞票数量尽可能少。

请你输出读取值和钞票清单。

钞票的可能面值有 100, 50, 20, 10, 5, 2, 1。

经过实验证明:在本题中,优先使用面额大的钞票可以保证所用的钞票总数量最少。

输入格式

输入一个整数 N

输出格式

参照输出样例,输出读取数值以及每种面值的钞票的需求数量。

数据范围

0 < N < 1000000

输入样例:

576

输出样例:

576
5 nota(s) de R$ 100,00
1 nota(s) de R$ 50,00
1 nota(s) de R$ 20,00
0 nota(s) de R$ 10,00
1 nota(s) de R$ 5,00
0 nota(s) de R$ 2,00
1 nota(s) de R$ 1,00

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int[] b = {100, 50, 20, 10, 5, 2, 1};
        System.out.println(a);
        for (int i = 0; i < 7; i++) {
            int n = a / b[i];
            System.out.println(n + " nota(s) de R$ " + b[i] + ",00");
            a -= n * b[i];
        }
    }
}

9.时间转换

读取一个整数值,它是工厂中某个事件的持续时间(以秒为单位),请你将其转换为小时:分钟:秒来表示。

输入格式

输入一个整数 N

输出格式

输出转换后的时间表示,格式为 hours:minutes:seconds

数据范围

1 ≤ N ≤ 1000000

输入样例:

556

输出样例:

0:9:16

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int[] t = {3600, 60, 1};
        int[] n = new int[3];
        for (int i = 0; i < 3; i++) {
            n[i] = a / t[i];
            a -= n[i] * t[i];
        }
        System.out.println(n[0] + ":" + n[1] + ":" + n[2]);
    }
}

10.简单乘积

读取两个整数值。

在此之后,计算它们的乘积并将结果存储在名为 PROD 的变量中。

输出结果如下例所示。

输入格式

共两行,每行包含一个整数。

输出格式

输出格式为 PROD = X ,其中 X 为乘积结果。

数据范围

输入的两个整数的绝对值均不超过 10000 。

输入样例:

3
9

输出样例:

PROD = 27

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println("PROD = " + a * b);
    }
}

11.简单计算

给定你两个产品的产品编号,产品数量以及产品单价。

请你计算买下两种产品一共需要花费多少钱。

输入格式

输入共两行。

每行包含两个整数以及一个浮点数,表示其中一件产品的产品编号,产品数量以及产品单价。

输出格式

输出格式为 VALOR A PAGAR: R$ X ,其中 X 为产品总价值,保留两位小数。

数据范围

1 ≤ 产品编号, 产品数量 ≤ 10000 ,
1.00 ≤ 产品单价 ≤ 10000.00

输入样例:

12 1 5.30
16 2 5.10

输出样例:

VALOR A PAGAR: R$ 15.50

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int a1 = sc.nextInt();
		int a2 = sc.nextInt();
		double a3 = sc.nextDouble();
		int b1 = sc.nextInt();
		int b2 = sc.nextInt();
		double b3 = sc.nextDouble();
		double s = a2 * a3 + b2 * b3;
		System.out.printf("VALOR A PAGAR: R$ %.2f", s);
	}
}

12.球的体积

给定你一个球体的半径 R,请你计算球体的体积。

计算球体的公式为 V=(4/3)∗\piR^{3}
\pi 取 3.14159 。

注意:有些语言中 (4/3) 无法得到 1.3333…,建议在公式中使用 (4/3.0)。

输入格式

输入一个整数 R

输出格式

输出格式为 VOLUME = X ,其中 X 为球体的体积,结果保留三位小数。

数据范围

1 ≤ R ≤ 2000

输入样例:

3

输出样例:

VOLUME = 113.097

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int R = sc.nextInt();
		double V = (4 / 3.0) * 3.14159 * Math.pow(R, 3);
		System.out.printf("VOLUME = %.3f", V);
	}
}

13.面积

给定三个浮点数 ABC

然后,计算如下图形的面积:

  1. 底边为 A,高为 C 的三角形。
  2. 半径 C 的圆。(\pi= 3.14159)
  3. 底边为 AB,高为 C 的梯形。
  4. 边长为 B 的正方形。
  5. 边长为 AB 的长方形。

输入格式

输入共一行,包含三个保留一位小数的浮点数 ABC

输出格式

输出共五行,形式如下所示:

第一行,格式为 TRIANGULO: X ,其中 X 为所求三角形面积。
第二行,格式为 CIRCULO: X ,其中 X 为所求圆形面积。
第三行,格式为 TRAPEZIO: X ,其中 X 为所求梯形面积。
第四行,格式为 QUADRADO: X ,其中 X 为所求正方形面积。
第五行,格式为 RETANGULO: X ,其中 X 为所求长方形面积。

所有答案保留三位小数。

数据范围

0 ≤ A, B, C ≤ 10000.0

输入样例:

3.0 4.0 5.2

输出样例:

TRIANGULO: 7.800
CIRCULO: 84.949
TRAPEZIO: 18.200
QUADRADO: 16.000
RETANGULO: 12.000

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		double A = sc.nextDouble();
		double B = sc.nextDouble();
		double C = sc.nextDouble();
		double X1 = A * C / 2;
		double X2 = 3.14159 * C * C;
		double X3 = (A + B) * C / 2;
		double X4 = B * B;
		double X5 = A * B;
		System.out.printf("TRIANGULO: %.3f\n", X1);
		System.out.printf("CIRCULO: %.3f\n", X2);
		System.out.printf("TRAPEZIO: %.3f\n", X3);
		System.out.printf("QUADRADO: %.3f\n", X4);
		System.out.printf("RETANGULO: %.3f", X5);
	}
}

14.平均数2

读取三个浮点数 ABC 的值,对应于三个学生的成绩。

请你计算学生的平均分,其中 A 的成绩的权重为 2,B 的成绩的权重为 3,C 的成绩的权值为 5。

成绩的取值范围在 0 到 10 之间,且均保留一位小数。

输入格式

输入共三行,每行包含一个浮点数,第一行表示 A ,第二行表示 B,第三行表示 C

输出格式

输出格式为 MEDIA = X ,其中 X 为平均分,结果保留一位小数。

数据范围

0 ≤ A, B, C ≤ 10.0

输入样例:

5.0
6.0
7.0

输出样例:

MEDIA = 6.3

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		double A = sc.nextDouble();
		double B = sc.nextDouble();
		double C = sc.nextDouble();
		double X = (A * 2 + B * 3 + C * 5) / (2 + 3 + 5);
		System.out.printf("MEDIA = %.1f", X);
	}
}

15.工资和奖金

请你编写一个程序,给定你一个销售人员的名字,底薪以及月销售额。

请你计算他的月收入是多少。

已知月收入等于底薪加 15% 的月销售额。

所有数据保留两位小数。

输入格式

输入第一行包含一个由大写字母构成的长度不超过 10 的字符串,表示销售人员的名字。
第二行包含一个浮点数,表示该人员的底薪。
第三行包含一个浮点数,表示该人员的月销售额。

输出格式

输出格式为 TOTAL = R$ XX 为该人员月收入。

数据范围

0 ≤ 底薪,月销售额 ≤ 10000.00

输入样例:

JOAO
500.00
1000.00

输出样例:

TOTAL = R$ 650.00

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		String name = sc.next();
		double A = sc.nextDouble();
		double B = sc.nextDouble();
		double X = A + 0.15 * B;
		System.out.printf("TOTAL = R$ %.2f", X);
	}
}

16.最大值

给定三个整数,请你找出它们中的最大值。

下列公式可能对你有所帮助:max(a,b) = \frac{(a+b+abs(a-b))}{2}

输入格式

输入占一行,包含三个整数。

输出格式

输出格式为 X eh o maior ,其中 X 为三个数中的最大值。

数据范围

1 ≤ 给定整数 ≤ 10^{9}

输入样例:

7 14 106

输出样例:

106 eh o maior

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt();
		int B = sc.nextInt();
		int C = sc.nextInt();
		int max;
		if (A > B)
			max = A;
		else
			max = B;
		if (C > max)
			max = C;
		System.out.print(max + " eh o maior");
	}
}

17.距离

两辆汽车在同一地点,同时,沿同一方向前进。

一辆车的速度为 60 km/h ,另一辆车的速度为 90 km/h 。

显然,快车与慢车的距离会不断拉开,每过一个小时(60 分钟),两车的距离就拉开 30 公里。

现在,告诉你两车之间的距离为 L 公里,请你求出两车已经行驶了多长时间?

输入格式

输入包含一个整数 L,表示两车之间的距离。

输出格式

输出格式为 X minutos ,其中 X 为已经行驶的时间,单位为分钟。

数据范围

1 ≤ L10^{9}

输入样例:

30

输出样例:

60 minutos

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int L = sc.nextInt();
		System.out.print(L * 2 + " minutos");
	}
}

18.燃料消耗

一辆汽车每行驶 12 公里需要消耗 1 升汽油,现在告诉你该汽车的行驶速度 Skm/h)和行驶时间 Th),请你计算该车在行驶过程中一共消耗了多少升汽油。

输入格式

输入共两行,第一行包含一个整数 T ,表示行驶时间(h)。

第二行包含一个整数 S ,表示行驶速度(km/h)。

输出格式

输出行驶期间的总油耗,结果保留三位小数。

数据范围

1 ≤ T, S10^{7}

输入样例:

10
85

输出样例:

70.833

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		long T = sc.nextLong();
		long S = sc.nextLong();
//注意:定义T,S用long或double,不能用int,因为相乘会超出int范围。
		double X = T * S / 12.0;
		System.out.printf("%.3f", X);
	}
}

19.钞票和硬币

读取一个带有两个小数位的浮点数,这代表货币价值。

在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的总数量尽可能少。

钞票的面值是 100, 50, 20, 10, 5, 2。

硬币的面值是 1, 0.50, 0.25, 0.10, 0.05 和 0.01。

经过实验证明:在本题中,优先使用面额大的钞票和硬币可以保证所用的钞票和硬币总数量最少。

输入格式

输入一个浮点数 N

输出格式

参照输出样例,输出每种面值的钞票和硬币的需求数量。

数据范围

0 ≤ N ≤ 1000000.00

输入样例:

576.73

输出样例:

NOTAS:
5 nota(s) de R$ 100.00
1 nota(s) de R$ 50.00
1 nota(s) de R$ 20.00
0 nota(s) de R$ 10.00
1 nota(s) de R$ 5.00
0 nota(s) de R$ 2.00
MOEDAS:
1 moeda(s) de R$ 1.00
1 moeda(s) de R$ 0.50
0 moeda(s) de R$ 0.25
2 moeda(s) de R$ 0.10
0 moeda(s) de R$ 0.05
3 moeda(s) de R$ 0.01

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		double N = sc.nextDouble();
		// 分离整数和小数
		int zhengshu = (int) N;
		int xiaoshu = (int) (N * 100 - zhengshu * 100);
		int[] NOTAS = { 100, 50, 20, 10, 5, 2, 1 };
		int[] MOEDAS = { 50, 25, 10, 5, 1 };
		String[] M = { "0.50", "0.25", "0.10", "0.05", "0.01" };
		System.out.println("NOTAS:");
		for (int i = 0; i < 7; i++) {
			int n = zhengshu / NOTAS[i];
			if (i == 6) {
				System.out.println("MOEDAS:");
				System.out.println(n + " moeda(s) de R$ " + NOTAS[i] + ".00");
			} else {
				System.out.println(n + " nota(s) de R$ " + NOTAS[i] + ".00");
			}
			zhengshu -= n * NOTAS[i];
		}
		for (int i = 0; i < 5; i++) {
			int n = (int) (xiaoshu / MOEDAS[i]);
			System.out.println(n + " moeda(s) de R$ " + M[i]);
			xiaoshu -= n * MOEDAS[i];
		}
	}
}

20.天数转换

读取对应于一个人的年龄(以天为单位)的整数值,并转化为年,月和日表示方式输出,年、月、日分别对应 ano(s), mes(es), dia(s)

注意:为了方便计算,假设全年 365 天,每月 30 天。 数据保证,不会出现 12 个月和几天的情况,例如 360, 363 或 364 。

输入格式

输入一个整数 N

输出格式

参照输出样例,输出转换后的天数表达。

数据范围

1 ≤ N ≤ 1000000

输入样例:

400

输出样例:

1 ano(s)
1 mes(es)
5 dia(s)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = {365, 30, 1};
        int[] b = new int[3];
        for (int i = 0; i < 3; i++) {
            b[i] = n / a[i];
            n -= b[i] * a[i];
        }
        System.out.print(b[0] + " ano(s)\n" + b[1] + " mes(es)\n" + b[2] + " dia(s)");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再见以前说再见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值