JAVA编程题目含解答分析_第1页
JAVA编程题目含解答分析_第2页
JAVA编程题目含解答分析_第3页
JAVA编程题目含解答分析_第4页
JAVA编程题目含解答分析_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【程序1】题目:古典问题:有一对兔子,从岀生后笫3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月乂生一对兔子,假如兔子都不死,问每个月的兔子总数 为多少?1.程序分析:兔子的规律为数列1, 1, 2, 3, 5, & 13, 21.import java util Scanner;public class rabbit public static void main(String args) int number = 1z month;int tmpl = 1t tmp2 = 1;Scanner sc = new Scanner(System.in);System, out .prin

2、tin (n请输入第几个月:f,);month = scnextlnt();for (int i = 1; i = month; i+)if (i = 2)number = 1;else number = tmpl + tmp2 ;/前两个月兔子数之和tmp2 = tmpl;/ 前第二个月tmpl = number; / / 前一个月System.out.printin (+ i + ”个月 的兔子数是:H + number);【程序2】题目:判断101-200之间有多少个素数,并输岀所有素数。1 程序分析:判断素数的方法:用一个数分别去除2到sqrt (这个数),如果能被 整除,则表明此数不

3、是素数,反之是素数。public class DemoO1 public static void main(String args) int count = 0;for(int i=101; i200; i+=2)boolean b = false;for(int j=2; j=Mathsqrt(i); j+)if(i % j = 0) b = false; break;elseb = true;if(b = true) count +;System.ou七.println(i );System.out. println (素数个数是:+ count);【程序3】题LI:打印出所有的水仙花数7

4、所谓水仙花数是指一个三位数,其各位数字 立方和等于该数本身。例如:153是一个水仙花数S因为153二1的三次方+ 5的 三次方+ 3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。public class DaffodilsNumber / *【程序3】题目:打印出所有的“水仙花数“,所谓“水仙花数“是指个三位数,其各 位数字立方和等于该数本身。例如:* 153是个“水仙花数“,因为153=1的三次方+ 5的三次方+3的三次方。1.程序分 析:*利用for循环控制100-999个数,每个数分解出个位,十位,百位。/public static void

