Java基础练习题01基本控制流程

1、输入一个字符,判断它是不是字母,是不是数字,是不是空格字符?

public static void main(String[] args) {
        System.out.print("请输入一个字符:");
        Scanner input = new Scanner(System.in);
        char a = input.nextLine().charAt(0);
        if ((a >= 65 && a <= 90) || (a >= 97 && a <= 122)) {
            System.out.println("你输入的字符串为字母!");
        } else if (a >= 48 && a <= 58) {
            System.out.println("你输入的字符串为数字!");
        } else if (a==32) {
            System.out.println("你输入的字符串为空格字符!");
        } else {
            System.out.println("你输入的字符串不是字母,不是数字 也不是空格字符!");
        }
    }

2、输入一个整数,判断它是偶数还是奇数?

public static void main(String[] args) {
        System.out.println("请输入一个整数:");
        Scanner sc=new Scanner(System.in);
        int x=sc.nextInt();
        if (x%2==0){
            System.out.println("您输入的是偶数!");
        }else {
            System.out.println("您输入的是奇数!");
        }
    }

3、企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%;
高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润I,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

public static void main(String[] args) {
        System.out.println("请输入当月利润:");
        Scanner sc=new Scanner(System.in);
        long x=sc.nextLong();

        if (x<=1000000){
            System.out.println(x*0.1);
        }else if (x>1000000 && x<=2000000){
            System.out.println(x*0.1+(x-1000000)*0.075);
        }else if (x>2000000 && x<=4000000){
            System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05);
        }else if (x>4000000 && x<=6000000){
            System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05+(x-4000000)*0.03);
        }else if (x>6000000 && x<=10000000){
            System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05+(x-4000000)*0.03+(x-6000000)*0.015);
        }else {
            System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05+(x-4000000)*0.03+(x-6000000)*0.015+(x-10000000)*0.01);
        }
    }

4、已知某年某月,问这个月共有多少天?

public static void main(String[] args) {
        System.out.println("请输入年份:");
        Scanner sr=new Scanner(System.in);
        int x=sr.nextInt();
        System.out.println("请输入月份:");
        Scanner sr2=new Scanner(System.in);
        int y=sr.nextInt();
        if (y==2){
            if (x%4==0 && x%100!=0 || x%400==0){
                System.out.println(x+"年"+y+"月有:29天");
            }else {
                System.out.println(x+"年"+y+"月有:28天");
                    }
             }else if (y==4 || y==6 || y==9||y==11){
                System.out.println(x+"年"+y+"月有:30天");
            }else {
                System.out.println(x+"年"+y+"月有:31天");
            }
    }

5、已知某年某月某日,判断这一天是这一年的第几天?

 public static void main(String[] args) {
        System.out.println("请输入年份:");
        Scanner sr1 = new Scanner(System.in);
        int year = sr1.nextInt();
        System.out.println("请输入月份:");
        Scanner sr2 =new Scanner(System.in);
        int month =sr2.nextInt();
        System.out.println("请输入几号");
        Scanner sr3 =new Scanner(System.in);
        int day = sr3.nextInt();
        int sum =0;
        if (month>1){
            for (int i=1;i<month;i++){
                if (i==1 || i==3||i==5||i==7||i==8||i==10||i==12){
                    sum+=31;
                }else if (i==4||i==6||i==9||i==11){
                    sum+=30;
                }else{
                    if (year%4==0 && year%100!=0 || year%400==0){
                        sum+=29;
                    }else {
                        sum+=28;
                    }
                }
            }
        }
        System.out.println(year+"年"+month+"月"+day+"日是这一年的第"+(sum+day)+"天。");
    }

6、输入一个正整数,判断它是不是质数?

public static void main(String[] args) {
        System.out.println("请输入一个正整数:");
        Scanner sr=new Scanner(System.in);
        int x=sr.nextInt();
        int i;
        for (i=2;i<x;i++){
            if (x%i==0){
                System.out.println(x+"不是质数");
                break;
            }
        }
        if (i==x){
            System.out.println(x+"是质数");
        }
    }

7、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

public static void main(String[] args) {
        for (int a=1;a<=9;a++){
            for (int b=0;b<=9;b++){
                for (int c=0;c<=9;c++){
                    if ((a*a*a+b*b*b+c*c*c)==(a*100+b*10+c)){
                        System.out.println(a*100+b*10+c);
                    }
                }
            }
        }
    }

8、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第10月的兔子总数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21…

public static void main(String[] args) {
//方法一:
            int x=0;
            int y=1;
            int z=0;
         for (int i=2;i<=10;i++){
                z=x+y;
                x=y;
                y=z;
             System.out.println("第"+i+"个月共有兔子"+z*2+"只");
         }
         System.out.println("第十个月共有兔子"+z*2+"只");
         //方法二:
            int a=1;
            int b=0;
            for (int i=2;i<=10;i++){
                a=a+b;
                b=a-b;
                System.out.println("第"+i+"个月共有兔子"+a*2+"只");
            }
         System.out.println("第十个月共有兔子"+a*2+"只");
     }
9、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 

第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。

public static void main(String[] args) {
        int x=1;
        int y=0;
        for(int i=1;i<10;i++){
            y=2*(x+1);
            x=y;
        }
        System.out.println("猴子第一天一共摘了"+y+"个桃子");
    }

10、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

public static void main(String[] args) {
        int x=1;
        int y=0;
        for(int i=1;i<10;i++){
            y=2*(x+1);
            x=y;
        }
        System.out.println("猴子第一天一共摘了"+y+"个桃子");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏人曹怼怼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值