Java刷题-基础篇

目录

题目1:打印1~100内奇数和、偶数和

题目2:计算5的阶乘

[题目3:计算 1!+2!+3!+4!+5! 的和](#题目3:计算 1!+2!+3!+4!+5! 的和)

题目4:找1~100之间即能被3整除,又能被5整除的数字,要求必须使用break/continue

题目5:实现猜数字小游戏(不需要菜单)

题目6:判断一个整数是否为素数

[题目7: 打印1~100之间的所有素数](#题目7: 打印1~100之间的所有素数)

题目8:输出1000~2000之间所有的闰年

题目9:输出乘法口诀表

题目10:求两个正整数的最大公约数

题目11:求0~99999之间的"水仙花数"并输出

题目12:写一个函数返回参数在内存中二进制形式1的个数


题目1:打印1~100内奇数和、偶数和

思路:先利用循环得到1~100之间的数,判断如果i是奇数,则sumOdd+=i,如果i为偶数则,sumEven+=i,结束循环后在屏幕上打印结果即可。

java 复制代码
public static void main(String[] args) {
        int i = 1;
        int sumOdd = 0;//奇数
        int sumEven = 0;//偶数
        while (i <= 100) {
            if (i % 2 == 1) {
                sumOdd += i;
            } else {
                sumEven += i;
            }
            i++;
        }
        System.out.println("奇数和"+sumOdd);
        System.out.println("偶数和"+sumEven);
    }

题目2:计算5的阶乘

思路:5!为1*2*3*4*5,将循环变量设为i,进入循环的条件设置为i<=5,在循环里面进行mul*=i的操作(别忘了调整循环变量i的大小),结束循环后在屏幕上打印结果即可。

cpp 复制代码
public static void main(String[] args) {
        int i = 1;
        int mul = 1;
        while (i <= 5) {
            mul *= i;
            i++;
        }
        System.out.println(mul);
    }

题目3:计算 1!+2!+3!+4!+5! 的和

思路:求一个数的阶乘好求,如果要求不同数的阶乘,我们也可以直接利用求一个数阶乘的方法,在它的外面加上一层循环,即变量即j表示求几的阶乘,而原本阶乘方法中的循环的条件改为与 j 相关,循环全部结束后在屏幕上打印结果即可。

java 复制代码
public static void main(String[] args) {
        int j = 1;
        int sum = 0;
        while (j <= 5) {
            int i = 1;
            int mul = 1;
            while (i <= j) {
                mul *= i;
                i++;
            }
            sum += mul;
            j++;
        }
        System.out.println(sum);
    }

题目4:找1~100之间即能被3整除,又能被5整除的数字,要求必须使用break/continue

思路:它们的最小公倍数是15,也就是说只要是15的倍数都能被它两整除,可以先利用循环得到1~100之间的数,然后判断i%15是否==0,不是则i++,使用continue不执行后面打印的功能;是则直接打印,然后i++;

java 复制代码
public static void main(String[] args) {
        int i = 1;
        while (i <= 100) {
            if (i % 15 != 0) {
                i++;
                continue;
            }
            System.out.println(i);
            i++;
        }
    }

题目5:实现猜数字小游戏(不需要菜单)

思路:随机数的生成要用到 Random random = new Random(); 得到的随机数写成 int randNum = random.nextInt(100); 的格式,在()写入n就生成 [0,n-1) 之间的数。为了多次猜测,所以用到了while(true),在while内部进行游戏判断的过程即可,如果猜对了用break跳出循环即可。

java 复制代码
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random random = new Random();

        int randNum = random.nextInt(100);//[0,100)
        System.out.println("随机数是"+randNum);
        while (true) {
            System.out.print("请输入>");
            int num = scan.nextInt();
            if (num < randNum) {
                System.out.println("猜小了");
            } else if (num == randNum) {
                System.out.println("猜对了");
                break;
            } else {
                System.out.println("猜大了");
            }
        }
    }

题目6:判断一个整数是否为素数

思路:首先了解什么是素数"素数是大于1的自然数,且只能被1或它本身整除"

技巧:构成num的两个数一定有一个小于等于num开平方,因此在写除数时不用写成 i < num,直接写成 i <= Math.sqrt(num),如果num被i整除,则break,说明num肯定不是素数。注意,出for循环后会有两种情况,一种是通过break出来的,另一种是循环结束出来的,因此要判断一下是哪一种情况出来的。

java 复制代码
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();

        int i = 0;
        for (i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                break;//说明不是素数
            }
        }
        if (i > Math.sqrt(num)) {
            System.out.println(num+"是素数");
        } else {
            System.out.println(num+"不是素数");
        }
    }

