1、国信蓝点杯 java50道试题及答案全解高职高专组解答时回帖格式为:程序编号+代码【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.public class Test01 public static int fibonacci(int n) if(n=1|n=2) return 1; return fibonacci(n-1)+fibonacci(n-2); public static void main(String
2、args) for(int i=1;i=10;i+) System.out.print(fibonacci(i)+ ); 【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。package exercise.day01;public class Test02 public static void suShu(int n) for(int i=2;i=Math.sqrt(n);i+) if(n%i=0) break; else if(n%i!=0&i=(int)Ma
3、th.sqrt(n) System.out.print(n+ ); break; public static void main(String args) for(int i=101;i=200;i+) suShu(i); 【程序3】题目:打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数 ,因为153=1的三次方5的三次方3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。package exercise.day01;public class Test03 private static
4、 void shuiXianHua(int i) int a,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+ ); public static void main(String args) for(int i=100;i+999;i+) shuiXianHua(i); 【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印
5、出即可。(2)如果n k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。package exercise.day01;import java.util.Scanner;public class Test04 public static void main(String args) Scanner sc=new Scanner(System.in); System.out.println(请输入一个正整数:); int n=sc.nextInt(); System.out.print(n+=
6、); for(int j=2;j =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(a b)?a:b这是条件运算符的基本例子。package exercise.day01;import java.util.Scanner;public class Test05 public static void main(String args) Scanner sc=new Scanner(System.in); System.out.println(请输入你的成绩:); int score=sc.nextInt(); int a = 0; if(score=90)
7、 a=1; if(score=60&score90) a=2; if(score60) a=3; switch(a) case 1: System.out.println(A); break; case 2: System.out.println(B); break; case 3: System.out.println(C); break; default: System.out.println(你输入的成绩不符合要求); 【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。package exercise.day01;import java.util
8、.Scanner;public class Test06 public static int maxG(int a,int b) if(b=0) return a; return maxG(b,a%b); public static int minG(int a,int b) int temp; temp=a*b/maxG(a,b); return temp; public static void main(String args) System.out.println(请输入要求的两个数:); Scanner sc=new Scanner(System.in); int a=sc.nextI
9、nt(); int b=sc.nextInt(); System.out.println(最大公约数为:+maxG(a,b); System.out.println(最小公倍数为:+minG(a,b); 【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为 n .package exercise.day01;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class
10、Test07 public static void main(String args) throws IOException System.out.println(请输入一行字符:); BufferedReader reader = new BufferedReader( new InputStreamReader(System.in); String str=reader.readLine(); int a=new int 4; char ary=str.toCharArray(); /字符串转化为字符数组 / char ary=new charstr.length(); / for(int
11、 i=0;istr.length();i+) / aryi=str.charAt(i); int i=0; while(ia&aryiA&aryi=0&aryi=9) a1+=1; i+; else if(aryi= ) a2+=1; i+; else a3+=1; i+; / System.out.println(字母有:+a0); System.out.println(数字有:+a1); System.out.println(空格有:+a2); System.out.println(其他字符有:+a3); /【程序8】题目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。
12、例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。package exercise.day01;import java.util.Scanner;public class Test08 public static void main(String args) int s=0; System.out.println(请输入一个数:); System.out.println(请输入多少数相加:); Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); System.
13、out.print(s=); for(int i=1;i0;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=123.编程 找出1000以内的所有完数。package exercise.day01;public class Test09 static int sum=1; public static void main(String args) fo
14、r(int i=2;i100;i+) f(i); if(sum=i) System.out.println(i); public static void f(int i) for(int j=2;j=i;j+) if(i%j=0) sum+=j; i=i/j; j=2; f(i); 【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?package exercise.day01;public class Test10 public static void main(String args) double h
15、=100; double sum=0; for(int i=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。组成所有的排列后再去 掉不满足条件的排列。package exercise.day01;public class Test11 public static void main(String args) int su
16、m=0; int arr=new int4; for(int i=1;i5;i+) for(int j=1;j5;j+) for(int x=1;x5;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
17、%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。package exercise.day01;import java.util.Scanner;public class Test12 public static void main(String args) System.out.println(请输入当月利润:); Scanner sc=new Scanner(Syst
18、em.in); double moneyRate=sc.nextDouble(); double a=new double6; a0=(100000*0.1); a1=(100000*0.075); a2=(200000*0.05); a3=(200000*0.03); a4=(400000*0.015); if(moneyRate=100000) System.out.println(moneyRate*0.1); if(moneyRate100000) System.out.println(moneyRate-100000)*0.075+a0); if(moneyRate200000) S
19、ystem.out.println(moneyRate-200000)*0.05+a0+a1); if(moneyRate400000) System.out.println(moneyRate-400000)*0.003+a0+a1+a2); if(moneyRate600000) System.out.println(moneyRate-600000)*0.015+a0+a1+a2+a3); if(moneyRate1000000) System.out.println(moneyRate-1000000)*0.001+a0+a1+a2+a3+a4); 【程序13】题目:一个整数,它加上1
20、00后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:package exercise.day01;public class Test13 public static void main(String args) for(int i=100;i100000;i+) for(int j=2;ji+100;j+) if(Math.sqrt(i+100)=j) for(int x=2;xj+168;x+) if(Math.sqrt(j+168
21、)=x) System.out.println(i); 【程序14】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。package exercise.day01;import java.util.Scanner;public class Test14 public static void main(String args) int a=new int 3; System.out.println(请按这种格式输入某年某月某日:yyyy-mm-dd); Scan
22、ner sc=new Scanner(System.in); String time=sc.next(); String gettime=time.split(-); for(int i=0;igettime.length;i+) ai=Integer.parseInt(gettimei); 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; int flag=(a0%4=0&a0%100!=0)|a0%400=0?1:0; int sum=a2; for(int i=0;
23、i y则将x与y的值进行交换,然后再用x与z进行比较,如果x z则将x与z的值进行交换,这样能使x最小。package exercise.day01;import java.util.Scanner;public class Test15 public static void main(String args) Scanner sc=new Scanner(System.in); int temp; int x=sc.nextInt(); int y=sc.nextInt(); int z=sc.nextInt(); if(xy) temp=x; x=y; y=temp; if(xz) tem
24、p=x; x=z; z=temp; if(yz) System.out.println(x+,+y+,+z); else System.out.println(x+,+z+,+y); 【程序16】题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。package exercise.day01;public class Test16 public static void main(String args) for(int i=1;i=9;i+) for(int j=1;j=i;j+) System.out.print(j+*+i+=+i*j+t); System.o
25、ut.println(); 【程序17】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。1.程序分析:采取逆向思维的方法,从后往前推断。package exercise.day01;public class Test17 public static void main(String args) int num=1; for(int i=1;i10;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