Java题库练习2

多分支与嵌套

第一关:选择

选择题,细心即可

第二关:判断身体状况

根据提示,在右侧编辑器 Begin-End 区域补充代码,根据输入的身高(米)体重(千克)的值, 判输出相应的身体状况。具体要求如下:

  • 从后台接收两个double类型的数值,分别表示体重(千克)和身高(米);

  • 输入需要进行校验,体重合法范围:0 ~ 200(包括 200 不包括 0),身高合法范围:0 ~ 3(包括 3 不包括 0)。如果输入不合法,输出提示信息illegal,末尾不换行;

  • 当输入合法时,输出身体状况,偏瘦时输出A,正常时输出B,超重时输出C,过胖时输出D,末尾无换行。

package step1;
import java.util.Scanner;

public class BMI {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        double height = input.nextDouble();
        double weight = input.nextDouble();

        // 判断身体状况。
        /********* Begin *********/
        double bmi = 0;
        if((height > 0 && height <= 3)&&(weight > 0 && height < 200)){
            bmi = weight/(height*height);  //公式
            if(bmi < 18.5) System.out.print('A');
            else if (bmi >= 18.5 && bmi < 25.0) System.out.print('B');
            else if(bmi >= 25.0 && bmi < 30.0) System.out.print('C');
            else if(bmi >= 30.0) System.out.print('D');
        }
        else System.out.print("illegal");
        /********* End *********/
    }
}

第三关:彩票游戏

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现一个彩票游戏,具体要求如下:

  • 首先输入一个int类型的整数作为中奖号码,然后输入一个int类型的整数作为彩票号码,这两个数都是 3 位数;

  • 判断中奖情况,并输出相应的奖金金额。如果一等奖则输出10000,二等奖则输出3000,三等

    奖则输出200,没中奖则输出0,输出末尾不换行。

思路:

1. 一等奖就是相等的时候

2. 二等奖是数字相等,但顺序不同。

3. 三等奖是有数字相同就行。

那么,记录prize和lottery的三个数字(取模,用数组a[3],b[3]存储);然后排序(无法直接使用sort函数,所以写了冒泡排序),那么,如果是二等奖,排序后的数组应的值一一对应(比如,427和742排完序都是247);三等奖要将每个数字对应的情况都列出来。

代码如下:

package step2;
import java.util.Scanner;

public class Lottery {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int prize = input.nextInt();
        int lottery = input.nextInt();
        input.close();

        // 请在指定位置填写代码。
        /********* Begin *********/
        int[] a=new int[3],b=new int[3];
        a[0] = prize/100; a[1] = (prize%100)/10; a[2] = prize%10;
        b[0] = lottery/100; b[1] = (lottery%100)/10; b[2] = lottery%10;
        for(int n=1;n<a.length;n++){  //冒泡排序,从小到大
            for(int i=0;i<a.length-n;i++){
                int x=a[i];
                int y=a[i+1];
                if(x>y){
                    a[i]=y;
                    a[i+1]=x;
                }
            }
        }
        for(int n=1;n<b.length;n++){  //冒泡排序,从小到大
            for(int i=0;i<b.length-n;i++){
                int x=b[i];
                int y=b[i+1];
                if(x>y){
                    b[i]=y;
                    b[i+1]=x;
                }
            }
        }
        if(prize==lottery)  //一等奖
            System.out.print("10000");
        else if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2])   //二等奖
            System.out.println("3000");
        else if(a[0]==b[0]||a[0]==b[1]||a[0]==b[2]||a[1]==b[0]||a[1]==b[1]||a[1]==b[2]||a[2]==b[0]||a[2]==b[1]||a[2]==b[2])  //三等奖
            System.out.println("200");
        else  //没中奖
            System.out.println("0");
        /********* End *********/
    }
}


if-else语句

第一关:2*2方程求解

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现求解二元线性方程组的功能。二元一次线性方程组的表达式如下所示:

ax+by=ecx+dy=f

具体编程要求如下:

  • 依次从后台接收double类型的参数 a、b、c、d、e、f

  • 计算相应的解x, y并依次输出,两个解各占一行,结果保存小数点后 1 位;

  • 如果无解,则输出字符串ops

  • 输出的最后多一个换行符。

