多分支与嵌套
第一关:选择
选择题,细心即可
第二关:判断身体状况
根据提示,在右侧编辑器 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();
}
}