美文网首页bugstac...
《Java语言程序设计(基础篇)》第二章复习题和编程练习题

《Java语言程序设计(基础篇)》第二章复习题和编程练习题

作者: 夜夜月 | 来源:发表于2018-08-27 22:08 被阅读2679次

    复习题

    2.1 指出并修改以下代码中的错误:

    public class Test {
        public void main(string[] args) {
        double i = 50.0;
        double k = i + 50.0;
        double j = k + 1;
        
        System.out.println("j is " + j + " and
            k is " + k);
        }
    }
    

    缺少关键字 static,String首字符应该大写,双引号字符串无法在代码中换行。修正如下:

    public class Test {
        public static void main(String[] args) {
            double i = 50.0;
            double k = i + 50.0;
            double j = k + 1;
    
            System.out.println("j is " + j + " and k is " + k);
        }
    }
    

    2.2 如何编写一条语句,让那个用户从键盘输入一个双精度值?在执行下面代码的时候,如果你输入5a,将发生什么?

    double radius = input.nextDouble();
    
    Scanner input = new Scanner(System.in)
    double d = input.nextDouble()
    

    输入5a将报错,类型有误

    2.3 下面两个import语句之间有什么执行的不同吗?

    import java.util.Scanner;
    import java.util.*;
    

    前者只单独引入了java.util下面的Scanner类。
    后者将java.util下的所有类都进行了引入。

    2.4 以下标识符哪些是合法的?哪些是Java的关键字?

    miles(合法), Test(合法), a++(不合法), --a(不合法), 4#R(不合法), $4(合法), #44(不合法), apps(合法)
    class(关键字), public (关键字),int(关键字), x(合法), y(合法), radius(合法)

    2.5 请指出并修改下面代码中的错误:

    public class Test {
        public static void main(String[] args) {
            int i = k + 2;
            System.out.println(i);
        }
    }
    

    k没有进行声明,没有初始值,修正如下

    public class Test {
        public static void main(String[] args) {
            int k = 1;
            int i = k + 2;
            System.out.println(i);
        }
    }
    

    2.6 请指出并修改下面代码中的错误:

    public class Test {
        public static void main(String[] args) {
            int i = j = k = 2;
            System.out.println(i + " " + j + " " + k);
        }
    }
    

    j和k没有进行声明,修正如下:

    public class Test {
        public static void main(String[] args) {
            int i , j , k;
            i = j = k = 2;
            System.out.println(i + " " + j + " " + k);
        }
    }
    

    2.7 使用常量的好处是什么?声明一个int类型的常量SIZE,并且值为20。

    好处如下:

    • 不必重复输入同一个值
    • 如果必须修改常量值,只需在源代码中的一个地方做改动
    • 给常量赋一个描述性名字会提高程序易读性
    final int SIZE = 20;
    

    2.8 类名、方法名、常量和变量的命名习惯是什么?按照Java的命名习惯,以下哪些项可以作为常量、方法、变量或者一个类?

    MAX_VALUE(常量), Test(类), read(变量), readDouble(方法)

    2.9 将以下算法翻译成Java代码。

    第一步:声明一个双精度型变量miles,初始值为100.
    第二步:声明一个双精度型常量KILOMETERS_PER_MILE,初始值为1.609。
    第三步:声明一个双精度型变量kilometers,将miles和KILOMETERS_PER_MILE相乘,并且将结果赋值给kilometers。
    第四步:在控制台显示kilometers。
    在第四步之后,kilometers是多少?

    public class ComputeAreaWithConstant {
        public static void main(String[] args) {
            double miles = 100.0;
            final double KILOMETERS_PER_MILE = 1.609;
            double kilometers = miles * KILOMETERS_PER_MILE;
            System.out.println(kilometers);
        }
    }
    

    显示160.9

    2.10 找到最大和最小的byte, short, int ,long , float 以及double。这些数据类型中,哪个需要的内存最小?

    最小的byte: -2^7
    最大的byte: 2^7 - 1
    最小的short: -2^15
    最大的short: 2^15 - 1
    最小的int: -2^31
    最大的int: 2^31 - 1
    最小的long: -2^63
    最大的long: 2^63 - 1
    最小的float: -3.4028235E+38
    最大的float: 3.4028235E+38
    最小的double:-1.7976931348623157E+308
    最大的double: 1.7976931348623157E+308
    byte内存最小。

    2.11 给出以下求余计算的结果。

    56 % 6 = 2
    78 % -4 = 2
    -34 % 5 = -4
    -34 % -5 = -4
    5 % 1 = 1
    1 % 5 = 0

    假设今天是周二,100天后将是周几?

    (2 + 100) % 7 = 4
    周四

    2.13 25/4的结果是多少? 如果你希望得到浮点数结果,如何重写表达式。

    • 6
    • 25.0 / 4

    2.14 给出以下代码的结果:

    System.out.println(2 * ( 5 / 2 + 5 / 2));
    System.out.println(2 * 5 / 2 + 5 / 2);
    System.out.println(2 * ( 5 / 2));
    System.out.println(2 * 5 / 2);
    
    • 8
    • 7
    • 4
    • 5

    2.15 下面的语句正确吗?如果正确的话,给出输出。

    System.out.println("25 / 4 is " + 25 / 4); 
    System.out.println("25 / 4.0 is " + 25 / 4.0);
    System.out.println(“3 * 2 / 4 is " + 3 * 2 / 4);
    System.out.println("3.0 * 2 / 4 is " + 3.0 * 2 / 4);
    
    • 25 / 4 is 6
    • 25 / 4.0 is 6.25
    • 3 * 2 / 4 is 1
    • 3.0 * 2 / 4 is 1.5

    2.16 写一个显示2^3.5的计算结果的语句。

    a = Math.pow(2, 3.5)
    

    2.17 假设m和r是整数。编写一个java表达式,使得mr^2可以得到一个浮点数类型的结果。

    double result = m * r * r;
    

    2.18 在float和doubel类型的变量中保存了多少个精确位?

    • float保存了7到8位
    • double保存了15到17位

    2.19 以下哪些是正确的浮点数类型直接量?

    12.3(是), 12.3e+2(是), 23.4e-2(是), -334.4(是), 20.5(是), 39F(不是), 40D(不是)

    2.20 以下哪些和52.534是等价的?

    5.2534e+1, 0.52534e+2, 525.34e-1, 5.2534e+0
    前三个等价,最后一个不等价

    2.21 以下哪些是正确的直接量?

    5_2534e+1, 2534, 5_2, 5_
    前三个正确,最后一个错误

    2.22 如何在java中表达以下算术表达式?

    直接写答案:

    • 4 / 3 * (r + 34) - 9 * (a + b * c) + (3 + d * (2 + a)) / (a + b * d)
    • 5.5 * Math.pow((r + 2.5), (2.5 + 1))

    2.23 如何获得当前的秒,分钟以及小时数?

    先获取当前时间戳,再进行计算。

    2.24 给出以下代码运行的结果:

    double a = 6.5;
    a += a + 1;
    System.out.println(a);
    a = 6;
    a /= 2;
    System.out.println(a);
    
    • 14
    • 3

    2.25 下面的说法那个为真?

    a. 任何表达式都可以用作一个语句。 真
    b. 表达式x++可以用作一个语句。真
    c. 语句x = x + 5 也是一个表达式。真
    d. x = y = x = 0是非法的。假

    2.26 给出以下代码的输出:

    int a = 6;
    int b = a++;
    System.out.println(a); // 7
    System.out.println(b); // 6
    a = 6;
    b = ++a;
    System.out.println(a); // 7
    System.out.println(b); // 7
    

    2.27 在一次计算中,各种类型的数值可以一起使用吗?

    可以

    2.28 将一个doubel类型数值显式类型转换为int时,是如何处理double值的小数部分的?类型转换改变被类型转换的变量吗?

    • 直接去除小数部分
    • 不改变

    2.29 给出以下代码片段的输出:

    float f =12.5F;
    int i = (int)f;
    System.out.println("f is " + f); // f is 12.5
    System.out.println("i is " + i); //  i is 12
    

    2.30 题目有误

    2.31 给出以下代码的输出:

    double amount = 5;
    System.out.println(amount / 2); // 2.5
    System.out.println(5 / 2); // 2
    

    2.32 如何编写下面的数学表达式的代码

    (-b + Math.pow((b * b - 4 * a * c), 0.5)) / (2 * a)
    

    2.33 给出输入值为1.99的输出

    Your amount 1.99 consists of
    1 dollars
    3 quarters
    2 dimes
    0 nickels
    4 pennies

    2.34 可以讲一个变量声明为int类型,之后重新将其声明为double类型吗?

    不可以

    2.35 什么是整数溢出?浮点数操作会导致溢出吗?

    • 当一个变量被赋予一个过大的值,以至无法存储该值, 这称为溢出。
    • 会,很小的话,会引起向下溢出。

    2.36 溢出会导致一个运行时错误吗?

    2.37 什么是取整错误?整数操作会导致取整错误吗?浮点数操作会导致取整错误吗?

    • 取整错误,也称为凑数错误,实在计算得到的数字的近似值和确切的算术值之间的不同。
    • 不会

    编程练习题

    2.1 (将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换成为华氏温度,并且显示结果。转换公式: 华氏温度 = (9/5) * 摄氏温度 + 32

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_1 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.print("请输入摄氏温度,例如 37.8: ");
            double celsius = input.nextDouble();
            double fahrenheit = (9.0 /5 ) * celsius + 32;
            System.out.println("摄氏温度" + celsius + "转换成华氏温度为 " + fahrenheit);
        }
    }
    
    请输入摄氏温度,例如 37.8: 43
    摄氏温度43.0转换成华氏温度为 109.4
    

    2.2 (计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱的体积:

    • 面积=半径* 半径 * p
    • 体积= 面积*高
    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_2 {
        public static void main(String[] args) {
            final double PI = 3.14159;
            Scanner input = new Scanner(System.in);
            System.out.print("请输入圆柱体的半径: ");
            double raidus = input.nextDouble();
    
            System.out.print("请输入圆柱体的高: ");
            double length = input.nextDouble();
            double area = raidus * raidus * PI;
            double volume = area * length;
            System.out.println("圆柱体的面积是:" + area);
            System.out.println("圆柱体的体积是:" + volume);
        }
    }
    
    请输入圆柱体的半径: 5.5
    请输入圆柱体的高: 12
    圆柱体的面积是:95.0330975
    圆柱体的体积是:1140.39717
    

    2.3 (将英尺转换为米)编写程序,读入英尺数,将其转换为米数并显示结果。一英尺等于0.305米。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_3 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.print("请输入英尺数: ");
            double pounds = input.nextDouble();
            System.out.println(pounds + " 英尺数转换成米数是 " + pounds * 0.305);
        }
    }
    
    请输入英尺数: 16.5
    16.5 英尺数转换成米数是 5.0325
    

    2.4 (将磅转换为千克)编写程序,将磅数转换为千克数。程序提示用户输入磅数,然后转换成千克并显示结果。一磅等于0.454千克。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_4 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.print("请输入磅数: ");
            double pounds = input.nextDouble();
            System.out.println(pounds + " 磅数转换成千克数是 " + pounds * 0.454);
        }
    }
    
    请输入磅数: 55.5
    55.5 磅数转换成千克数是 25.197
    

    *2.5 (财务应用程序:计算小费)编写一个程序,读入一笔费用与酬金率,计算酬金和总钱数。例如, 如果用户输人 10 作为费用,15%作为酬金率,计算结果显示酬金为 1.5, 总费用为11.5。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_5 {
        public static void main(String[] args) {
            Scanner in  = new Scanner(System.in);
            System.out.print("请输入费用和酬金率: ");
            double subtotal = in.nextDouble();
            double rate = in.nextDouble() / 100;
            double gratuity = subtotal * rate;
            double total = gratuity + subtotal;
            System.out.println("酬金是:" + gratuity + " 总费用是: " + total);
        }
    }
    
    请输入费用和酬金率: 10 15
    酬金是:1.5 总费用是: 11.5
    

    **2.6 (求一个整數各位數的和)编写程序,读取一个在 0 和 1000 之间的整数,并将该整数的各位数字相加。例如:整数是 932 , 各位数字之和为 14。

    提示:利用操作符 X 分解数字,然后使用操作符 / 去掉分解出来的數字。例如:932%10=2 ,932/10=93。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_6 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入一个0到1000之间的整数: ");
            int number = in.nextInt();
            int number_1 = number % 10;
            int number_2 = number / 10 % 10;
            int number_3 = number_2 % 10;
            int sum = number_1 + number_2 + number_3;
            System.out.println("各个数字之和为: " + sum);
        }
    }
    
    请输入一个0到1000之间的整数: 999
    各个数字之和为: 27
    

    *2.7 (求出年教)编写程序,提示用户输入分钟数(例如十亿)然后显示这些分钟代表多少年和多少天。 为了简化问题,假设一年有 365天。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_7 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入分钟数: ");
            int minutes = in.nextInt();
            int days = minutes / 60 / 24;
            int years = days / 365;
            System.out.println(minutes + "分钟代表" + years + "年加上" + (days % 365)+ "天");
        }
    }
    
    请输入分钟数: 1000000000
    1000000000分钟代表1902年加上214天
    

    *2.8(当前时间)程序清单2-7给出了显示当前格林威治时间的程序。修改这个程序,提示用户输入相 对于 GMT 的时区偏移量,然后显示在这个特定时区的时间。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_8 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入时区偏移量:");
            int timeZoneOffset = in.nextInt();
    
            // Obtain the total milliseconds since midnight, Jan 1, 1970
            long totalMilliseconds = System.currentTimeMillis();
    
            // Obtain the total seconds since midnight , Jan 1, 1970
            long totalSeconds = totalMilliseconds / 1000;
    
            // Compute the current second in the minute in the hour
            long currentSecond = totalSeconds % 60;
    
            // Obtain the total minutes
            long totalMinutes = totalSeconds / 60;
    
            // Compute the current minute in the hour
            long currentMinute = totalMinutes % 60;
    
            // Obtain the total hours
            long totalHours = totalMinutes / 60;
    
            // Compute the current hour
            long currentHour = (totalHours + timeZoneOffset) % 24;
    
            // Display results
            System.out.println("The current time is " + currentHour + ":"
                    + currentMinute + ":" + currentSecond);
    
        }
    }
    
    请输入时区偏移量:
    -12
    The current time is 20:13:22
    

    2.9 (物理:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,如下式所示:a = (v1-v0)/t 编写程序,提示用户输入以米/秒为单位的起始速度 V0,以米/秒为单位的终止速度 V1,及以秒为单位的时间段t,最后显示平均加速度。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_9 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入起始速度,终止速度,时间段(秒单位):");
            double v0 = in.nextDouble();
            double v1 = in.nextDouble();
            double t = in.nextDouble();
            System.out.println("平均加速度是:" + ((v1 - v0) / t) + "米每秒");
        }
    }
    
    请输入起始速度,终止速度,时间段(秒单位):
    5.5 50.9 4.5
    平均加速度是:10.088888888888889米每秒
    

    2.10 (科学:计算能量)编写程序,计算将水从初始温度加热到最终温度所需的能量。程序应该提示 用户输入水的重量(以千克为单位 ),以及水的初始温度和最终温度。计算能量的公式是:Q = M x (最终温度-初始温度) x 4184,这里的 M 是以千克为单位的水的重量,温度以摄氏度为单位,而能能量Q以焦耳为单位。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_10 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入水的重量:");
            double amountOfWater = in.nextDouble();
            System.out.println("请输入水的初始温度:");
            double initialTemperature = in.nextDouble();
            System.out.println("请输入水的最终温度:");
            double finalTemperature = in.nextDouble();
            double q = amountOfWater * (finalTemperature - initialTemperature) * 4184;
            System.out.println("能量需要:" + q);
        }
    }
    
    请输入水的重量:
    55.5
    请输入水的初始温度:
    3.5
    请输入水的最终温度:
    10.5
    能量需要:1625484.0
    

    2.11 (人口统计)重写编程练习题1.11,提示用户输人年数,然后显示这个年数之后的人口值。将编程练习题 1.11中的提示用于这个程序。人口数应该类型转换为一个整数。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_11 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入年数:");
            int years = in.nextInt();
            System.out.println(312032486 + (years * 365 * 24 * 60 * 60 / 7) - (years * 365 * 24 * 60 * 60 / 13) + (years * 365 * 24 * 60 * 60 / 45));
        }
    }
    
    请输入年数:5
    325932970
    

    2.12 (物理:求出跑道长度)假设一个飞机的加速度是 a 而起飞速度是 v, 那么可以使用下面的公式计算出飞机起飞所需的最短跑道长度:跑道长度 = v^2 / 2a,编写程序,提示用户输人以米 / 秒( m/s) 为单位的速度 v 和以米 / 秒的平方(m/s^2) 为单位的加速度 a, 然后显示最短跑道长度。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_12 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入速度和加速度:");
            double speed = in.nextDouble();
            double accdleration = in.nextDouble();
            double length = Math.pow(speed, 2) / (2 * accdleration);
            System.out.println("最短跑道长度为:" + length);
        }
    }
    
    请输入速度和加速度:60. 3.5
    最短跑道长度为:514.2857142857143
    

    **2.13 (财务应用程序:复利值)假设你每月向银行账户存100美元,年利率为5%,那么每月利率是 0.05/12=0.004 17。

    • 第一个月之后,账户上的值就变成:
      100 * (1 + 0.00417) = 100.417
    • 第二个月之后,账户上的值就变成:
      (100 + 100.417) * (1 + 0.00417) = 201.252
    • 第三个月之后,账户上的值就变成:
      (100 + 201.252) * (1 + 0.00417) = 302.507

    依此类推。编写程序显示六个月后账户上的钱数。(在编程练习题 5.30中,你将使用循环来简化这里的代码,并能显示任何一个月之后的账户值。)

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_13 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入你的每月存款金额:");
            double amount = in.nextDouble();
            double rateOfMonth = 1 + 0.00417;
            double totalOfMonth1 = amount * rateOfMonth;
            double totalOfMonth2 = (amount + totalOfMonth1) * rateOfMonth;
            double totalOfMonth3 = (amount + totalOfMonth2) * rateOfMonth;
            double totalOfMonth4 = (amount + totalOfMonth3) * rateOfMonth;
            double totalOfMonth5 = (amount + totalOfMonth4) * rateOfMonth;
            double totalOfMonth6 = (amount + totalOfMonth5) * rateOfMonth;
            System.out.println("6个月后账上余额为:" + totalOfMonth6);
        }
    }
    
    请输入你的每月存款金额:100
    6个月后账上余额为:608.8181155768638
    

    2.14 (医疗应用程序:计算 BMI)身体质量指数(BMI)是对体重的健康测量。它的值可以通过将体 重(以公斤为单位 )除以身高(以米为单位)的平方值得到。编写程序,提示用户输人体重(以 磅为单位)以及身髙(以英寸为单位),然后显示 BMI。注意:一磅是0.4S3S9237公斤,一英 寸是 0.0254 米。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_14 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入你的体重(单位:磅):");
            double weight = in.nextDouble() * 0.45359237;
            System.out.print("请输入你的身高(单位:英尺):");
            double height = in.nextDouble() * 0.0254;
            System.out.println("BMI 是 " + (weight / (height * height)));
        }
    }
    
    请输入你的体重(单位:磅):95.5
    请输入你的身高(单位:英尺):50
    BMI 是 26.857257942215885
    

    2.15 (几何:两点间距离)编写程序,提示用户输人两个点(x1,y1)和(x2,y2),然后显示两点间的距离。计算两点间距离的公式:(x2-x1)^2 + (y2-y1)^2 结果的平方根,注意:可以使用Math.pow(a,0.5) 来计算。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_15 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入x1 和 y1的值:");
            double x1 = in.nextDouble();
            double y1 = in.nextDouble();
            System.out.print("请输入x2 和 y2的值:");
            double x2 = in.nextDouble();
            double y2 = in.nextDouble();
            double distance = Math.pow(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2), 0.5);
            System.out.println("两点之间的距离是:" + distance);
        }
    }
    
    请输入x1 和 y1的值:1.5 -3.4
    请输入x2 和 y2的值:4 5
    两点之间的距离是:8.764131445842194
    

    2.16 (几何:六边形面积)编写程序,提示用户输人六边形的边长,然后显示它的面积。公式是:3 * 3的平方根 / 2 * s^2。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_16 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入6边型的边长:");
            double s = in.nextDouble();
            double area = 3 * Math.pow(3, 0.5) / 2 * Math.pow(s, 2);
            System.out.println("6边型的面试是:" + area);
        }
    }
    
    请输入6边型的边长:5.5
    6边型的面试是:78.59180539343781
    

    2.17 (科学:风寒温度)外面到底有多冷?只有温度是不足以提供答案的,包括风速、相对湿度以 及阳光等其他的因索在确定室外是否寒冷方面都起了很重要的作用。200丨年,国家气象服务(NWS) 利用温度和风速计算新的风寒温度,来衡量寒冷程度。计算公式如下所示:twc = 35.74 + 0.6215ta - (35.75 * v)^0.16 + (0.4275 * ta)^0.16,这里的ta是室外的温度,以华氏摄氏度为单位,而 v 是速度,以每小时英里数为单位。twc是风寒温度。该公式不适用于风速低于2mph,或温度在-58F以下或41F以上的情况。编写程序,提示用户输入在-58F和41F之间的度数,同时大于或等于2的风速,然后显 示风寒温度。使用 Math.pow(a.b)来计算v^0.16。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_17 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入-58F和41F之间的数字:");
            double fahrenheit = in.nextDouble();
            System.out.println("请输入大于等于2的数字:");
            double speed = in.nextDouble();
            double index = 35.74 + 0.6215 * fahrenheit - 35.75 * Math.pow(speed, 0.16)
                    + 0.4275 * fahrenheit * Math.pow(speed, 0.16);
            System.out.println("风寒温度是:" + index);
        }
    }
    
    请输入-58F和41F之间的数字:
    5.3
    请输入大于等于2的数字:
    6
    风寒温度是:-5.567068455881625
    

    2.18 (打印表格)编写程序,显示下面的表格。将浮点数值类型转换为整数。

    a b pow(a, b)
    1 2 1
    2 3 8
    3 4 81
    4 5 1024 5 6 15625

    package com.levelksk.chapter_2.training;
    
    public class Training2_18 {
        public static void main(String[] args) {
            System.out.println("a    b    pow(a, b)");
            System.out.println("1    2    " + (int)Math.pow(1, 2));
            System.out.println("2    3    " + (int)Math.pow(2, 3));
            System.out.println("3    4    " + (int)Math.pow(3, 4));
            System.out.println("4    5    " + (int)Math.pow(4, 5));
            System.out.println("5    6    " + (int)Math.pow(5, 6));
        }
    }
    

    *2.19 (几何:三角形的面积)编写程序,提示用户输人三角形的三个点(x1,y1)、(x2,y2) 和 (x3,y3), 然后显示它的面积。计算三角形面积的公式是:

    • s=(边1+边2+边3)/2
    • 面积: (s * (s - 边1)(s - 边2)(s - 边3))^0.5
    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_19 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入三角形三个点的坐标: ");
            double x1 = in.nextDouble();
            double y1 = in.nextDouble();
            double x2 = in.nextDouble();
            double y2 = in.nextDouble();
            double x3 = in.nextDouble();
            double y3 = in.nextDouble();
            double s1 = Math.pow(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2), 0.5);
            double s2 = Math.pow(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2), 0.5);
            double s3 = Math.pow(Math.pow(x1 - x3, 2) + Math.pow(y1 - y3, 2), 0.5);
            double s = (s1 + s2 +s3) / 2;
            double area = Math.pow(s * (s - s1) * (s - s2) * (s - s3), 0.5);
            System.out.println("三角形的面积是: " + area);
        }
    }
    
    请输入三角形三个点的坐标: 
    1.5 -3.4 4.6 5 9.5 -3.4
    三角形的面积是: 33.600000000000016
    

    *2.20 (财务应用程序:计算利息)如果知道收支余额和年利率的百分比,就可以使用下面的公式计算下个月要支付的利息额: 利息额 = 收支余额 x (年利率 / 1200),编写程序,读取收支余额和年百分利率,显示两个版本的下月利息。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_20 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入收支余额和年利率:");
            double balance = in.nextDouble();
            double rate = in.nextDouble();
            System.out.println("下月利息是:" + balance * (rate / 1200));
        }
    }
    
    请输入收支余额和年利率:
    1000 3.5
    下月利息是:2.916666666666667
    

    2.21 (财务应用:计算未来投资值)编写程序,读取投资总额、年利率和年数,然后使用下面的公式显示未来投资金顛:未来投资金额 = 投资总额 X ( 1 + 月利率)^年数*12,例如:如果输入的投资金额为 1000, 年利率为 3.25%, 年数为1, 那么未来投资额为 1032.98。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_21 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入投资总额:");
            double amount = in.nextDouble();
            System.out.print("请输入月利率:");
            double rate = in.nextDouble() / 100;
            System.out.print("请输入投资年数:");
            double years = in.nextDouble();
            double total = 1000 * Math.pow(1 + rate, years * 12);
            System.out.println("未来投资金额是:$" + total);
        }
    }
    
    请输入投资总额:1000.56
    请输入月利率:4.5
    请输入投资年数:1
    未来投资金额是:$1695.8814327678656
    

    2.22 ( 财务应用:货币单位)改写程序淸单 2-10, 解决将 double 型值转换为 int 型值时可能会造成精度损失的问题。输入的输入值是一个整数,其最后两位代表的是美分币值。例如:1156 就表示的是 11美元 S6 美分。

    
    

    2.23 (驾驶费用)编写一个程序,提示用户输入驾驶的距离、以每加仑多少英里的汽车燃油性能,以及每加仑的价格,然后显示旅程的费用。

    package com.levelksk.chapter_2.training;
    
    import java.util.Scanner;
    
    public class Training2_23 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("请输入行驶的距离:");
            double distance = in.nextDouble();
            System.out.print("请输入每加仑燃油可以行使的距离:");
            double miles = in.nextDouble();
            System.out.print("请输入每加仑的价格:");
            double price = in.nextDouble();
            System.out.println("旅程的总费用是:" + distance / miles * price);
        }
    }
    
    
    

    相关文章

      网友评论

        本文标题:《Java语言程序设计(基础篇)》第二章复习题和编程练习题

        本文链接:https://www.haomeiwen.com/subject/sjwbiftx.html