【JAVA】基础练习题:猜数字游戏、判断素数、输入三个数找最大的数、打分方案、输出1~100中所有包含9的数、计算1/1-1/2+1/3-1/4+1/5……+1/99-1/100的值、水仙花数等

🍉内容专栏:【JAVA】

🍉本文脉络:JAVA基础练习题

🍉本文作者:Melon_西西

🍉发布时间 :2023.7.17

目录

1.猜数字游戏:

知识点:如何生成想要的随机数,如何设置死循环。

2.判断素数

知识点:JAVA中开平方用Math.sqrt(),这个不是包。

3.输入三个数找最大的数

知识点:(表达式)?a : b;,表达式成立结果为a否则为b

 4.打分方案

5. 输出1~100中所有包含9的数

6.  计算1/1+1/2+1/3+1/4+1/5……+1/99+1/100的值

     计算1/1-1/2+1/3-1/4+1/5……+1/99-1/100的值

知识点:如何实现正负号的交替

7.水仙花数(100000以内)

知识点:思路​编辑

8.三次机会输入密码

知识点:字符串判断是否相等不可以用==判断,用pass.equals( "123456")

 9.给距离选择交通工具

10.求平均年龄

知识点:简单循环输入,输出两位小数


1.猜数字游戏:

系统自动生成一个随机整数(1-100),然后由用户输入一个猜测的数字.如果输入的数字比该随机数小,提示"低了",如果输入的数字比该随机数大,提示“高了",如果输入的数字和随机数相等,则提示"猜对了”.

思路:系统生成随机数,注意随机数的范围如何取。设置死循环,猜对了用break跳出循环,否则无限循环猜数字:

知识点:如何生成想要的随机数,如何设置死循环。

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

public class Text01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        Random random = new Random();  //生成随机数
        int randNum=random.nextInt ( 101);  //[0,101);括号里的bound不是自己输入的
//如果要50-100的整数,random.nextInt(51)+50  =[0,51)+50;
        while (true){//死循环,里面设置break来跳出循环
            System.out.println("请输入你猜的数字");
            int num=scanner.nextInt();
            if(num<randNum){
                System.out.println("猜小了");
            }
            else if(num == randNum){//注意这里是==不是=
                System.out.println("猜对了");
                break;
            }
            else{
                System.out.println("猜大了");
            }
        }
    }
}

2.判断素数

思路:一个数除余2到它的开平方,如果除余==0那么不是素数,如果直到它的开平方都没有除余==0,那么进行到最后一步时i会大于它的开平方,证明他是素数

知识点:JAVA中开平方用Math.sqrt(),这个不是包。

      int n = scanner.nextInt();
                int i = 2;
                for (; i <= Math.sqrt(n); i++) {
                    if(n % i == 0) {
                        System.out.println(n+"不是素数" );
                        break;
                    }
                }
             //有两种情况:1、不符合循环条件2、因为遇到了break
        if(i > Math.sqrt(n)) {
            System.out.println(n + "是素数!");
        }

3.输入三个数找最大的数

知识点:(表达式)?a : b;,表达式成立结果为a否则为b

import java.util.Scanner;

public class Text02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入三个数字" );
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        int max = (a > b) ? a : b;
        max = (max > c) ? max : c;
        System.out.println("这三个数的最大值是= " + max);
    }
}

 4.打分方案

一套打分方案:正确数量在0~10时,每题6分 正确数量在11~20时,第11~20题,每题2分正确数量在21~40时,第21~40题,每题1分,实现该计分程序.输入做对的题目数量n,输出得分. (0<=n<=40)

import java.util.Scanner;

public class Text03 {
    public static void main(String[] args) {
        System.out.println("请输入做对的题的数目:");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int sum = 0;
        if (n >= 0 && n <= 40) {
            if (n <= 10) {
                sum = n * 6;
            } else if (n <= 20) {
                sum = 60 + (n - 10) * 2;
            } else {
                sum = 60 + 20 + (n - 20) * 1;
            }
            System.out.println("总分为=" + sum);
        } else {
            System.out.println("题目输入错误");
        }
    }
}

