8月15日作业

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();
        }
    }
}

 代码运行如下:

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕逾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值