> 文章列表 > 【Java】『蓝桥杯』10道编程题及答案(二)

【Java】『蓝桥杯』10道编程题及答案(二)

【Java】『蓝桥杯』10道编程题及答案(二)

系列文章

【Java】『蓝桥杯』10道编程题及答案(一)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130223115

【Java】『蓝桥杯』10道编程题及答案(二)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130304773

【Java】『蓝桥杯』10道编程题及答案(三)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130305068


文章目录

  • 系列文章
  • 前言
  • 一、题目
    • 1.1 【程序1】
    • 1.2 【程序2】
    • 1.3 【程序3】
    • 1.4 【程序4】
    • 1.5 【程序5】
    • 1.6 【程序6】
    • 1.7 【程序7】
    • 1.8 【程序8】
    • 1.9 【程序9】
    • 1.10 【程序10】
  • 二、答案
    • 2.1 【程序1】
    • 2.2 【程序2】
    • 2.3 【程序3】
    • 2.4 【程序4】
    • 2.5 【程序5】
    • 2.6 【程序6】
    • 2.7 【程序7】
    • 2.8 【程序8】
    • 2.9 【程序9】
    • 2.10 【程序10】

前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分符合项目开发流程,让读者更加清楚项目解决的问题、以及产品能够达到的效果。本专栏收纳项目开发过程的解决方案,是我项目开发相对成熟、可靠方法的提炼,我将这些问题的解决思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

本专栏会持续更新,不断完善,专栏文章关联性较弱(文章之间依赖性较弱,没有阅读顺序)。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现复杂的功能。

蓝桥杯10道经典编程题及答案(二)
【Java】『蓝桥杯』10道编程题及答案(二)


一、题目

1.1 【程序1】

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

1.2 【程序2】

【程序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,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

1.3 【程序3】

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

1.4 【程序4】

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

1.5 【程序5】

【程序15】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

1.6 【程序6】

【程序16】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

1.7 【程序7】

【程序17】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。

1.8 【程序8】

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

1.9 【程序9】

【程序19】题目:打印出如下图案(菱形) * *** ***** 
******* ***** *** * 
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。

1.10 【程序10】

【程序20】题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。


二、答案

2.1 【程序1】

public class ArrangementNumber {/*** 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。*/public static void main(String[] args) {int ct = 0;for (int i = 1; i < 5; i++) {for (int j = 1; j < 5; j++) {if (i == j)continue;for (int k = 1; k < 5; k++) {if (j == k || i == k)continue;ct++;System.out.print((i * 100 + j * 10 + k) + " ");}}}System.out.println("\\n共有:" + ct + "个不同的三位数。");}}

2.2 【程序2】

import java.util.Scanner;
public class PrizeCommision {public static void main(String[] args) {long profit;long prize;Scanner sc=new Scanner(System.in);while(true){System.out.println("请输入利润:");profit=sc.nextLong();if(profit>0)break;}if(profit<=100000){prize=(long) (profit*.1);}else if(profit<=200000){prize=(long) (100000*.1+(profit-100000)*.075);}else if(profit<=400000){prize=(long) (100000*.1+100000*.075+(profit-200000)*.05);}else if(profit<=600000){prize=(long) (100000*.1+100000*.075+200000*.05+(profit-400000)*.03);}else if(profit<=1000000){prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+(profit-600000)*.015);}else {prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+400000*.015+(profit-1000000)*.01);}System.out.println("你应该得到的奖金为:"+prize);}
}

2.3 【程序3】