5. 输出1~100中所有包含9的数

改编:输出1~100中9的个数,那么用else不用else if

 public static void main(String[] args) {
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            if (i / 10 == 9) {//十位是9
                count++;
            } else if (i % 10 == 9)//个位是9
          //如果求求1~100中有多少个9,这里用else不用else if,结果是20,差在99上
            {
                count++;
            }
        }
        System.out.println(count);//19
    }

6.  计算1/1+1/2+1/3+1/4+1/5……+1/99+1/100的值

     计算1/1-1/2+1/3-1/4+1/5……+1/99-1/100的值

知识点:如何实现正负号的交替

    public static void main(String[] args) {
        //计算1/1+1/2+1/3+1/4+1/5……+1/99+1/100的值:
        double sum1=0;
        for(int i = 1 ; i<=100 ; i++){
            sum1 += 1.0/i;//这里是1.0,i默认int类型
        }
        System.out.println(sum1);
        //计算1/1-1/2+1/3-1/4+1/5……+1/99-1/100的值
        double sum=0;
        int flg=1;
        for(int i = 1 ; i<=100 ; i++){
            sum += 1.0/i*flg;
            flg=-flg;//第一次flg为正,第二次变负,实现正负号变换
        }
        System.out.println(sum);
    }

7.水仙花数(100000以内)

输出所有的100000以内的水仙花数:

如三位数水仙花数:abc=a*3+b*3+c*3,如四位数的abcd=a*4+b*4+c*4+d*4

知识点:思路

public class Text01 {
    public static void main(String[] args) {
        for (int i = 1; i <= 999999; i++) {
            //i == 123
            int count = 0; //记录位数
            int tmp = i;
            while (tmp != 0) {
                tmp /= 10;
                count++;
            }
            tmp = i; //123
            int sum = 0;
            while (tmp != 0) {
                sum += Math.pow(tmp % 10, count);//Math.pow(a,b)是a的b次方
                tmp /= 10;
            }
            if (sum == i) {
                System.out.println(i);
            }

        }
    }
}

8.三次机会输入密码

知识点:字符串判断是否相等不可以用==判断,用pass.equals( "123456")


public class Text01 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int count = 3;
        while (count !=0) {
            System.out.println("请输入你的密码:你还有"+ count+"次机会! ");
           String pass = in.nextLine();
            if(pass.equals( "123456")){
                System.out.println("登录成功! ");
                break;
            }else {
                count--;
                System.out.println("密码错误!");
            }
        }
    }

 9.给距离选择交通工具

输入路程,判断用什么交通方式快:步行没交1.2米,骑车每秒3.0米,骑自行车额外花50秒

输入一个整数n表示距离,输出“骑车”,或“走路”或“一样快”

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
      double timeWork = n / 1.2;
      double timeRide = n / 3.0 +50;
      if(timeWork>timeRide){
          System.out.println("骑车");
      }else if( timeWork<timeRide){
          System.out.println("走路");
      }else{
          System.out.println("一样快 " );
      }
    }

10.求平均年龄

求平均年龄有若干的人,输入每个人的年龄,求平均年龄,保留小数点后两位输入:
第一行:整数n(1<n<100),表示人数
之后n行:每行一个整数a(15<a<55),表示第n个人的年龄输出:
输出一个浮点数,
保留两位小数.表示平均年龄

知识点:简单循环输入,输出两位小数

public class Text01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入人数:" );
        int n = scanner.nextInt();
        double  sum =0;
        for(int i=1;i<=n;i++){
            System.out.println("输入第" + i + "个人的年龄");
            int a = scanner.nextInt();
            sum+=a;
        }
        System.out.printf("平均年龄为 %.2f",sum/n);
    }

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值