5、 main(String( args)/ TODO Auto-generated method stubDaffodilNumber dn;int o匕=0;for (int i 二 100; i 1000; i+)dn = new DaffodilNumber(i);/System outprintin(dn);if (dn isDaffodilNum匕er()ct+;Syste m.out;. printin (i + = + dn);System out; printin(=);System.out prin匕:Ln (”之I、可共有:n + ct + ”个水仙I花数。n);class

6、DaffodilNumber privateintbw;privateintsw;privateintgw;privateintnum;public DaffodilNumber(int num) this num = num;this bK = num / 100;this sw = (num-bw*100)/10;this gw = num % 10;public boolean isDaffodilNumber()returntrue;* sw + gw * gw * gw)if (num = bw * bw * bw + sw * sw1elsereturnfalse;public S

7、tringtoString()return bw + M*r + bw + M*r + bw + H + H + sw + M*r + sw + M*r + swgwgw +gw;【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90二2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数4然后按下述步骤完 成:如果这个质数恰等于m则说明分解质因数的过程已经结束,打印岀即可。 如果nk,但n能被k整除,贝9应打印岀k的值,并用n除以k的商,作为新的正 整数你m重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。import j ava ut

8、il Scanner;public class PrimeSplit *【程序4】题目:将个正整数分解质因数。例如:输入90,打印出90=2*3*3*5*程序分析:对n进行分解质因数,应先找到个最小的质数k,然后按下述步骤完成:* (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。* (2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数 你n,重复执行第一步。* (3)如果n不能彼k整除,则用k+1作为k的值,重复执行第步。*/public static void main(String args)/ TODO Auto-generated

9、method stubScanner sc = new Scanner(Systemin);int n;while (true) System, out .print In (n 请输入个人的整数:); n = scnextlnt ();if (n 1)break;System out; .print (n int i = 2;String str = while (i = n) if (n % i = 0 & isPrime(i)str += ,*H + i;n /= i;continue;i+;System out printin(str substring(1);private stat

10、ic boolean isPrime(int n) for (int i = 2; i b)?a:b这是条件运算符的基本例子。import j ava util Scanner;public class PerformanceRating *【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩20分的同学用A衣示, 60-89分之间的用3衣示,60分以下的用C衣示。* 1 程序分析:(ab)?a:b这是条件运算符的基本例了。public static void main(String args)/ TODO Auto-generated method stubScanner sc = ne

11、w Scanner(System in);float f;while (true)System out;.printin (请筋il入个成纟贾:H);f = scnextFloat();if (f = 0 & f = 90 ? HAM : (f 0)break;while (true) System, out .printin (请输入第二个正整数:);n = scnextlnt ();if (n 0)break;c = god m, n);System.ou七.printin ( H + m + , + n + = * + c);Syste m.oiit;. printin ( ( + m+

12、 , + n + ) = + m * n / c);private static int gcd (int ar int b) /吏川織转和除法int r=a%b;if (r=0) return b;elsereturn gcd(b,r);法二:import j ava util Scanner;public class MultipleDivisor / *【程序6】题目:输入两个正整数m和n,求其最人公约数和最小公倍数。1.程用分析:利用辗除法。*/public static void main(String args)/ TODO Auto-generated method stubin

13、t m, n, c;Scanner sc = new Scanner(System in);while (true)System, out .printIn (请输入第个正整数:);m = scnextlnt ();if (m 0)break;while (true)System, out .printIn (H 请输入第二个正整数:H;n = scnextlnt();if (n 0)break;c = god (m, n);Systemoutprintin( + m + z + n + = H + c);Syste m.outz. printin ( ( + m+ , + n + ) = H

14、 + m * n / c);private static int gcd (int int b) /使用辗转相诫法完成的if (a b) int tmp;tmp = a;a = b;b = tmp;if (a % b = 0)return b;elsereturn gcd(br a - b);【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为n.import java io. BufferedReader;import java io.InputStreamReader:public class JudgeB

15、lankLetterEtc /*【程序7】题目:输入-行字符,分别统计出其中英文字母、空格、数字和其它字符的 个数。* 1.程序分析:利用while语句,条件为输入的字符不为n.* throws Exception*/public static void main(StringZ args) throws Exception / TODO Auto-generated method stubBufferedReader br = new BufferedReader(new InputStreamReader(System in);System, out. printinC请输入串字符串(可包

16、含字母、数字、空格及其它字符):StringBuffer sb = new StringBuffer(brreadLineO);int letterCount = 0;int blankCount = 0;int numberCount = 0;+ sb + 中); letterCount); numberCount);int otherCount = 0;for (int i = 0; i sb. length(); i+) char c = sb charAt (i);if ( a = c & c = z )II 3 二 c & c)letterCount+; else if (O = c

17、 & c =:9,) numberCount+; else if (二二 c) blankCount+; else otherCount+;System, out. printin C字符串:System out printin (字System, out. printin C数字:System, out. printin C 空格:+ blankCount);System, out. printin C 其它字符:” + otherCount);法二:import java io. BufferedReader;import java io.InputStreamReader;public

18、class JudgeLetterBlankNumberEtc /* param args* throws Exception*/SuppressWarnings (,zdeprecationzz)public static void main(StringZ args) throws Exception / TODO Auto-generated method stubSystem, out. printin (z,请输入串字符:);InputStreamReader isr = new InputStreamReader(System. in); BufferedReader br = n

19、ew BufferedReader (isr);String str = br. readLineO ;int lc = 0;int nc = 0;int be = 0;int oc = 0;for (int i = 0; i 0 & m 1/ 1 & “ 19)break;long sum = m;long t = m;String s = H + m;for (int i = 0; i n - 1; i+)t = 10 * t + m;s += H + n + t;sum += t;Systemout;printin (s + = + sum);【程序9】题目:一个数如果恰好等于它的因子之

20、和,这个数就称为完全数。例如6二1 + 2 + 3.编程找出1000以内的所有完全数。public class PerfectNumber / *【程序9】题目:个数如果恰好等于它的因子之和,这个数就称为“完全数“。例如 6=1+24-3.编程找出1000以内的所有完全数。*/public static void main(String args)/ TODO Auto-generated method stubSystemoutprintin (1000以内,所冇的完全数彳j: n );for (int i = 2; i 1001; i+)String str = f 1n ;int sum

21、 = 1;for (int j = 2; j = i / 2; j+)if (i % j = 0) sum += j;str +=”+”+ j;if (i = sum) System.outz.printin (sum + = H + str);【程序10】题LI: 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下, 求它在第10次落地时,共经过多少米?第10次反弹多高?public class BallBounce *【程序10】题目:球从100米高度自由落下,每次落地后反跳回原高度的半再 落下,求它在第10次落地时,共经过多少米?第10次反弹多高?*/public stat

22、ic void main(String args)/ TODO Auto-generated method stubdouble high = 100.0;double sum = 00;for (int i = 0; i 10; i+)sum += high;high /= 2;System, out. print In (H 小球 10 后的经过的距离为:+ sum + 米。);System, out .printin (小球第10次落地后,再弹起的高度为:+ high + 米【程序11】 题U:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都 是多少?1 程序分析:可

23、填在百位、十位、个位的数字都是1、2、3、4o组成所有的排列 后再去掉不满足条件的排列。public class ArrangementNumber / *【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位 数?都是多少?* 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再 去掉不满足条件的排列。*/public static void main(String args)/ TODO Auto-generated method stubint ct = 0;for (int i = 1; i 5; i+)for (int j = 1

24、; j 5; j+)if (i = j)continue;for (int k = 1; k 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+ (prof it-200000) 05);else if (profit=600000) prize=(long)(100000* 1 +

25、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-1000 000)*.01);System, out.printin (你应该得到的奖金为:n+prize);【程序13】题目:一个整数,它加上1

26、00后是一个完全平方数,再加上168 乂是一个完全平 方数,请问该数是多少?1 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268 后再开方,如果开方后的结果满足如下条件,即是结果。public class SquareNumber / *【程序13】题目:个整数,它加上100后是个完全平方数,再加上168又是个完 全平方数,请问该数是多少?*1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开 方,如果开方后的结果满足如下条件,即是结果。 /public static void main(String( args)/ TODO Auto

27、-generated method stubfor (int i = 1; i 0)break;while (true) System, out .printIn (请输入个12之间的整数作为丿J份:”);month = scnextlnt ();if (month 0 & month 0 & day = daysmonth - 1)break;int sum = day;for (int i = 0; i y则将 x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换, 这样能使X最小。import j ava util Scanner;public class Comp

28、areTheSizeOf /*【程序15】题目:输入三个整数xzyz2,请把这三个数由小到大输岀。.程序分析:我们想办法把最小的数放到:上,先将x与y进行比较,如果:y则将*与y 的值进行交换*,然后再用況与z进行比较,如果Qn则将次与z的值进行交换,这样能使次最小。* /public static void main(String args)float ab,c,temp;Scanner so二new Scanner(System in);System, out.printin (请输入三个实数(在同-行时,用空格分开):”);a=sc nextFloat();b=sc nextFloat(

29、);c=sc nextFloat();if(ab)temp=a;a=b;b=temp;if (bc) temp=b;b=c;c=temp;if (ab) temp=a;a=b;b=temp;System.out.printin(a+ = +b+ = +c);【程序16】题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 public class NineNineTablm *【程序16】题目:输出9口诀。程序分析:分行与列考虑,共9行9列,i控制行 j控制列。public static void main(String args)/ TODO Auco-gene

30、rated method stubString s;for (int i = 1; i 10; i+)for (int j = 1; j = i; j+) s = i + *- + j + = + i * j + H;System out.print(s substring(0,9);System out; printin ();【程序17】题th猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,乂 多吃了一个 第二天早上乂将剩下的桃子吃掉一半,乂多吃了一个。以后每天早 上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃 子了。求第一天共摘了多少。1.程序分析:

31、采取逆向思维的方法,从后往前推断。public class MonkeyEatingPeach *【程序17】题目:猴门吃桃问题:猴了第天摘下若干个桃&当即吃了 半,还不 瘾,又多吃了一个*第二天早上又将剩下的桃了吃掉半,又多吃了 个。以后每天早上都吃了前天剩下*的半零个。到第io天早上想再吃时,见只剩下个桃r-fo求第-天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。*此程序包含验证! ! !*/public static void main(String args)/ TODO Auto-generated method stubint a = 1;for (int i =

32、 1; i 10; i+)a = 2 * (a + 1);System out printin C 共有:n+ a+ “个桃子!n=/以下为验证:int b = a;int i = 1;while (b != 1)b = a / 2 - 1;System.outz.printin (+ (i+) + 天/猴 J【吃 J : + (a / 2 + 1) + ”个桃了;还剩下” +匕+ ”个桃f (和为:” + (a / 2 + 1 + b) + “,是头天所剩的桃子数)。“);a = b;System outprintin(n=n 第”+ i + ”天,剩下的桃了数为:” + a + 个。);【

33、程序18】题目:两个乒乓球队进行比赛,各出三人。甲队为a, b,c三人,乙队为x, y,z三人。 已抽签决定比赛名单。有人向队员打听比赛的名单。&说他不和x比,c说他不和 x,z比,请编程序找出三队赛手的名单。public class PingpongGame / *【程序18】*题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为xzyz2三人。已 抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比*,c说他不和比,请编程序找出三队赛手的名单。*/public static void main(String( args)/ TODO Auto-generated met

34、hod stubchar a = a1, O ;char b = 匕J yf , fzf ;int ct=0;for (int i = 0; i alength; i+)for (int j = 0; j blength; j+)if (i = 0 & j = 0)continue;if (i = 2 & j = 0) | (i = 2 & j = 2)continue;Syste m.outz. printin (a i + : + bj); ct+;System out: .println ( 共有:+c:七+J为乒乓比赛! H );【程序19】题LI:打印出如下图案(菱形)* I I I

35、 I I I I I I I I I I j I I I *1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律, 利用双重for循环,第一层控制行,第二层控制列。public class DiamontPattern / *【程序 题目:打印出如下图案(菱形)T 程序分析:先把图形分成两部分来看待,前四行个规律,后三行个规術 利用双 重for循环,第一层控制行,第二层控制列。*/public static void main(String args)/ TODO Auto-generated method stubStringBuffer preBlank;StringBu

36、ffer star;int tmp;for (int i = 1; i 8; i+)preBlank = new StringBuffer(n n);star = new StringBuffer ();if (i 5)tmp = i;elsetmp = 8 - i;for (int j = 1; j 2 * tmp; j+)if (j % 2 != 0)preBlank.delmtmCharAt(0); star append(*);System out; .print (preBlank);SystemouDprintln(star);【程序20】题目:有一分数序列:2/1, 3/2, 5

37、/3, 8/5, 13/8, 21/13.求出这个数列的前 20项之和。1.程序分析:请抓住分子与分母的变化规律。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.oiit;.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论