JAVA经典程序.doc_第1页
JAVA经典程序.doc_第2页
JAVA经典程序.doc_第3页
JAVA经典程序.doc_第4页
JAVA经典程序.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21. 斐波那契数列, Sn = Sn-1+Sn-21. importjava.util.*;2. 3. publicclassRubbitTest4. publicstaticvoidmain(Stringargs)5. longs1,s2;/定义这个月和下个月兔子的数量 6. s1=1;/第一个月为1对 7. s2=1;/第二个月为1对 8. inti=1;/定义一个控制变量 9. intm;/月份数 10. Scannerin=newScanner(System.in);/从控制台输入想要查看的月份 11. System.out.println(请输入你想要查看的月数:);/输入提示 12. m=in.nextInt();/输入的整数月份赋值给m 13. /while循环 14. while(true)15. /第一个月和第二个月兔子的数量都为1对 16. if(i=1|i=2)17. System.out.println(i+month:+s1);18. i+;/控制变量i加1 19. 20. /i大于3并且小于我们需要查看的月份 21. elseif(im)22. s1=s1+s2;23. s2=s1+s2;24. System.out.println(i+month:+s1);25. i+;/月份加1 26. System.out.println(i+month:+s2);27. i+;/朋份加1 28. else29. break;/不符合条件就退出 30. 31. 32. 33. 34. 【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。1. importjava.util.*;2. publicclassPrimeTest3. 4. publicstaticvoidmain(Stringargs)5. 6. intx=0;7. Vectorv=newVector();/集合,用来装所有的素数 8. for(inti=101;i=200;i+)9. 10. booleanb=true;/标签为b为真 11. for(intj=2;ji;j+)12. 13. if(i%j=0)/求余数是否为0 14. 15. b=false;/如果为0,将标签设置为false 16. break;/可以整除就跳出这个循环 17. 18. 19. if(b=true)/ 20. 21. v.add(i);/将符合要求的i加到集合里 22. x+;/素数个数加1 23. 24. 25. System.out.println(100到200中间有+x+个素数);26. System.out.println(素数为:/n+v);27. 28. 【程序3】题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方5的三次方3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。1. importjava.util.*;2. publicclassDaffodilTest3. 4. publicstaticvoidmain(Stringargs)5. 6. intx=0;7. Vectorv=newVector();8. DaffodilNumberdb=newDaffodilNumber();9. for(inti=100;i1000;i+)10. 11. if(db.isDaffodilNumber(i)=true)12. 13. v.add(i);14. x+;15. 16. 17. System.out.println(100到1000之间有+x+个水仙花数);18. System.out.println(所有的水仙花数为:+v);19. 20. 21. classDaffodilNumber22. 23. intb,s,g;24. publicbooleanisDaffodilNumber(inti)25. 26. booleanflag=false;27. g=i%10;/个位数 28. s=(i/10)%10;/十位数 29. b=i/100;/百位数 30. if(i=(g*g*g)+(s*s*s)+(b*b*b)31. 32. flag=true;33. 34. returnflag;35. 36. 【程序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的值,重复执行第一步。1. importjava.util.*;2. publicclassPrimeSplitTest3. publicstaticvoidmain(Stringargs)4. intx;/定义一个整型变量 5. Scannerin=newScanner(System.in);/定义从键盘输入 6. System.out.print(请输入一个正整数:);/提示 7. x=in.nextInt();/将从键盘输入的数赋值给x 8. newPrimeSplit(x);/匿名初始化一个对象,还有参数的构造函数 9. 10. 11. classPrimeSplit12. intk=2;/将最小的质数赋值给k 13. publicPrimeSplit(intx)14. /小于等于1的数不可以分解 15. if(x=1)16. System.out.println(x+是无效的被分解数);17. 18. /如果输入的是最小质数2, 19. elseif(x=2)20. System.out.println(x+分解后的质因数为:1*+x);21. else22. /1是所有的正整数的质数 23. System.out.print(x+分解后的质因数为:1);24. while(k=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(ab)?a:b这是条件运算符的基本例子。1. importjava.util.*;2. publicclassTest53. 4. publicstaticvoidmain(Stringargs)throwsException5. 6. intn:7. /将输入的数赋值给变量n 8. Scannerin=newScanner(System.in);9. n=in.nextInt();10. 11. /判断变量n的范围, 12. Stringx=(n=90)?a:(n60)?c:b);13. System.out.println(x);14. 15. 【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。1. importjava.util.*;2. publicclassTest63. 4. publicstaticvoidmain(Stringargs)5. 6. intm,n;7. Scannerin=newScanner(System.in);8. System.out.println(请输入两个正整数:);9. System.out.print(第一个数为:);10. m=in.nextInt();11. System.out.print(第二个数为:);12. n=in.nextInt();13. 14. MaxDivisorMinMultiplemdmm=newMaxDivisorMinMultiple(m,n);15. 16. System.out.println(最大公约数为:+mdmm.getMaxDivsior();17. System.out.println(最小公倍数为:+mdmm.getMinMultiple();18. 19. 20. classMaxDivisorMinMultiple21. 22. privateintm,n;23. privateintMaxDivsior,MinMultiple;24. /构造函数 25. publicMaxDivisorMinMultiple(intm,intn)26. 27. if(mn)/输入的两个数中,大数赋值给m,小数赋值给n, 28. 29. this.m=m;30. this.n=n;31. 32. else33. 34. this.m=n;35. this.n=m;36. 37. 38. 39. publicintgetMaxDivsior()40. 41. for(inti=n;i=1;i-)42. 43. /小n的数中第一个能被m和n整除的 44. if(n%i=0&m%i=0)45. 46. MaxDivsior=i;47. break;48. 49. 50. returnMaxDivsior;51. 52. publicintgetMinMultiple()53. 54. inti=1;55. while(true)56. 57. /n最小的倍数可以把m整除 58. if(n*i)%m=0)59. 60. MinMultiple=n*i;61. break;62. 63. i+;64. 65. returnMinMultiple;66. 67. 【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1. importjava.io.*;2. publicclassTest73. 4. publicstaticvoidmain(Stringargs)throwsException5. 6. BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in);7. StringBuffersb=newStringBuffer(br.readLine();8. JudgeElementje=newJudgeElement(sb);9. 10. System.out.println(字母的总数为:+je.getCharCount();11. System.out.println(数字的总数为:+je.getNumberCount();12. System.out.println(空格的总数为:+je.getSpaceCount();13. System.out.println(其它字符的总数为:+je.getOtherCount();14. 15. 16. 17. classJudgeElement18. 19. StringBuffersb;20. intcharCount=0;21. intspaceCount=0;22. intnumberCount=0;23. intotherCount=0;24. publicJudgeElement(StringBuffersb)25. 26. this.sb=sb;27. for(inti=0;i=a&sb.charAt(i)=A&sb.charAt(i)0&sb.charAt(i)9)38. 39. numberCount+;40. 41. else42. 43. otherCount+;44. 45. 46. 47. publicintgetCharCount()48. 49. returncharCount;50. 51. publicintgetSpaceCount()52. 53. returnspaceCount;54. 55. publicintgetNumberCount()56. 57. returnnumberCount;58. 59. publicintgetOtherCount()60. 61. returnotherCount;62. 63. 64. 【程序8】题目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。1.程序分析:关键是计算出每一项的值。1. importjava.util.*;2. publicclassTest83. 4. publicstaticvoidmain(Stringargs)5. 6. Scannerin=newScanner(System.in);7. System.out.print(请输入一个1到9之间的数字做为初始值:);8. intn=in.nextInt();9. System.out.print(请输入循环的次数:);10. inttime=in.nextInt();11. 12. Computecom=newCompute(n,time);13. com.Start();14. System.out.println(结果为:+com.getResult();15. 16. 17. classCompute18. 19. privateintn,time;20. privateintsub=0;21. privateinttemp=0;22. publicCompute(intn,inttime)23. 24. this.n=n;25. this.time=time;26. 27. publicvoidStart()28. 29. if(time=0)30. 31. sub=0;32. 33. else34. 35. for(inti=1;i=time;i+)36. 37. temp=temp*10+n;38. sub=sub+temp;39. 40. 41. 42. publicintgetResult()43. 44. returnsub;45. 46. 【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为完数。例如6=123.编程找出1000以内的所有完数。view plaincopy to clipboardprint?1. publicclassTest92. 3. publicstaticvoidmain(Stringargs)4. 5. 6. for(inti=1;i=1000;i+)7. 8. intn=0;9. for(intj=1;j=i/2;j+)10. 11. if(i%j=0)/j能被i整除,j就是i的因子 12. 13. n=n+j;14. 15. 16. if(i=n)17. 18. System.out.println(i);19. 20. 21. 22. 【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?view plaincopy to clipboardprint?1. publicclassTest102. 3. publicstaticvoidmain(Stringargs)4. 5. doubleh=100;6. doublesub=0;7. for(inti=1;i=10;i+)8. 9. sub=sub+h;10. h=h/2;11. 12. System.out.println(第10次落地时,小球运行的距离为:+sub);13. System.out.println(第10次弹起后的高度为:+h);14. 15. 【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。view plaincopy to clipboardprint?1. importjava.util.*;2. publicclassTest113. 4. publicstaticvoidmain(Stringargs)5. 6. intn;7. intcount=0;8. Vectorv=newVector();9. for(inti=1;i=4;i+)10. 11. for(intj=1;j=4;j+)12. 13. if(i!=j)14. 15. for(intk=1;k=4;k+)16. 17. if(i!=k&j!=k)18. 19. n=i*100+j*10+k;20. v.add(n);21. count+;22. 23. 24. 25. 26. 27. System.out.println(count);28. System.out.println(v);29. 30. 【程序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.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 view plaincopy to clipboardprint?1. importjava.util.*;2. publicclassTest123. 4. publicstaticvoidmain(Stringargs)5. 6. doublereward=0.0;7. doubleprofit=0.0;8. Scannerin=newScanner(System.in);9. profit=(double)in.nextLong();10. if(profit=100000)11. 12. reward=profit*0.1;13. 14. elseif(profit=200000)15. 16. reward=(100000*0.1)+(profit-100000)*0.075);17. 18. elseif(profit=400000)19. 20. reward=(100000*0.1)+(100000*0.075)+(profit-200000)*0.05);21. 22. elseif(profit=600000)23. 24. reward=(100000*0.1)+(100000*0.075)+(200000*0.05)+(profit-400000)*0.03);25. 26. elseif(profit=1000000)27. 28. reward=(100000*0.1)+(100000*0.075)+(200000*0.05)+(200000*0.03)+(profit-600000)*0.015);29. 30. else31. 32. reward=(100000*0.1)+(100000*0.075)+(200000*0.05)+(200000*0.03)+(400000*0.015)+(profit-1000000)*0.01);33. 34. System.out.println(reward);35. 36. 【程序 13 】 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? 1. 程序分析:在 10 万以内判断,先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的数字正好是整数,就可以满足要求。 view plaincopy to clipboardprint?1. publicclassTest0132. 3. publicstaticvoidmain(Stringargs)4. 5. doublea,b;6. for(inti=1;iy 则将 x 与 y 的值进行交换,然后再用 x 与 z 进行比较,如果 xz 则将 x 与 z 的值进行交换,这样能使 x 最小 view plaincopy to clipboardprint?1. importjava.uti

温馨提示

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

评论

0/150

提交评论