java练习册_《Java练习题》Java习题集二

【程序11】

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

/*** 【程序11】

* 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?*/

public classSubject11 {public static voidmain(String[] args) {

FormThreeNum();

}public static voidFormThreeNum(){for (int i = 1; i <= 4; i++) {for (int j = 1; j <= 4; j++) {for (int k = 1; k <= 4; k++) {if(i != j && j!= k && k !=i){

System.out.println("1,2,3,4可以组成的三位数:"+i+j+k);

}

}

}

}

}

}

运行结果:

9b3e68a2f2847c91ebe74d83e76c8382.png

。。。。。。。

【程序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%提成,从键盘输入当月利润I,求应发放奖金总数?

/*** 【程序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%提成,从键盘输入当月利润I,求应发放奖金总数?*/

public classSubject12 {public static voidmain(String[] args) {

System.out.println("请输入您的业绩:");

Scanner scanner= newScanner(System.in);double profit=scanner.nextDouble();

System.out.println("您得到的提成为:"+premium(profit));

}public static double premium(doubleprofit){double premium = 0;if(profit <= 100000){

premium= profit*0.1;

}else if(profit > 100000 && profit <= 200000){

premium= (profit - 100000) * 0.075 + premium(100000);

}else if(profit > 200000 && profit <= 400000){

premium= (profit - 200000) * 0.05 + premium(200000);

}else if(profit > 400000 && profit <= 600000){

premium= (profit - 400000) * 0.03 + premium(400000);

}else if(profit > 600000 && profit <= 1000000){

premium= (profit - 600000) * 0.015 + premium(600000);

}else{

premium= (profit - 1000000) * 0.01 + premium(1000000);

}returnpremium;

}

}

运行结果:

90dbad8e8893e6e38541368ce6bebc59.png

【程序13】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

/*** 【程序13】

* 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?*/

public classSubject13 {public static voidmain(String[] args) {

squareNum();

}public static voidsquareNum(){int i = 1;while(true){int tmp = i*i;int z = 1;while(true){if(z*z - tmp >=168){break;

}

z++;

}if(z*z - i*i == 168 && (z*z - 168-100)>=0){

System.out.println("一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,则该数为:"+(z*z - 168-100));break;

}else{

i++;

}

}

}

}

运行结果:

4838695b67947f56a79ad4fe3c8e3b3e.png

【程序14】

题目:输入某年某月某日,判断这一天是这一年的第几天?

/*** 【程序14】

* 题目:输入某年某月某日,判断这一天是这一年的第几天?*/

public classSubject14 {public static voidmain(String[] args) {

dayNum("2018-03-08");

dayNum("1900-03-08");

dayNum("2000-03-08");

dayNum("2020-03-08");

dayNum("2018-02-08");

dayNum("1900-02-08");

dayNum("2000-02-08");

dayNum("2020-02-08");

}public static voiddayNum(String date){

String[] dateStr= date.split("-");int dayNum = 0;if(leapYear(dateStr[0])){

dayNum= month(dateStr[1] ,"1") + Integer.parseInt(dateStr[2]);

}else{

dayNum= month(dateStr[1] ,"0") + Integer.parseInt(dateStr[2]);

}

System.out.println("输入日期为该("+dateStr[0]+")年的第"+dayNum+"天");

}/*** 根据年份判断闰年还是普通年

*@paramyear

*@return

*/

public static booleanleapYear(String year){int years =Integer.parseInt(year);if((years%4 ==0 && years%100!=0) || years%400 == 0){return true;

}return false;

}/*** 根据月份获取天数

*@parammonth

*@paramflag

*@return

*/

public static intmonth(String month,String flag){int dayNum = 0;switch(month){case "01": dayNum = 0; break;case "02": dayNum = month("01", flag) +31; break;case "03":if("0".equals(flag)) {

dayNum= month("02", flag) + 28;

}else{

dayNum= month("02", flag) + 29;

}break;case "04": dayNum = month("03", flag) + 31; break;case "05": dayNum = month("04", flag) + 30; break;case "06": dayNum = month("05", flag) + 31; break;case "07": dayNum = month("06", flag) + 30; break;case "08": dayNum = month("07", flag) + 31; break;case "09": dayNum = month("08", flag) + 31; break;case "10": dayNum = month("09", flag) + 30; break;case "11": dayNum = month("10", flag) + 31; break;case "12": dayNum = month("11", flag) + 30; break;

}returndayNum;

}

}

运行结果:

c4ab2be442df4f54bd4699962a603f60.png

【程序15】

题目:输入三个整数x,y,z,请把这三个数由小到大输出

/*** 【程序15】

* 题目:输入三个整数x,y,z,请把这三个数由小到大输出*/

public classSubject15 {public static voidmain(String[] args) {

minNum(7,3,5);

}/*** 获取最小数

*@parama

*@paramb

*@paramc*/

public static void minNum(int a,int b,intc){int tmp = 0;int[] nums={a,b,c};int[] numTmp = new int[3];for(int i=0 ; i<2;i++){for (int j = i+1; j <= 2; j++) {if(nums[j]

tmp=nums[j];

nums[j]=nums[i];

nums[i]=tmp;

}

}

}for (int i = 0; i < nums.length ; i++) {

System.out.println(nums[i]);

}

}

}

运行结果:

af4d9799e15e2f7ad2eee919d62397ee.png

【程序16】

题目:输出9*9口诀。

/*** 【程序16】

* 题目:输出9*9口诀。*/

public classSubject16 {public static voidmain(String[] args) {for (int i = 1; i <= 9 ; i++) {for (int j = 1; j <= i ; j++) {

System.out.print(i+"*"+j+"="+i*j+" ");

}

System.out.println("");

}

}

}

运行结果:

4628835f6de6e75eede831329f8d2504.png

【程序17】

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

/*** 【程序17】

* 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,

* 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。*/

public classSubject17 {public static voidmain(String[] args) {

System.out.println(peachNum(10));

}public static int peachNum(intdays){if(days == 1){return 1;

}else if(days > 1){return (peachNum(days-1) + 1) * 2;

}return 0;

}

}

运行结果:

700246c72a023039fdd3fdcb3aee6ef5.png

【程序18】

题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

除了题目本身还扩展实现了,总共可以出现多少种组合

/*** 【程序18】

* 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。

* a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

*

* 除了题目本身还扩展实现了,总共可以出现多少种组合*/

public classSubject18 {public static voidmain(String[] args) {

List list = new ArrayList<>();

Map map = new HashMap<>();

List a = new ArrayList<>();

a.add('a');

a.add('b');

a.add('c');

List b = new ArrayList<>();

b.add('x');

b.add('y');

b.add('z');

group(a,b,map,list);for(Mapmaptmp:list){boolean flag = true;for (Map.Entryentry : maptmp.entrySet()) {/***将不满足条件的情况去除掉*****/

if(((entry.getKey() =='a' && 'x' == entry.getValue()) || ((entry.getKey() =='c' && 'x' == entry.getValue()) || (entry.getKey() =='c' && 'z' ==entry.getValue())))){

flag= false;break;

}

}if(flag){

System.out.println("对决名单为:");for (Map.Entryentry : maptmp.entrySet()) {

System.out.println("选手:"+entry.getKey() + " ----------VS------------ " + "选手:"+entry.getValue());

}

}

}

}/*** 将全部分组情况展示出来

*@parama

*@paramb

*@parammap

*@paramlist*/

public static void group(List a,List b,Map map,Listlist){for (int i = 0; i < a.size(); i++) {if (i == 1) {break;

}for (int j = 0; j < a.size(); j++) {

map.put(a.get(i), b.get(j));//System.out.println(a.get(i) + "----" + b.get(j));

if(a.size() == 1){

Map mapTrue = new HashMap<>();

mapCopy(map,mapTrue);

list.add(mapTrue);//System.out.println(mapTrue);

}

List tmp1 = new ArrayList<>();

List tmp2 = new ArrayList<>();

listCopy(a,tmp1);

listCopy(b,tmp2);

tmp1.remove(a.get(i));

tmp2.remove(b.get(j));

group(tmp1,tmp2,map,list);

}

}

}/*** 将paramsMap内容复制到resultMap中

*@paramparamsMap

*@paramresultMap*/

public static voidmapCopy(Map paramsMap, Map resultMap) {if (resultMap == null) resultMap = newHashMap();if (paramsMap == null) return;

Iterator it=paramsMap.entrySet().iterator();while(it.hasNext()) {

Map.Entry entry=(Map.Entry) it.next();

Object key=entry.getKey();

resultMap.put(key, paramsMap.get(key)!= null ? paramsMap.get(key) : "");

}

}/*** 将paramsList内容复制到resultList中

*@paramparamsList

*@paramresultList*/

public static voidlistCopy(List paramsList,List resultList){for (int k = 0; k < paramsList.size(); k++) {

resultList.add(paramsList.get(k));

}

}

}

运行结果:

d88f831af06827a6ef0a0f484d652b51.png

【程序19】

题目:打印出如下图案(菱形)

/*** 【程序19】

* 题目:打印出如下图案(菱形)*/

public classSubject19 {public static voidmain(String[] args) {

diamond(6);

}/*** 打印菱形*/

public static void diamond(inta){for (int i = a; i > 0; i--) {for (int j = 0; j < i; j++) {

System.out.print(" ");

}for (int j = 0; j < a-i; j++) {

System.out.print("* ");

}

System.out.println("");

}for (int i = 0; i < a ; i++) {for (int j = 0; j < i; j++) {

System.out.print(" ");

}for (int j = 0; j < a-i; j++) {

System.out.print("* ");

}

System.out.println("");

}

}

}

运行结果:

dee8b7d810d46c846bb44d583c861ae5.png

【程序20】

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

/*** 【程序20】

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

public classSubject20 {public static voidmain(String[] args) {double sumNum = sum(20);

System.out.println("前20规律数之和为:"+sumNum);

}/*** 前num的数的和

*@paramnum*/

public static double sum(intnum){if(num == 1){return 2.0/1.0;

}else{double a =getMolecule(num);double b =getMolecule(num-1);return sum(num-1)+ a/b;

}

}/*** 按照规律获取分子

*@paramnum

*@return

*/

public static double getMolecule(intnum){if(num == 1){return 2.0;

}else if(num == 2){return 3.0;

}else{return getMolecule(num-1) + getMolecule(num-2);

}

}

}

运行结果:

5a86b218ee44e2204fa1413208deab99.png

参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值