国信蓝点杯 java50道试题及答案全解高职高专组.docx

上传人:b****6 文档编号:6708461 上传时间:2023-01-09 格式:DOCX 页数:40 大小:29.72KB
下载 相关 举报
国信蓝点杯 java50道试题及答案全解高职高专组.docx_第1页
第1页 / 共40页
国信蓝点杯 java50道试题及答案全解高职高专组.docx_第2页
第2页 / 共40页
国信蓝点杯 java50道试题及答案全解高职高专组.docx_第3页
第3页 / 共40页
国信蓝点杯 java50道试题及答案全解高职高专组.docx_第4页
第4页 / 共40页
国信蓝点杯 java50道试题及答案全解高职高专组.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

国信蓝点杯 java50道试题及答案全解高职高专组.docx

《国信蓝点杯 java50道试题及答案全解高职高专组.docx》由会员分享,可在线阅读,更多相关《国信蓝点杯 java50道试题及答案全解高职高专组.docx(40页珍藏版)》请在冰豆网上搜索。

国信蓝点杯 java50道试题及答案全解高职高专组.docx

国信蓝点杯java50道试题及答案全解高职高专组

解答时回帖格式为:

{程序编号}+代码

【程序1】 题目:

古典问题:

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

1.程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21....

publicclassTest01{

publicstaticintfibonacci(intn){

if(n==1||n==2)return1;

returnfibonacci(n-1)+fibonacci(n-2);

}

publicstaticvoidmain(String[]args){

for(inti=1;i<=10;i++){

System.out.print(fibonacci(i)+"");

}

}

}

【程序2】 题目:

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

1.程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

packageexercise.day01;

publicclassTest02{

publicstaticvoidsuShu(intn){

for(inti=2;i<=Math.sqrt(n);i++){

if(n%i==0)break;

elseif(n%i!

=0&&i==(int)Math.sqrt(n)){

System.out.print(n+"");

break;

}

}

}

publicstaticvoidmain(String[]args){

for(inti=101;i<=200;i++){

suShu(i);

}

}

}

【程序3】 题目:

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

packageexercise.day01;

publicclassTest03{

privatestaticvoidshuiXianHua(inti){

inta,b,c;

a=i%10;

b=i/10%10;

c=i/100;

if(i==a*a*a+b*b*b+c*c*c){

System.out.print(i+"");

}

}

publicstaticvoidmain(String[]args){

for(inti=100;i<+999;i++){

shuiXianHua(i);

}

}

}

【程序4】 题目:

将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

 

程序分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

 

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

packageexercise.day01;

importjava.util.Scanner;

publicclassTest04{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.println("请输入一个正整数:

");

intn=sc.nextInt();

System.out.print(n+"=");

for(intj=2;j<=n;j++){

if(n%j==0){

if(n==j){

System.out.println(j);

break;

}

else{

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

}

n=n/j;

j=2;

}

}

}

}

【程序5】 题目:

利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:

(a>b)?

a:

b这是条件运算符的基本例子。

packageexercise.day01;

importjava.util.Scanner;

publicclassTest05{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.println("请输入你的成绩:

");

intscore=sc.nextInt();

inta=0;

if(score<=100&&score>=90)

a=1;

if(score>=60&&score<90)

a=2;

if(score<60)

a=3;

switch(a){

case1:

System.out.println("A");

break;

case2:

System.out.println("B");

break;

case3:

System.out.println("C");

break;

default:

System.out.println("你输入的成绩不符合要求");

}

}

}

【程序6】 题目:

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

1.程序分析:

利用辗除法。

packageexercise.day01;

importjava.util.Scanner;

