欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

新手java练习题100(16-20)

程序员文章站 2022-04-03 18:02:18
...

16.汉诺塔问题
新手java练习题100(16-20)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;                //这三个类可能比较陌生需要去查阅

public class java16 {
    public static void main(String args[]) throws IOException{
        int j;
        String str;
        BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
        System.out.print("请输入盘子的数量:");
        str=keyin.readLine();
        j=Integer.parseInt(str);
        hanoi(j,1,2,3);
    }

    private static void hanoi(int j, int i, int i1, int i2)
    { if (n==1)
        System.out.print("");
    else
    {
        hanoi(n-1,p1,p3,p2);
        System.out.print("");
        hanoi(n-1,p2,p1,p3);
    }
    }
}

17.输入三个整数x,y,z,请把这三个数由小到大输出

import java.util.Scanner;
public class test17 {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        System.out.println("请输入三个整数:");
        int m = s.nextInt();
        int n = s.nextInt();
        int k = s.nextInt();
        System.out.print("从小到大的顺序为:");
        if(m > n){
            if(n > k){//这里是按顺序的结构
                System.out.println(k+","+n+","+m);
            }else if(m > k){//这里是 k > n,k < m 时
                System.out.println(n+","+k+","+m);
            }else if(m < k){
                System.out.println(n+","+m+","+k);
            }
        }else if(m > k){//这里就是 m<n的情况
            System.out.println(k+","+m+","+n);
        }else if(m < k){
            if(n > k){
                System.out.println(m+","+k+","+n);
            }else if(n < k){
                System.out.println(m+","+n+","+k);
            }
        }
    }
}

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

import java.util.Scanner;
public class test18{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        System.out.println("请输入薪资(单位:万元):");
        double salary = s.nextDouble();
        double jj = 0;
        if(salary <= 10){
            jj = salary * 0.1;
        }else if(salary > 10 && salary < 20){
            jj = 10 * 0.1 + (salary-10)*0.075;
        }else if(salary > 20 && salary < 40){
            jj = 10 * 0.1 + 10 * 0.075 + (salary-20) * 0.05;
        }else if(salary > 40 && salary < 60){
            jj = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (salary - 40) * 0.03;
        }else if(salary > 60 && salary < 100){
            jj = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (salary-60) * 0.015;
        }else if(salary > 100){
            jj = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (salary - 100) * 0.01;
        }
        //jj = Math.round(jj * 100)/100;
        System.out.println("当月利润 "+salary+" 万元"+",应当发放奖金总数为:"+jj+" 万元");
    }
}

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

import java.util.Scanner;
public class test19{
    public static void main(String[] args){
        Scanner s1 = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s = s1.nextLine();
        char[] ch=s.toCharArray();
        int zg=0,kg=0,sg=0,qg=0;
        for(int i = 0 ; i < ch.length; i++){
            if(ch[i] >=65 && ch[i] <= 90 || ch[i] >= 97 && ch[i] <= 122){
                zg++;
            }else if(ch[i] == ' '){
                kg++;
            }else if(ch[i] >= 48 && ch[i] <= 57){
                sg++;
            }else{
                qg++;
            }
        }
        System.out.println(s+" 中的英文字母有"+zg+"个,"+"空格的个数有"+kg+"个,"+"数字的个数有"+sg+"个,"+"其它字符有"+qg+"个。");

    }
}

20.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

public class test20 {
    static int ts=0;//桃子总数
    int fs=1;//记录分的次数
    static int hs=5;//猴子数...
    int tsscope=5000;//桃子数的取值范围.太大容易溢出.
    public int fT(int t){
        if(t==tsscope){
//当桃子数到了最大的取值范围时取消递归
            System.out.println("结束");
            return 0;
        }
        else{
            if((t-1)%hs==0 && fs <=hs){
                if(fs==hs)
                {
                    System.out.println("桃子数 = "+ts +" 时满足分桃条件");
                }
                fs+=1;
                return fT((t-1)/5*4);// 返回猴子拿走一份后的剩下的总数
            }
            else
            {
//没满足条件
                fs=1;//分的次数重置为1
                return fT(ts+=1);//桃子数加+1
            }
        }
    }
    public static void main(String[] args) {
        new test20().fT(0);
    }

}
相关标签: Java练习题