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

16.汉诺塔问题
新手java练习题100(16-20)_第1张图片

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 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练习题)