publicclassTest06{

publicstaticintmaxG(inta,intb){

if(b==0){

returna;

}

returnmaxG(b,a%b);

}

publicstaticintminG(inta,intb){

inttemp;

temp=a*b/maxG(a,b);

returntemp;

}

publicstaticvoidmain(String[]args){

System.out.println("请输入要求的两个数:

");

Scannersc=newScanner(System.in);

inta=sc.nextInt();

intb=sc.nextInt();

System.out.println("最大公约数为:

"+maxG(a,b));

System.out.println("最小公倍数为:

"+minG(a,b));

}

}

【程序7】 

题目:

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

1.程序分析:

利用while语句,条件为输入的字符不为'\n'.

packageexercise.day01;

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStreamReader;

publicclassTest07{

publicstaticvoidmain(String[]args)throwsIOException{

System.out.println("请输入一行字符:

");

BufferedReaderreader=newBufferedReader(

newInputStreamReader(System.in));

Stringstr=reader.readLine();

int[]a=newint[4];

charary[]=str.toCharArray();//字符串转化为字符数组

//charary[]=newchar[str.length()];

//for(inti=0;i

//ary[i]=str.charAt(i);

inti=0;

while(i

="\n"){

if((ary[i]>'a'&&ary[i]<'z')||(ary[i]>'A'&&ary[i]<'Z')){

a[0]+=1;

i++;

}

elseif(ary[i]>='0'&&ary[i]<='9'){

a[1]+=1;

i++;

}

elseif(ary[i]==''){

a[2]+=1;

i++;

}

else{

a[3]+=1;

i++;

}

//}

}

System.out.println("字母有:

"+a[0]);

System.out.println("数字有:

"+a[1]);

System.out.println("空格有:

"+a[2]);

System.out.println("其他字符有:

"+a[3]);

}

//}

}

【程序8】 题目:

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

packageexercise.day01;

importjava.util.Scanner;

publicclassTest08{

publicstaticvoidmain(String[]args){

ints=0;

System.out.println("请输入一个数:

");

System.out.println("请输入多少数相加:

");

Scannersc=newScanner(System.in);

inta=sc.nextInt();

intb=sc.nextInt();

System.out.print("s=");

for(inti=1;i<=b;i++){

for(intj=i;j>0;j--){

s+=a*Math.pow(10,j-1);

}

if(i==b){

System.out.println(s);

}

else{

System.out.print(s+"+");

}

s=0;

}

}

}

1.程序分析:

关键是计算出每一项的值。

【程序9】 题目:

一个数如果恰好等于它的因子之和,这个数就称为"完数"。

例如6=1+2+3.编程找出1000以内的所有完数。

packageexercise.day01;

publicclassTest09{

staticintsum=1;

publicstaticvoidmain(String[]args){

for(inti=2;i<100;i++){

f(i);

if(sum==i){

System.out.println(i);

}

}

}

publicstaticvoidf(inti){

for(intj=2;j<=i;j++){

if(i%j==0){

sum+=j;

i=i/j;

j=2;

f(i);

}

}

}

}

【程序10】 题目:

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

第10次反弹多高?

packageexercise.day01;

publicclassTest10{

publicstaticvoidmain(String[]args){

doubleh=100;

doublesum=0;

for(inti=1;i<=10;i++){

sum+=h;

h=h/2;

}

System.out.println("共经过"+sum+"米");

System.out.println("反弹"+h+"米");

}

}

【程序11】 题目:

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

都是多少?

1.程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

packageexercise.day01;

publicclassTest11{

publicstaticvoidmain(String[]args){

intsum=0;

int[]arr=newint[4];

for(inti=1;i<5;i++){

for(intj=1;j<5;j++){

for(intx=1;x<5;x++){

if(i!

=j&&i!

=x&&j!

=x){

System.out.println(i*100+j*10+x);

sum+=1;

}

}

}

}

System.out.println("无重复的三位数有:

"+sum);

}

}

【程序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.程序分析:

请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

packageexercise.day01;

importjava.util.Scanner;

publicclassTest12{

publicstaticvoidmain(String[]args){

System.out.println("请输入当月利润:

");

Scannersc=newScanner(System.in);

doublemoneyRate=sc.nextDouble();

double[]a=newdouble[6];

a[0]=(100000*0.1);

a[1]=(100000*0.075);

a[2]=(200000*0.05);

a[3]=(200000*0.03);

a[4]=(400000*0.015);

if(moneyRate<=100000){

System.out.println(moneyRate*0.1);

}

if(moneyRate<=200000&&moneyRate>100000){

System.out.println((moneyRate-100000)*0.075+a[0]);

}

if(moneyRate<=400000&&moneyRate>200000){

System.out.println((moneyRate-200000)*0.05+a[0]+a[1]);

}

if(moneyRate<=600000&&moneyRate>400000){

System.out.println((moneyRate-400000)*0.003+a[0]+a[1]+a[2]);

}

if(moneyRate<=1000000&&moneyRate>600000){

System.out.println((moneyRate-600000)*0.015+a[0]+a[1]+a[2]+a[3]);

}

if(moneyRate>1000000){

System.out.println((moneyRate-1000000)*0.001+a[0]+a[1]+a[2]+a[3]+a[4]);

}

}

}

【程序13】 题目:

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

1.程序分析:

在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

请看具体分析:

packageexercise.day01;

publicclassTest13{

publicstaticvoidmain(String[]args){

for(inti=100;i<100000;i++){

for(intj=2;j

if(Math.sqrt(i+100)==j){

for(intx=2;x

if(Math.sqrt(j+168)==x){

System.out.println(i);

}

}

}

}

}

}

}

【程序14】 题目:

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

1.程序分析:

以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

packageexercise.day01;

importjava.util.Scanner;

publicclassTest14{

publicstaticvoidmain(String[]args){

int[]a=newint[3];

System.out.println("请按这种格式输入某年某月某日:

yyyy-mm-dd");

Scannersc=newScanner(System.in);

Stringtime=sc.next();

String[]gettime=time.split("-");

for(inti=0;i

a[i]=Integer.parseInt(gettime[i]);

}

int[][]month_days={{0,31,28,31,30,31,30,31,31,30,31,30},

{0,31,29,31,30,31,30,31,31,30,31,30}};

intflag=(a[0]%4==0&&a[0]%100!

=0)||a[0]%400==0?

1:

0;

intsum=a[2];

for(inti=0;i

sum+=month_days[flag][i];

}

System.out.println("你输入的日期是该年度的第"+sum+"天");

}

}

【程序15】 题目:

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

1.程序分析:

我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

packageexercise.day01;

importjava.util.Scanner;

publicclassTest15{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

inttemp;

intx=sc.nextInt();

inty=sc.nextInt();

intz=sc.nextInt();

if(x>y){

temp=x;

x=y;

y=temp;

}

if(x>z){

temp=x;

x=z;

z=temp;

}

if(y

System.out.println(x+","+y+","+z);

}

else

System.out.println(x+","+z+","+y);

}

}

【程序16】 题目:

输出9*9口诀。

1.程序分析:

分行与列考虑,共9行9列,i控制行,j控制列。

packageexercise.day01;

publicclassTest16{

publicstaticvoidmain(String[]args){

for(inti=1;i<=9;i++){

for(intj=1;j<=i;j++){

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

}

System.out.println();

}

}

}

【程序17】 题目:

猴子吃桃问题:

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

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

1.程序分析:

采取逆向思维的方法,从后往前推断。

packageexercise.day01;

publicclassTest17{

publicstaticvoidmain(String[]args){

intnum=1;

for(inti=1;i<10;i++){

num=(num+1)*2;

}

System.out.println(num);

}

}

【程序18】 题目:

两个乒乓球队进行比赛,各出三人。

甲队为a,b,c三人,乙队为x,y,z三人。

已抽签决定比赛名单。

有人向队员打听比赛的名单。

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

1.程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1