public class SquareNumber {/*** 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。*/public static void main(String[] args) {// TODO Auto-generated method stubfor (int i = 1; i < 100000001; i++) {int sq1 = (int) Math.sqrt(i + 100);int sq2 = (int) Math.sqrt(i + 268);if ((i + 100) == sq1 * sq1 && (i + 268) == sq2 * sq2)System.out.println(i);}}
}

2.4 【程序4】

import java.util.Scanner;public class YearMonthDays {/*** 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。*/public static void main(String[] args) {int[] days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int year, month, day;Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入一个正整数作为年份:");year = sc.nextInt();if (year > 0)break;}while (true) {System.out.println("请输入一个1~12之间的整数作为月份:");month = sc.nextInt();if (month > 0 && month < 13)break;}if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))days[1] = 29;while (true) {System.out.println("请输入一个1" + "~" + days[month - 1] + "之间的整数作为号数:");day = sc.nextInt();if (day > 0 && day <= days[month - 1])break;}int sum = day;for (int i = 0; i < month - 1; i++)sum += days[i];System.out.println(year + "年" + month + "月" + day + "日是今年的第" + sum+ "天。");}}

2.5 【程序5】

import java.util.Scanner;
public class CompareTheSizeOf {/** 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换* ,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。*/public static void main(String[] args) {float a,b,c,temp;Scanner sc=new Scanner(System.in);System.out.println("请输入三个实数(在同一行时,用空格分开):");a=sc.nextFloat();b=sc.nextFloat();c=sc.nextFloat();if(a>b){temp=a;a=b;b=temp;}if(b>c){temp=b;b=c;c=temp;}if(a>b){temp=a;a=b;b=temp;}System.out.println(a+" <= "+b+" <= "+c);}
}

2.6 【程序6】

public class NineNineTable {/*** 【程序16】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。*/public static void main(String[] args) {String s;for (int i = 1; i < 10; i++) {for (int j = 1; j <= i; j++) {s = i + "*" + j + "=" + i * j + "      ";System.out.print(s.substring(0, 9));}System.out.println();}}
}

2.7 【程序7】

public class MonkeyEatingPeach {/**
* 1.程序分析:采取逆向思维的方法,从后往前推断。* 此程序包含验证!!!*/public static void main(String[] args) {// TODO Auto-generated method stubint a = 1;for (int i = 1; i < 10; i++) {a = 2 * (a + 1);}System.out.println("一共有:"+ a+ "个桃子!\\n==========================================================================");// 以下为验证:int b = a;int i = 1;while (b != 1) {b = a / 2 - 1;System.out.println("第" + (i++) + "天,猴子吃了:" + (a / 2 + 1)+ "个桃子;还剩下" + b + "个桃子(和为:" + (a / 2 + 1 + b)+ ",是头一天所剩的桃子数)。");a = b;}System.out.println("======================================================================\\n第"+ i + "天,剩下的桃子数为:" + a + "个。");}
}

2.8 【程序8】

public class PingpongGame {public static void main(String[] args) {char[] a = { 'a', 'b', 'c' };char[] b = { 'x', 'y', 'z' };int ct=0;for (int i = 0; i < a.length; i++) {for (int j = 0; j < b.length; j++) {if (i == 0 && j == 0)continue;if ((i == 2 && j == 0) || (i == 2 && j == 2))continue;System.out.println(a[i] + " : " + b[j]);ct++;}}System.out.println("一共有:"+ct+"场乒乓比赛!");}}

2.9 【程序9】

public class DiamontPattern {public static void main(String[] args) {// TODO Auto-generated method stubStringBuffer preBlank;StringBuffer star;int tmp;for (int i = 1; i < 8; i++) {preBlank = new StringBuffer();star = new StringBuffer();if (i < 5)tmp = i;elsetmp = 8 - i;for (int j = 1; j < 2 * tmp; j++) {if (j % 2 != 0)preBlank.deleteCharAt(0);star.append('*');}System.out.print(preBlank);System.out.println(star);}}}

2.10 【程序10】

public class FractionSeries {/*** 【程序20】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。* 1.程序分析:请抓住分子与分母的变化规律。*/public static void main(String[] args) {// TODO Auto-generated method stubdouble fz = 2.;double fm = 1.;double he;double sum = fz / fm;System.out.print((int) fz + "/" + (int) fm);for (int i = 1; i < 20; i++) {he = fz + fm;fm = fz;fz = he;sum += fz / fm;System.out.print(" + " + (int) fz + "/" + (int) fm);}System.out.println(" = " + sum);}}