Java基础练习之流程控制(三)

17、3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数。

public static void main(String[] args) {
        int day = 0;
        for (int x = 3000; x >= 5; x /= 2) {
            day++;
        }
        System.out.println("day=" + day);
        /*
         * 方法二: 
         * day = 0; 
         * for(int x=3000; x>=5; day++) { 
         *         x = x/2; 
         * }
         * System.out.println(day);
         */
}

 

在这里插入图片描述

18、写出结果

public static void main(String []args){ 
            int i = 0, j = 5; 
            tp: for (;;){ 
                i++; 
                for(;;){
                    if(i > j--)
                        break tp; 
                }
            } 
            System.out.println("i = " + i + ", j = "+ j);   
        }

 

在这里插入图片描述

19、猜数字游戏

随机生成一个100以内的数,猜数字游戏:
从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次?

提示:随机数

import java.util.Random;
Random rand = new Random();
int num= rand.nextInt(100);

 

代码1:

import java.util.Random;
import java.util.Scanner;

public class TestDoWhileLoop{
    public static void main(String[] args){
        //1、随机产生一个100以内的整数
        Random rand = new Random();
        //int num = rand.nextInt();//产生的是任意大小的整数
        int num = rand.nextInt(100);//产生[0,100)的整数
        //System.out.println(num);
        
        //2、键盘输入
        Scanner input = new Scanner(System.in);
        
        //声明变量
        int guess;
        int count = 0;
        do{
            //循环体至少执行一次
            System.out.print("请输入一个整数:");
            guess = input.nextInt();//为变量赋值
            
            count++;//输入一次,计数一次
            
            if(guess>num){
                System.out.println("大了");
            }else if(guess < num){
                System.out.println("小了");
            }else{
                System.out.println("猜对了");
            }
        }while(guess != num);
        
        System.out.println("一共猜了:" + count + "次");
    }
    
}

 

在这里插入图片描述
代码2:

import java.util.Random;
import java.util.Scanner;

public class TestDoWhileLoop{
    
    public static void main(String[] args) {
        Random rand = new Random();
        int num= rand.nextInt(100);
        Scanner input = new Scanner(System.in);
        int count =0 ;
        do{
            count++;
            System.out.println("请猜:");
            int temp = input.nextInt();
            if(temp<num){
                System.out.println("小了");
                continue;
            }
            if(temp>num){
                System.out.println("大了");
                continue;
            }
            if(temp == num){
                break;
            }
        }while(true);
        System.out.println("总共猜了"+count+"次");
    }

    
}

 

在这里插入图片描述

20、打印1-100之间数,其中3、5、7的倍数不打印(continue)

public class TestContinue {
    public static void main(String[] args) {
        //打印1-100之间数,其中3、5、7的倍数不打印
        for(int i=1; i<=100; i++){

            if(i%3==0 | i%5==0 | i%7==0){
                
                //跳过下面的打印语句,提前进入下一次循环,即i++语句
                continue;
            }
            
            //下面这部分循环体语句,有些情况下需要跳过
            System.out.println(i);
        }
        System.out.println("over");
    }
}

 

在这里插入图片描述

21、输入两个正整数m和n,求其最大公约数和最小公倍数

public static void main(String []args){ 
        
        Scanner input = new Scanner(System.in);
        System.out.println("输入m:");
        int m = input.nextInt();
        System.out.println("输入n:");
        int n = input.nextInt();
        
        //获取m和n的较大值
        int max = (m > n)? m : n;
        
        //获取m和n的较小值
        int min = (m < n)? m : n;

        //求m和n的最大公约数
        for(int i = min;i >= 1;i--){
            if( m % i == 0 && n % i == 0){
                System.out.println("m和n的最大公约数是:" + i);
                break;
            }
        }
    
        //求m和n的最小公倍数
        for(int i = max;i <= m * n;i++){
            if( i % m == 0 && i % n == 0){
                System.out.println("m和n的最小公倍数是:" + i);
                break;
            }
        }

    }

 

在这里插入图片描述

22、已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E

90~100为等级A,
80~89为等级B,
70~79为等级C,
60~69为等级D,
0~59为等级E。
要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。
例如:当成绩为100时,该学生的等级是A。

package myP101;

public class LevelDemo{
    //定义一功能,通过给定分数,获取该分数对应的等级。
    public static void main(String[] args){
        int num = 89;
        if(num>=90 && num<=100)
            System.out.println("level = A");
        else if(num>=80 && num<=89)
            System.out.println("level = B");
        else if(num>=70 && num<=79)
            System.out.println("level = C");
        else if(num>=60 && num<=69)
            System.out.println("level = D");
        else
            System.out.println("level = E");
        
    }
}

 

在这里插入图片描述

23、打印自然数的个数

1)打印1~100之间 6的倍数的个数
2)求出1~100之间,既是3又是7的倍数的自然数出现的次数?

public static void main(String[] args) {
        int count1 = 0,count2 = 0;
        for (int x = 1; x <= 100; x++) {
            if (x % 6 == 0){
                count1++;
            }
            if(x % 3 == 0 && x % 7 == 0){
                count2++;
            }
            
        }
        System.out.println("count1=" + count1);
        System.out.println("count2=" + count2);

    }

 

在这里插入图片描述

24、求调和级数中从第多少项开始值大于10

调和级数的第n项形式为:

1+1/2+1/3++1/n
public static void main(String[] args) {
        double sum = 0.0;
        int i = 1;
        while (true) {
            sum += 1.0 / i;
            if (sum > 10) {
                break;
            }
            i++;
        }
        System.out.println(i);
    }

 

在这里插入图片描述

在这里插入图片描述

posted @ 2021-03-05 00:55  BugMiaowu2021  阅读(142)  评论(0编辑  收藏  举报