java期末练习(2)

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);
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值