题目7: 打印1~100之间的所有素数

思路:在上面判断是否为素数的基础上,加一层循环,得到2~100之间的数,将上面代码中的num替换乘i即可。

java 复制代码
public static void main(String[] args) {
        for (int i = 2; i < 101; i++) {
            int j = 0;
            for (j = 2; j <= Math.sqrt(i) ; j++) {
                if (i % j == 0) {
                    break;
                }
            }
            if (j > Math.sqrt(i)) {
                System.out.println(i+"是素数");
            }
        }
    }

题目8:输出1000~2000之间所有的闰年

思路:判断该年年份是闰年的条件:①能被4整除,但不能被100整除 ②能被400整除

java 复制代码
public static void main(String[] args) {
        for (int i = 1000; i < 2001; i++) {
            if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
                System.out.println(i);
            }
        }
    }

题目9:输出乘法口诀表

java 复制代码
public static void main(String[] args) {
        //外层变化慢
        for (int i = 1; i < 10; i++) {
            //内层变化快
            for (int j = 1; j <= i; j++) {
                System.out.printf("%d*%d=%2d ", i, j, i*j);
            }
            System.out.println();
        }
    }

题目10:求两个正整数的最大公约数

思路:辗转相除法

java 复制代码
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = a % b;
        while (c != 0) {
            a = b;
            b = c;
            c = a % b;
        }
        System.out.println(b);
    }

题目11:求0~99999之间的"水仙花数"并输出

思路:水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。先得到100~999999之间的数,判断一下i是几位数(这决定了后面要求每一位的几次方),且由于i不能改变,所以要定义一个临时i去参与计算,每得到i的一位就求它的次方数并放入sum中,最后判断一下在当前循环下sum是否等于i。

java 复制代码
public static void main(String[] args) {
        for (int i = 100; i < 1000000; i++) {
            //1.计算当前数字i是一个几位数
            int count = 0;
            int tmp = i;
            while (tmp != 0) {
                count++;
                tmp /= 12;
            }
            tmp = i;//方便后面再次使用
            int sum = 0;
            //2.求tmp的每一位
            while (tmp != 0) {
                sum += Math.pow(tmp % 10, count);
                tmp /= 10;
            }
            if (sum == i) {
                System.out.println(i);
            }
        }
    }

题目12:写一个函数返回参数在内存中二进制形式1的个数

java 复制代码
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //例如求:-1在内存中的二进制表示形式1的个数
        // 10000000 00000000 00000000 00000001 -1原码
        // 11111111 11111111 11111111 11111110 -1反码
        // 11111111 11111111 11111111 11111111 -1补码
        // 即有32位
        // 11111111 11111111 11111111 11111111 -1补码
        // 00000000 00000000 00000000 00000001 1的补码
        //通过判断 (-1>>i)& 1 == 1可以实现效果,i < 32
        int a = scan.nextInt();
        int count = 0;
        for (int i = 0; i < 32; i++) {
            if (((a >> i) & 1) == 1) {
                count++;
            }
        }
        System.out.println(count);
    }

本篇文章已完结,谢谢支持哟 ^^ !!!

相关推荐
蜡笔小新..37 分钟前
R语言和RStudio安装
开发语言·r语言
ALPH_37 分钟前
R语言的基础命令及实例操作
开发语言·数据分析·r语言·perl·r语言-4.2.1
咩咩觉主41 分钟前
C# &Unity 唐老狮 No.6 模拟面试题
开发语言·unity·面试·c#·游戏引擎·唐老师
╰つ゛木槿3 小时前
Spring Boot 调用DeepSeek API的详细教程
java·spring boot·后端·deepseek
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧3 小时前
C语言_数据结构总结8:链式队列
c语言·开发语言·数据结构·链表·visualstudio·visual studio
千里码aicood3 小时前
[含文档+PPT+源码等]精品基于Python实现的校园小助手小程序的设计与实现
开发语言·前端·python
讨厌下雨的天空3 小时前
C++之list
开发语言·c++·list
大麦大麦4 小时前
深入剖析 Sass:从基础到进阶的 CSS 预处理器应用指南
开发语言·前端·css·面试·rust·uni-app·sass
hhw1991124 小时前
c#面试题整理6
java·开发语言·c#
蠟筆小新工程師4 小时前
Deepseek可以通过多种方式帮助CAD加速工作
开发语言·python·seepdeek