第1关:2 ✖ 2 线性方程求解
任务描述
本关任务:掌握使用 if-else 语句实现简单的双分支的控制结构,并编写程序求解2×2
线性方程。
相关知识
为了完成本关任务,你需要掌握:
- if-else 语句;
- cramer 规则。
if-else 语句
相信你已经学会使用 if 语句编写简单的控制结构了,即“满足条件便执行”。但现实情况中,还有一些情形用 if 语句描述起来有些“乏力”,因为对于“不满足条件”的情形,if 语句是不管的。
Java 的 if-else 语句就弥补了这样的“空缺”,它提供了一种双分支的控制结构,其基本写法如下:
if (布尔表达式){
布尔表达式为其时执行的语句(组)1;
}
else {
布尔表达式为假时执行的语句(组)2;
}
与 if 语句不同的是,当布尔表达式值为 false 的时候, if 语句什么也不做,而 if-else 语句会执行 else 分支中的语句(组)。
图 1. if-else 语句控制结构
if-else 语句的控制语义是,“满足条件时,执行动作一,否则执行动作二”。 以下给出 if-else 语句的实例:
/** 代码清单 1 */
if(number < 0){
System.out.println(0-number);
} else {
System.out.println(number);
}
代码清单 1
展示了使用 if-else 语句输出绝对值的功能。虽然这个功能也能仅靠 if 语句来实现,但毫无疑问使用 if-else 语句更简单、更直观、更符合客观逻辑。
cramer 规则
本关的任务是求解 2 元线性方程组,因此简单讲解下求解的方法: cramer 规则: 对于 2×2
线性方程:
ax+by=e
cx+dy=f
根据 cramer 规则,其解为:
x=(ed−bf)/(ad−bc)
y=(af−ec)/(ad−bc)
当 ad−bc=0
时,无解。
相信,你心中已经有了如何使用 if-else 语句实现 cramer 规则,来求解线性方程的方案。那么接下来,认真查看具体的编程要求吧!
编程要求
根据提示,在右侧编辑器 Begin-End 区域补充代码,实现求解二元线性方程组的功能。二元一次线性方程组的表达式如下所示:
ax+by=e
cx+dy=f
具体编程要求如下:
-
依次从后台接收
double
类型的参数a、b、c、d、e、f
; -
计算相应的解
x, y
并依次输出,两个解各占一行,结果保存小数点后 1 位; -
如果无解,则输出字符串
ops
。 -
输出的最后多一个换行符。
测试说明
平台会对你编写的代码进行测试:
测试输入:1 2 3 4 5 6
; 预期输出:
-4.0
4.5
代码如下:
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 *********/
double hh=a*d-b*c;
if(hh==00)
{
System.out.println("ops");
}
else
{
x=(e*d-b*f)/hh;
x=Math.round(x*10)/10.0;
System.out.println(x);
y=(a*f-e*c)/hh;
y=Math.round(y*10)/10.0;
System.out.println(y);
}
/********* End *********/
}
}
第2关:检测肥胖
任务描述
本关任务:巩固 if-else 语句的使用,编写一个程序,根据身高、体重判断是否肥胖。
相关知识
为了完成本关任务,你需要掌握一定的背景知识:
- BMI指标;
- 问题描述。
BMI指标
BMI 又叫身体健康指数, 针对 20 岁及以上的人群, 是根据其身高(米)和体重(千克)计算出一个数值, 依此数值来衡量身体健康状况。其计算方式如下:
BMI=weight/height^2
其中height
是身高(米), weight
是体重(千克)。
问题描述
本关的任务是,判断是否肥胖,而判断的依据是 BMI 指数:
- “ BMI 指数大于 30 时,则认定为肥胖,否则不认定为肥胖。”
因此,本关的任务是根据身高、体重,计算出 BMI 指数从而判断是否肥胖。
当然本关问题并没有这么简单,还需要实现额外的功能:
- “如果判断为肥胖,请提示体重至少减少多少才能摆脱肥胖。”
编程要求
根据提示,在右侧编辑器 Begin-End 区域补充代码,编写一个根据身高体重,判断是否肥胖的程序。具体要求如下:
-
依次从后台接收两个
double
类型的数值,先后表示为身高(单位:米)和体重(单位:千克); -
首先判断是否肥胖,如果肥胖则输出一行字符串
yes
,否则输出一行字符串no
,结尾换行; -
如果判断为肥胖,则接着输出至少减重的重量(单位:千克),结果保留整数,结尾换行。
测试说明
平台会对你编写的代码进行测试:
测试输入:50 1.67
; 预期输出:
no
测试输入:80 1.6
预取输出:
yes
4
提示: 浮点数上取整,以及输出浮点数整数部分的方法:
double x = 3.447;
double y = Math.ceil(a);
System.out.println(String.formate("%.0f", y));
输出:
4
代码如下:
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("yes");
int jz = (int)Math.ceil(weight-(30*height*height));
System.out.println(jz);
}else{
System.out.println("no");
}
/********* End *********/
}
}