注意结果输出的格式就行。

package step1;
import java.util.Scanner;

public class Linear22 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        double a, b, c, d, e, f;
        double x;
        double y;

        a = input.nextDouble();
        b = input.nextDouble();
        c = input.nextDouble();
        d = input.nextDouble();
        e = input.nextDouble();
        f = input.nextDouble();
        input.close();

        // 请在指定位置填写代码。
        /********* Begin *********/
        x=(e*d-b*f)/(a*d-b*c);
        y=(a*f-e*c)/(a*d-b*c);
        if(a*d-b*c==0)
            System.out.println("ops");
        else
            System.out.printf("%.1f\n%.1f",x,y);  //注意格式
        /********* End *********/

    }
}

第二关:检测肥胖

根据提示,在右侧编辑器 Begin-End 区域补充代码,编写一个根据身高体重,判断是否肥胖的程序。具体要求如下:

  • 依次从后台接收两个double类型的数值,先后表示为身高(单位:米)和体重(单位:千克);

  • 首先判断是否肥胖,如果肥胖则输出一行字符串yes,否则输出一行字符串no,结尾换行;

  • 如果判断为肥胖,则接着输出至少减重的重量(单位:千克),结果保留整数,结尾换行

知识:

Math.ceil(double a)实现的是对小数向右取整,如 Math.ceil(-0.7) = -0.0,Math.ceil(0.5) = 1.0, 即向大的方向取

Math.floor(double a)实现的是对小数向左取整,如 Math.floor(-0.7) = -1.0,Math.floor(0.5) = 0.0, 即向小的方向取

Math.round(double a)实现的逻辑是四舍五入,但是对于负数有点不一样,如 Math.round(-1.5) = -1,Math.round(-0.5) = 0,等效为 Math.floor(a+0.5),而且返回的是整数

详情请参考:Java,Math类中的ceil、floor和round函数源码解析以及自己重写实现_math.ceil(-0.5)_原来的1024的博客-CSDN博客

package step2;
import java.util.Scanner;

public class BMI {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        double weight = input.nextDouble();
        double height = input.nextDouble();

        //请在指定位置填写代码。
        /********* Begin *********/
        double bmi = weight/(height*height);
        if(bmi <= 30)
            System.out.println("no");
        else{
            System.out.println("yes");
            bmi = Math.ceil(weight - 30*height*height);  //对小数向右取
            System.out.println((int)(bmi));  //强制转换为int型
        }
        /********* End *********/
    }
}


if语句

第一关:判断闰年

根据提示,在右侧编辑器 Begin-End 区域补充代码,计算并输出年份是否为闰年。具体要求如下:

  • 输入一个整型的数字作为年份,例如2009代表 2009 年;

  • 如果输入的年份是闰年,则输出字符串yes,末尾不换行;

  • 如果输入的年份不是闰年,则不做任何输出。

package step1;
import java.util.Scanner;

public class LeapYear {
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);

        Integer year = input.nextInt();

        //请在指定位置填写代码。
        /********* Begin *********/
        if((year%4 == 0 && year%100 != 0)||year%400 == 0){
            System.out.print("yes");
        }
        else{
            System.out.print("no");
        }

        /********* End *********/

        input.close();
    }
}

第二关:求实数绝对值

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现计算实数绝对值的功能。具体要求如下:

  • 输入一个double类型的浮点数作为输入的实数;

  • 如果小于零,输出相应的相反数,末尾不换行;

  • 如果大于零,输出其本身,末尾不换行;

  • 对输入 0 值做特殊处理,如果输入是 0 , 则输出字符串 ops,末尾不换行 。

水题

package step2;
import java.util.Scanner;

public class Abs {
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);

        double x = input.nextDouble();

        // 求 x 的绝对值。
        /********* Begin *********/
        if(x > 0)
            System.out.print(x);
        else if(x < 0){
            x = 0 - x;  //取相反数,即为负数时的绝对值
            System.out.print(x);
        }
        else
        System.out.print("ops");
        /********* End *********/

        input.close();
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值