第一关:两整数的四则运算
本关任务:从键盘接收2个整数,a,b。计算a+b,a-b,a*b,a/b的值并打印输出
编程要求
根据提示,在右侧编辑器补充代码,从键盘接收2个整数,a,b。计算a+b,a-b,a*b,a/b的值并打印输出
测试说明
平台会对你编写的代码进行测试:
测试输入:
13
36
预期输出:
a+b=49
a*b=468
a-b=-23
a/b=0
package step1;
import java.util.Scanner;
public class Arithmetic2Num {
public static void main(String[] args) {
// ---------------------Begin------------------------
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println("a+b="+(a+b));
System.out.println("a*b="+(a*b));
System.out.println("a-b="+(a-b));
System.out.println("a/b="+(a/b));
// ---------------------End------------------------
}
}
第二关:打印三角形
本关任务:编写一个能打印n行三角形的小程序。
编程要求
根据提示,在右侧编辑器补充代码,打印正三角形。
测试说明
平台会对你编写的代码进行测试:
package step2;
import java.util.Scanner;
public class PosTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//定义输入的行数:
int n = scanner.nextInt();
// ---------------------Begin------------------------
//换行
for(int i=1;i<=n;i++){
//输出空格=总行数-第几行
for(int j=0;j<n-i;j++){
System.out.print(' ');
}
//输出*,每行的*总数=2*n-1
for(int k=0;k<2*i-1;k++){
System.out.print('*');
}
System.out.println();
}
// ---------------------End------------------------
}
}
第三关:循环之倒三角
本关任务:编写一个能打印输出n行的倒三角形
1.如何获取输入数据:Scanner
Scanner类简介:
1、使用前需导包:import java.util.Scanner;
2、构造Scanner类对象,它附属于标准输入流System.in。
Scanner sc =new Scanner(System.in);
3、常用的next()方法系列:
nextInt():输入整数
nextLine():输入字符串
nextDouble():输入双精度数
next():输入字符串(以空格作为分隔符)。
2.do…while循环
2.1 基本格式
do {
循环体语句;
}while((判断条件语句);
2.2扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);
3.for循环的使用
通俗的理解,遍历数组就是:把数组中的元素都看一遍。
示例如下:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
执行初始化语句
执行判断条件语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
执行循环体语句
执行控制条件语句
回到B继续
注意事项:
判断条件语句的结果是一个boolean类型
循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号
4.while循环语句格式
4.1基本格式
while(判断条件语句) {
循环体语句;
}
4.2扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
5.循环结构(for循环和while循环的区别):
for循环语句和while循环语句可以等价转换,但还是有些小区别的
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:for循环适合针对一个范围判断进行操作,while循环适合判断次数不明确操作
编程要求
根据提示,在右侧编辑器补充代码,编写一个能打印输出n行的倒三角形
测试说明
平台会对你编写的代码进行测试:
测试输入:4
预期输出:
*******
*****
***
*
package step3;
import java.util.Scanner;
public class NegTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//定义输入的行数:
int n = scanner.nextInt();
// ---------------------Begin------------------------
//换行
for (int i = n; i >0; i--) {
//输出空格=总行数-第几行
for (int j = 0; j < n-i; j++) {
System.out.print(' ');
}
//输出*,每行的*总数=2*i-1
for (int k = 0; k <2*i-1; k++) {
System.out.print('*');
}
System.out.println();
}
// ---------------------End------------------------
}
}
第四关:水仙花数
本关任务:从键盘接收2个整数a和b,输出a与b范围内的水仙花数。
1.水仙花数
水仙花数是指:一个n位数( n23 ),它的每个位上的数字的n 次所谓的水仙花数是指:一个n位数(N23),它的每个位上的数字的n次幂之和等于它本身幂之和等于它本身。
例如:153,370,371,407等都是水仙花数,就拿153来说,153 =111 +555 +333. 幂之和等于它本身.例如153,370,371,407等都是水仙花数,就拿153来说,153=111+55+33。
样例:
public class ShuiXianHua {
public static void main(String[] args) {
//1.遍历所有的三位数
for(int i=100;i<=999;i++){
if(isAim(i)){//调用方法如果是水仙花数,就打印
System.out.println(i);
}
}
}
//例 153
public static boolean isAim(int a){
int x=a/100;//结果取整 分解出百位数1
int y=a/10%10;//分解出十位数 除10取证后为15 %10取余后为5
int z=a%10;//直接对10取余得3
if(a==x*x*x+y*y*y+z*z*z){//判断是否为水仙花数
return true;
}
return false;
}
}
编程要求
根据提示,在右侧编辑器补充代码,从键盘接收2个整数a和b,输出a与b范围内的水仙花数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1
200
预期输出:
1
153
测试输入:
2
6
预期输出:
2~6范围内无水仙花数!
package step4;
import java.util.Scanner;
public class narcissisticNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//获取起始范围
int i = scanner.nextInt();
//获取终止范围
int j = scanner.nextInt();
// ---------------------Begin------------------------
boolean found = false;
for(int n = i; n <= j; n++) {
int x = n / 100; //个位
int y = n / 10 % 10; //十位
int z = n % 10; //百位
if (n == x * x * x + y * y * y + z * z * z) {
System.out.println(n);
found = true;
}
}
if (!found) {
System.out.println(i + "~" + j + "范围内无水仙花数!");
}
// ---------------------End------------------------
}
}
第五关:a与b之间的素数
本关任务:从键盘接收2个整数a和b,输出a与b范围内的所有素数。
素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”
编程要求
根据提示,在右侧编辑器补充代码,完成从键盘接收2个整数a和b,输出a与b范围内的所有素数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1
25
预期输出:
1到25之间的素数有:
1 2 3 5 7 11 13 17 19 23
测试输入:
20
20
预期输出:
20到20之间的素数有:
package step5;
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// ---------------------Begin------------------------
int a = scan.nextInt();
int b = scan.nextInt();
if(a > 0 && b > 0){
System.out.println(a + "到" + b + "之间的素数有:");
for(int i = a;i <= b;i++){
boolean flag = true;
for(int j = 2;j <= Math.sqrt(i);j++){
if(i % j == 0){
flag = false;
break;
}
}
if(flag && i>1){
System.out.print(i+" ");
}
}
}
// ---------------------End------------------------
}
}
第六关:余X的整数
本关任务:从键盘接收3个整数a、b和c,输出 [a,b] 内满足余c等于0的所有整数。
在java运算中有时会出现对一个整数取余操作,首先复习一下小学学过的除法公式:
除数 ÷ 被除数 = 商
如果没有被整数就会出现余数,例:10 ÷ 3 = 3 余数为 1
在java运算中,取余符号是 %
编程要求
根据提示,在右侧编辑器补充代码,完成从键盘接收3个整数a、b和c,输出 [a,b] 内满足余c等于0的所有整数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
10
20
3
预期输出:
12
15
18
package step6;
import java.util.Scanner;
public class LeftXnumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ---------------------Begin------------------------
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
for(int i = a; i <= b;i++){
if(i % c == 0){
System.out.println(i);
}
}
// ---------------------End------------------------
}
}
第七关:求解1元2次方程
本关任务:从键盘接收3个double数据对应方程系数a、b、c,编写一个能求解1元2次方程的程序。方程形式:aX^2+bX+c=0。tips:若有解则结果保留2位小数。
1. 公式法求解1元2次方程
1.1 求出根的判别式
一元二次方程中根的判别式为△=b2—4ac。
1.2 判断根的个数
当△>0时,方程有两个不同的根;当A=0时,方程有两个相同的根;当△<0时,方程无根。
1.3 代入公式求根
当△>0时,x1=(-b + Math.sqrt(delta)) / (2a),x2=(-b - Math.sqrt(delta)) / (2a)
当△=O时,x1=x2=(-b + Math.sqrt(delta)) / (2*a)
当△<0时,方程无根
编程要求
根据提示,在右侧编辑器补充代码,从键盘接收3个double数据对应方程系数a、b、c,编写一个能求解1元2次方程的程序。若有解则结果保留2位小数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
3
4
5
预期输出:
此方程无解
测试输入:
14
55
2
预期输出:
方程有两个解:x1=-0.04 x2=-3.89
package step7;
import java.util.Scanner;
public class SolveEquations {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ---------------------Begin------------------------
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
double k = b*b-4*a*c;
double x1,x2;
if(k==0){
x1 = x2 = (-b + Math.sqrt(k)) / (2*a);
System.out.println("方程有两个解:x1="+String.format("%.2f",x1)+" x2="+String.format("%.2f",x2));
}
else if(k > 0){
x1=(-b + Math.sqrt(k)) / (2*a);
x2=(-b - Math.sqrt(k)) / (2*a);
System.out.println("方程有两个解:x1="+String.format("%.2f",x1)+" x2="+String.format("%.2f",x2));
}
else {
System.out.println("此方程无解");
}
// ---------------------End------------------------
}
}