Java练习题(二):逻辑控制编程题

本文提供22道Java编程逻辑题目,包括判断素数、输出素数、判断闰年、计数问题、二进制计算、算法实现等。通过这些题目,帮助读者提升Java编程逻辑思维和解决问题的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.判断一个数是否为素数

2.输出1-100 之间的所有素数

3.输出1000 - 2000 年之间的闰年

4.计算 1到 100 的所有整数中出现多少个数字9

5.输出一个整数在内存当中存储时,二进制1的个数

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

7.计算1 - 1/2 + 1/3 - 1/4 + 1/5 …… + 1/99 - 1/100

8.水仙花数

9.实现猜数字游戏

10.打印 X 图形

11.打印乘法口诀表

12.输出一个整数的每一位

13.模拟登录

14.二进制序列

15.四舍五入

16.交换变量值

17.三目运算符新用法

18.验证邮箱格式

19.数列求和

20.求两个数的最小公倍数

21.输入任意多个数字,当输入负数时结束,求出他们的平均数

22.自由落体小球弹起n次所经过的路程与高度


1.判断一个数是否为素数

素数是指质数,一个大于1的自然数,除了1 和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。规定1既不是质数也不是合数。

思路:

首先输入一个大于1的正整数n;

再根据素数的定义 除了自己本身和1之外没有因数 即从2 到n-1;

利用for循环 从2除到n-1 利用if语句判断 若在此过程中除余为零 则此数不是素数,若除到n-1还没有出现除余为零的情况 则此数为素数;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个大于1的整数:");
        int num = scanner.nextInt();
        int i = 2;
        for (;i<=num-1;i++){
            if (num%i == 0){
                System.out.println("该数字不是素数");
                break;
            }
        }//此时循环结束 i = num
        if (num == i){
            System.out.println("该数字是素数");//使用if是考虑输入的num=2时
        }
        
    }
}

2.输出1-100 之间的所有素数

思路:嵌套for循环

外部for循环 i从2到100 (因为素数是一个大于1的整数,所以从2开始)
内部for循环  j从2 到 i-1 (因为除了1和 i 本身外,不能被其他整数整除,所以获取2到 i -1)。
在内部for循环内使用if选择结构,判断 j 能否被 i整除。
在外部for循环内使用if选择结构,判断 j 与 i 是否相等。

public class Main {
    public static void main(String[] args) {
        //1不是素数 i从2开始到100循环判断
        for (int i = 2;i<=100;i++){
            int j = 2;//除了1和i本身,则j从2到i-1
            for (;j < i;j++){
                if (i%j==0){
                    break;//如果有整除,则不是素数,应跳出内部循环,进入下一个i的循环
                }//if一直不满足整除,则进行j自增 如5%2、5%3、5%4
            }//当j自增到等于i时还未有整除,此时循环结束,说明i是素数,此时i=j
            if (i==j){//使用if是考虑到i=2时
                System.out.print(i+" ");
            }
        }

    }
}

3.输出1000 - 2000 年之间的闰年

闰年:公历年份是4的倍数且不是100的倍数

for (int year = 1000;year <= 2000;year++){
    if (year % 4 == 0 && year % 100 != 0){
        System.out.println(year);
    }
}

4.计算 1到 100 的所有整数中出现多少个数字9

public class Main {
    public static void main(String[] args) {
        int count = 0;
        for (int n = 1;n <= 100;n++){
            while (n % 10 == 9){
                count++;
                break;//不跳出当前循环 则n=1时一直在判断while语句 进入死循环
            }
        }
        System.out.println(count);
    }
}

5.输出一个整数在内存当中存储时,二进制1的个数

如:15:0000 1111  四个1

思路:一个数和1相与 如果末位是1,则结果为1 、如果末位是0,则结果为0

0000 1111 & 0000 0001  ==  0000 0001 

将该数和1进行按位与运算,运算后再进行移位运算,交替计算,直到该数移位到零为止。根据结果可计算出二进制位中1的个数

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num = scanner.nextInt();
        int count = 0;
        while (num != 0){
            if ((num & 1) == 1){
                count++;
            }
            num = num >> 1;//移位运算要赋值,不能单独写
        }
        System.out.println(count);
    }
}

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

如输入:8 16 最大公约数 :8

方法一:欧几里德算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数

以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数.

算法流程图:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner1 = new Scanner(System.in);
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("请分别输入两个数:");
        int a = scanner1.nextInt();
        int b = scanner2.nextInt();
        int r;
        while(a%b!=0)
        {
            r = a%b;
            a = b;
            b = r;
        }
        System.out.println("最大公约数为:"+b);

    }
}

方法二:更相减损法, 出自于中国古代的《九章算术》
  ①先判断两个数的大小,如果两数相等,则这个数本身就 是就是它的最大公约数。
  ②如果不相等,则用大数减去小数,然后用这个较小数与它们相减的结果相比较,如果相等,        这个差就是它们的最大公约数,而如果不相等,则继续执行②操作。
算法流程图:

import java.util.Scanner;

public class Main {
    public static void main(String[] args)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值