Java 逻辑控制练习基础题目

目录

题目列表

1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)

2. 判定一个数字是否是素数

3. 打印 1 - 100 之间所有的素数

4. 输出 1000 - 2000 之间所有的闰年

5. 输出乘法口诀表

6. 求两个正整数的最大公约数

7. 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数 本身,如: 153=1^3+5^3+3^3 ,则153是一个“水仙花数”。)

8. 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1

9. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。

10. 完成猜数字游戏


题目列表

1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)

public class Main {

    public static void main(String[] args) {
        int age;
        Scanner scanner=new Scanner(System.in);
        age=scanner.nextInt();

        if(age<=18){
            System.out.println("少年");
            //java中不能用 19<=age<=28,只能使用一个比较操作符连接条件表达式(比如 age <= 28)
        } else if (age >= 19 && age <= 28) {
            System.out.println("青年");
        }else if(age >= 56){
            System.out.println("老年");
        }else{
            System.out.println("超出范围,请重新输入");
        }

    }
}

2. 判定一个数字是否是素数

public class Main {

        public static void main(String[] args) {
            int n;
            int count = 0;
            Scanner scanner = new Scanner(System.in);
            n = scanner.nextInt();

            for (int i = 2; i < n; i++) {
                if (n % i == 0) {
                    count++;
                }
            }
            //添加 n == 1这个条件判断是因为数字 1 既不是质数(素数)也不是合数。
            if (count > 0 || n == 1) {
                System.out.println("不是素数");
            } else {
                System.out.println("是素数");
            }
        }
}

3. 打印 1 - 100 之间所有的素数

public class Main {

        public static void main(String[] args) {
            for (int n = 1; n <= 100; n++) {
                int count = 0;
                for (int i = 2; i < n; i++) {
                    if (n % i == 0) {
                        count++;
                        break; // 一旦发现能整除,就不再继续判断这个数,提高效率
                    }
                }
                if (count == 0 && n > 1) {
                    //n是数据," "是每一个数据之间打印一个空格
                    System.out.print(n + " ");
                }
            }
        }
}

4. 输出 1000 - 2000 之间所有的闰年

public class Main {
        public static void main(String[] args) {
            for (int i = 100; i <=200 ; i++) {
                if(i%4==0&&i%100!=0||i%400==0){
                    System.out.println(i+"是闰年");
                }
            }
        }
}

5. 输出乘法口诀表

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 9 ; i++) {
            for (int j = 1; j <= 9 ; j++) {
                int sum = i * j;
                System.out.println(i + "*" + j + "=" + sum);
            }
        }
    }
}

6. 求两个正整数的最大公约数

public class Main{

    public static int jkl(int a,int b){
        if(b==0){
            return a;
        }else{
            return jkl(b,a%b);
        }
    }

    public static void main(String[] args) {

        //相当于输入
        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入第一个数:");
        int num1= scanner.nextInt();

        System.out.println("请输入第二个数:");
        int num2= scanner.nextInt();

        int gcd=jkl(num1,num2);

        System.out.println("两个数最大公约数:"+gcd);

    }
    
}

7. 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数 本身,如: 153=1^3+5^3+3^3 ,则153是一个“水仙花数”。)

public class Main {

    public static void main(String[] args) {
        for (int i = 0; i <=999 ; i++) {
            int temp=i;
            int sum=0;

            //比如传进来的是123
            while (temp!=0){
                //pow(a,n)-->计算a的n次方
                sum+=Math.pow(temp%10,3);
                temp/=10;
            }
            //所以要等每一位都计算完毕后才能判断是否符合
            if(sum==i){
                System.out.println(i);
            }
        }
    }
}

8. 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1

import java.util.Scanner;

public class Main {

        public static int countOnes(int num) {
            int count = 0;
            while (num!= 0) {
                //按位与操作(&)。
                //num &= num - 1的作用是每次将最右边的一个 1 变为 0。
                //解释如下:
                //当 num 减去 1 时,会导致 num 二进制表示中最右边的一个 1 变为 0,并且这个 1 右边的所有位变为 1。
                // 然后再与 num 进行按位与操作,就会把这个最右边的 1 消除掉。
                //例如:
                //num = 15,二进制为 1111。
                //num - 1 = 14,二进制为 1110。
                //num &= num - 1 即 1111 & 1110 = 1110,此时消除了最右边的一个 1。
                //而如果是 num & 1,只是判断 num 二进制表示的最右边一位是否为 1,不能起到消除所有 1 并计数的作用。
                num &= num - 1;
                count++;
            }
            return count;
        }

        public static void main(String[] args) {
            int number;
            Scanner scanner=new Scanner(System.in);
            number=scanner.nextInt();
            int onesCount = countOnes(number);
            System.out.println(number + " 的二进制中 1 的个数为:" + onesCount);
        }
    }

9. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。

//输出一个数的二进制奇数位和偶数位---用&1去判断

public class Main {
public static void main(String[] args) {
    //32个位置,奇数是31,29这样下去
    //偶数是30,28
    //二进制7是:0111
    //         &0001    用&的结果是,两者为1的用1,其余为0
    int n;
    Scanner scanner=new Scanner(System.in);
    //nextInt是代表int类型输入
    //nextLine是代表
    n=scanner.nextInt();
    //目的想按照上面这个样子去输出
    //现在这个是先拿到了需要输出在前面
    /*for (int i = 0; i < 32; i++) {
        System.out.print(((n>>i)&1)+" ");
    }*/
    System.out.println("偶数是");
    //从32起是奇数,31就是偶数
    for (int i = 31; i >= 0; i-=2) {
        //n向右边移动i个单位---右往左
        //&是按位异或
        //它的规则是     0 1 1 1
        //       1:  & 0 0 0 1
        //             0  1 1 1 ---两者比较数据一样结果就是一样的
        //                         两者不一样就是1
        System.out.print(((n>>i)&1)+" ");
    }
    System.out.println();
    System.out.println("奇数是");
    for (int i = 30; i >= 0; i-=2) {
        System.out.print(((n>>i)&1)+" ");
    }
}

10. 完成猜数字游戏

public class Main {
 public static void main4(String[] args) {
        //因为要输入多次猜,所以就用scanner
        Scanner scanner=new Scanner(System.in);
        //设置随机数字
        Random random=new Random();
        //由于是组合包,所以不要打bound,要直接输入数字就会自己出来bond了
        //规定随机数字的范围,100=1-99
        int randNum=random.nextInt(100);

        //写一个死循环,只要找不到数字就一直输入
        while (true){
            System.out.println("输入要猜的数字:");
            //赋予num循环输入数字的能力
            int num= scanner.nextInt();

            if(num<randNum){
                System.out.println("猜小了");
            } else if (num==randNum) {
                System.out.println("恭喜你猜对了");
                break;
            }
            else {
                System.out.println("猜大了");
            }

        }
        scanner.close();
    }
}

  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值