1.小游戏:猜数字
题目:
思路:
该题要求使用二分法猜数字。
1.二分法要设置两个变量,min和max,min为范围内最小值,max为范围内最大值,所以min和max最初赋值为0和100。
2.键盘输入准确的数字n后,用最小二分法,mid=(max+min)/2,mid和n作比较,不一样继续用循环进行二分法,比较到mid和n相等。
3.题目还要求记录比较次数,用一个变量count,在循环中记录,循环一次count自增一次即可。
代码如下:
package come.homework;
import java.util.Scanner;
public class Guess {
public static void main(String[] args) {
int n = 0;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
if (0<n&&n<100){
int guess_num=0;
int max = 100;
int min = 0;
int mid,count=0;
do {
mid = (max+min)/2;
if (mid>n){
max=mid-1;
}else{
min=mid+1;
}
System.out.println(mid);
count++;
}while(n!=mid);
System.out.println("最终猜测了"+count + "次");
}else{
System.out.println("请输入0-100之间的数字!");
}
}
}
运行截图:
2.打印菱形
题目如下:
解题思路:
1.该题可以把它分为上下两个部分,找到每一行空格和*号的个数规律来控制循环并打印。
2.上半部分n行,就让最外层循环就循环n次,行数i从1开始,发现每一行空格个数为n-i次,那就打印n-i次空格,然后发现*号为2i-1个,那每行*号就打印2i-1次,最后该行打印结束,加个换行即可。
3.下半部分同样这么分析,不过需要注意的是上半部分包含了最中间的那一行(第n行),所以一共下半部分打印n-1行。控制循环到:i<n。
代码如下:
package come.homework;
import java.util.Scanner;
public class Rhombus {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = sc.nextInt();
//菱形上半部分
for (int i = 1; i <= n; i++) {
//输出空格占位
for (int j = 1; j <=n-i; j++) {
System.out.print(" ");
}
//输出*号
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
//换行
System.out.println();
}
//菱形下半部分
for (int i = 1; i <n; i++) {
//输出空格占位
for(int j = i; j >=1; j--) {
System.out.print(" ");
}
//输出*号
for( int j = (n-1)*2-1; j >=2*i-1; j--) {
System.out.print("*");
}
//换行
System.out.println();
}
}
}
代码运行如下: