1. 字符串加密
输入一个原始字符串(长度小于80),然后输入一个5位的数字字符串作为加密密钥,对原始字符串中的每个字符根据其位置(对5取模)变换为加上数字字符串中的数字的字符。如输入原始字符串student,然后输入5位的加密数字12345,因此:
原始字符 加密数字 变换后的字符
s 1 t
t 2 v
u 3 x
d 4 h
e 5 j
n 1 o
t 2 v
加密后的字符串位:tvxhjov
输入格式:
第一个输入一个原始字符串
第二行输入一个5位用来加密的数字字符串
输出格式:
加密后的字符串
import java.util.Scanner;
/*
time: 2024/12/5 9:45
*/
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String num = sc.nextLine();
char[] CharArray = str.toCharArray();
String a = "";
for (int i = 0; i < CharArray.length; i++) {
a += (char) (CharArray[i] + num.charAt(i % 5) - '0');
}
System.out.println(a);
}
}
2. 浮点数的精确计算
输入若干对浮点数,对每对浮点数输出其精确的和与乘积。
以下输入样例为两对浮点数输入,实际上有可能有不定对数的浮点数需要输入计算。
注1:直接使用double类型数据进行运算,无法得到精确值。
注2:输出时直接调用BigDecimal的toString方法。
输入样例:
解释
69.1
0.02
1.99
2.01
输出样例:
69.12
1.382
4.00
3.9999
import java.math.BigDecimal;
import java.util.Scanner;
/*
time: 2024/12/7 10:18
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
BigDecimal first = new BigDecimal(sc.next());
BigDecimal two = new BigDecimal(sc.next());
BigDecimal sum = first.add(two);
BigDecimal multiply = first.multiply(two);
System.out.println(sum);
System.out.println(multiply);
}
}
}
3. 学投资
小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。
输入格式:
M P N
输出格式:
复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)
输入样例:
解释
10000 0.2 3
输出样例:
解释
17280 16000 1280
import java.util.Scanner;
/*
time: 2024/12/7 10:30
*/
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(); // 本金
double b = sc.nextDouble(); // 利息
int c = sc.nextInt(); // 年份
// 复利
long income = Math.round(a * Math.pow(b+1, c));
// 非复利
long income1 = Math.round(a*b*c + a);
System.out.println(income+" "+income1+" "+(income-income1));
}
}
4. 勾股定理
输入格式:
输入有若干行,每行有2个数值,分别表示直角三角形的两个直角边长度,用空格分隔。
输出格式:
对应每行输入数据,输出直角三角形的斜边长度,结果保留2位小数。
输入样例
3 4
2.3 3
5 6
10 12
输出样例:
在这里给出相应的输出。例如
5.00
3.78
7.81
15.62
代码
import java.util.Scanner;
/*
time: 2024/12/7 10:37
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = Math.sqrt(a*a + b*b);
System.out.printf("%.2f\n",c);
}
}
}
5.计算飞行员到最近机场的距离
当飞机上的仪器出故障时,飞行员常常得估计他们到最近机场的距离。他们的方法是利用他们的高度和他们和机场之间的角度的估计。编写一个程序,帮助飞行员进行计算。
程序应以高度和角度作为输入,输出估计距离。公式为:距离distance=高度hight/ tan(degree)。
说明:tan(degree)为角度为degree的正切值。
提示:在JAVA中,Math类的静态方法tan(double degree),用于计算弧度为degree的角度的正切值。
在C语言中,函数名: tan, 头文件:<math.h>, 函数原型: double tan(double x); 功能: 正切函数,参 数:double x 为要操作的弧度,返回值:返回x弧度的正切值。
输入格式:
输入数据有多行。
每行为一组输入,分别是高度、角度。角度介于(0,PI/2)区间。
输出格式:
对应每行输入,求飞行员到机场的距离,保持2位小数。
import java.util.Scanner;
/*
time: 2024/12/7 10:46
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
double height = sc.nextDouble();
double jaodu = sc.nextDouble();
double distinct = height / Math.tan(jaodu);
System.out.printf("%.2f\n",distinct);
}
}
}