蓝桥杯java组基础练习题50题

1.古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

//这是一个菲波拉契数列问题 

public class test1 {
    public static void main(String args[]){
        int f1=2,f2=2,temp;
        System.out.printf("第1个月有2只兔子\n");
        System.out.printf("第2个月有2只兔子\n");
        for(int i=3;i<=24;i++){
            temp=f2;
            f2=f1+f2;
            f1=temp;
            System.out.printf("第%d个月有%d只兔子\n",i,f2);
        }
    }
}

2.判断101-200 之间有多少个素数,并输出所有素数。

public class test2 {
    public static void main(String args[]){
        int k=0;
        for(int i=101;i<=200;i++){
            if(check(i)==1){
                System.out.println(i);
                k++;
            }
        }
        System.out.printf("有%d个素数",k);
    }
    public static int check(int n){
        int flag=0;
        for(int i=2;i<n;i++){
            if(n%i==0){
                flag=0;
                break;
            }
            else{
                flag=1;
            }
        }
        return flag;
    }
}

3.打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个 "水仙花数 ",因为 153=1 的三次方+5 的三次方+3 的三次方。

public class test3 {
    public static void main(String args[]){
        for(int i=100;i<1000;i++){
            if(Math.pow((i/1%10),3)+Math.pow((i/100%10),3)+Math.pow((i/10%10),3)==i){
                System.out.println(i);
            }
        }
    }
}

4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

public class test4 {
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        int n= sc.nextInt();
        System.out.printf("%d=",n);
        int k=2;
        while(k<=n){
            if(k==n){
                System.out.println(n);
                break;
            }
            else if(n%k==0){
                System.out.printf(k+"*");
                n=n/k;
            }
            else{
                k++;
            }
        }
    }
}

5.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B 表示,60 分以下的用C 表示。

public class test5 {
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        char grade;
        int x=sc.nextInt();
        grade=x>=90?'A':x>=60?'B':'C';
        System.out.println("等级为:"+grade);
    }
}

6.输入两个正整数m 和n,求其最大公约数和最小公倍数。

public class test6 {
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        int max,n=a*b;
        int temp;
        if(a<b){  //把a当做大数
            temp=a;
            a=b;
            b=temp;
        }
        while(b!=0){
            if(a==b){
                max=a;
            }
            else{
                int k=a%b;
                a=b;
                b=k;
            }
        }
        max=a;
        int min=n/max;
        System.out.printf("最大公约数:%d,最小公倍数:%d",max,min);
    }
}

7.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

public class test7 {
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        int shuzi=0,zimu=0,kongge=0,qita=0;
        char[] c=null;
        String s=sc.nextLine();
        c=s.toCharArray();
        for(int i=0;i<c.length;i++){
            if('0'<=c[i]&&c[i]<='9'){
                shuzi++;
            }
            else if(('a'<=c[i]&&c[i]<='z')||('A'<=c[i]&&c[i]<='Z')){
                zimu++;
            }
            else if(c[i]==' '){
                kongge++;
            }
            else{
                qita++;
            }
        }
        System.out.printf("数字:%d,字母:%d,空格:%d,其他:%d",shuzi,zimu,kongge,qita);
    }
}

8.求s=a+aa+aaa+aaaa+aa...a 的值,其中a 是一个数字。例如2+22+222+2222+22222(此时共有5 个数相加),几个数相加有键盘控制。

public class test8 {
    public static void main(String srgs[]){
        Scanner sc=new Scanner(System.in);
        System.out.printf("这个数是:");
        int a=sc.nextInt();
        System.out.printf("几个这个数相加:");
        int n=sc.nextInt();
        int sum=0,b=0;
        for(int i=1;i<=n;i++){
            b=b+a;
            sum=sum+b;
            a=a*10;
            System.out.println(b);
        }
        System.out.println(sum);
    }
}

9.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000 以内的所有完数。

public class test9 {
    public static void main(String args[]) {
        for(int i=1;i<1000;i++){
            int sum=0;
            for(int j=1;j<i;j++){
                if(i%j==0){
                    sum=sum+j;
                }
            }
            if(sum==i){
                System.out.println(i+" ");
            }
        }
    }
}

10.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10 次落地时,共经过多少米?第10 次反弹多高?

public class test10 {
    public static void main(String args[]){
        double a=100,c=100;
        for(int i=1;i<=10;i++){
            c=c+a;
            a=a/2;
        }
        System.out.printf("共经过"+c+"米\n");
        System.out.printf("第10次反弹"+a+"米");
    }
}

11.有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

public class test11 {
    public static void main(String args[]){
        int count=0;
        for(int i=1;i<5;i++){
            for(int j=1;j<5;j++){
                for(int k=1;k<5;k++){
                    if(i!=j&&i!=k&&j!=k){
                        System.out.println(i*100+j*10+k);
                        count++;
                    }
                }
            }
        }
        System.out.println("共有"+count+"个数");
    }
}

12.企业发放的奖金根据利润提成。利润(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%提成,从键盘输入当月利润,求应发放奖金总数?

public class test12 {
    public static void main(String args[]){
        double jiangjin=0;
        Scanner sc=new Scanner(System.in);
        double x=sc.nextDouble();
        if(10<=x){
            jiangjin=x*0.1;
        }
        if(10<x&&x<=20){
            jiangjin=10*0.1+(x-10)*0.075;
        }
        if(20<x&&x<=40){
            jiangjin=10*0.1+10*0.075+(x-20)*0.05;
        }
        if(40<x&&x<=60){
            jiangjin=1
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值