国信蓝点杯 java50道试题及答案全解高职高专组.docx
- 文档编号:6708461
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:40
- 大小:29.72KB
国信蓝点杯 java50道试题及答案全解高职高专组.docx
《国信蓝点杯 java50道试题及答案全解高职高专组.docx》由会员分享,可在线阅读,更多相关《国信蓝点杯 java50道试题及答案全解高职高专组.docx(40页珍藏版)》请在冰豆网上搜索。
国信蓝点杯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];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国信蓝点杯 java50道试题及答案全解高职高专组 国信 蓝点杯 java50 试题 答案 高职 高专组