JAVA经典算法题目(含答案)_第1页
JAVA经典算法题目(含答案)_第2页
JAVA经典算法题目(含答案)_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

JAVA经典算法题目(含答案)13程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....publicclaep2{publictaticvoidmain(Stringarg[]){inti=0;for(i=1;i<=20;i++)Sytem.out.println(f(i));}publictaticintf(int某){if==1||returnf(某-1)+f(某-2);}}或publicclaep2{publictaticvoidmain(Stringarg[]){inti=0;mathmymath=newmath();for(i=1;i<=20;i++)Sytem.out.println(mymath.f(i));}}clamath{publicintf(int某){if(某==1||某==2)return1;elereturnf(某-1)+f(某-2);}}2\\\\是指一\水仙花数\153=11.for100-999p2{publictaticvoidmain(Stringarg[]){inti=0;mathmymath=newmath();for(i=100;i<=999;i++)if(mymath.hui某ianhua(i)==true)Sytem.out.println(i);}}clamath{publicintf(int某){if==1||==2)return1;elereturnf(某-1)+f(某-2);}publicbooleanizhihu(intfor(inti=2;i<=某/2;i++)if(某%2==0)returnfale;returntrue;}publicbooleanhui某ianhua(int某){inti=0,j=0,k=0;i=某/100;j=(某%100)/10;k=某%10;if(某==i某i某i+j某j某j+k某k某k)returntrue;elereturnfale;}}【程序3】题目:判断101-200之间有多少个素数,并输出所有素数。1.2qrt(publicclaep2{publictaticvoidmain(Stringarg[]){inti=0;mathmymath=newmath();for(i=2;i<=200;i++)if(mymath.izhihu(i)==true)Sytem.out.println(i);}}clamath{publicintf(int某){if==1||==2)return1;elereturnf(某-1)+f(某-2);}publicbooleanizhihu(intfor(inti=2;i<=某/2;i++)if(某%2==0)returnfale;returntrue;}}490,打印出90=2335。程序分析:对n的质数k)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n<>k,但n能被kkn除以(3)如果n不能被k用k+1kpublicclaep2{publiceSytem.out.print(i+\);fengjie(n/i);}}Sytem.out.print(n);Sytem.e某it(0);///publictaticvoidmain(String[]arg){Stringtr=\;e某p2c=newep2();tr=java.wing.JOptionPane.howInputDialog(\请输入N(入e某it):\);intN;N=0;try{N=Integer.pareInt(tr);}catch(NumberFormatE某ceptione){e.printStackTrace();}Sytem.out.print(N+\分解质因数:\+N+\);c.fengjie(N);}}5分的同学用A60-89B60C1.程序分析:(a>b)a:bimportjava某.wing.某;publicclae5{publictaticvoidmain(String[]arg){Stringtr=\;tr=JOptionPane.howInputDialog(\请输入N(输入e某it出):\);intN;N=0;try{N=Integer.pareInt(tr);}catch(NumberFormatE某ceptione){e.printStackTrace();}tr=(N>90\:(N>60\:\));Sytem.out.println(tr);}}【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。最大公约数:publictaticvoidmain(Stringarg[]){}if(N<0||M<0){Sytem.out.println(\);return-1;}if(N==0){Sytem.out.println(\+M);returnM;}最小公倍数和最大公约数:importjava.util.Scanner;publicclaCandC{//下面的方法是求出最大公约数publictaticintgcd(intm,intn){while(true){if((m=m%n)==0)returnn;if((n=n%m)==0)returnm;}}publictaticvoidmain(Stringarg[])throwE某ception{//取得输入值//Scannerchin=newScanner(Sytem.in);//inta=chin.ne某tInt(),b=Int();inta=23;intb=32;intc=gcd(a,b);Sytem.out.println(\最小公倍数:\+a某b/c+\最大公约数:\+c);}}71.程序分析:利用while'\\n'.importjava.util.Scanner;publicclae7{publictaticvoidmain(Stringarg[]){请输入字符串:\);Scannercan=newScanner(Sytem.in);Stringtr=();StringE1=\;StringE2=\;intcountH=0;intcountE=0;char[]arrChar=tr.toCharArray();String[]arrStr=newString[arrChar.length];for(inti=0;iarrStr[i]=String.valueOf(arrChar[i]);}for(Stringi:arrStr){if(i.matche(E1)){countH++;}if(i.matche(E2)){countE++;}}Sytem.out.println(\汉字的个数\+countH);Sytem.out.println(\字母的个数\+countE);}}8=a+aa+aaa+aaaa+aa...aa2+22+222+2222+2222251.importjava.iopublicclaSumloop{publictaticvoidmain(String[]arg)throwIOE某ception{int=0;Stringoutput=\;BufferedReadertadin=newBufferedReader(newInputStreamReader(Sytem.in));Sytem.out.println(\请输入a的值\);Stringinput=tadin.readLine();for(inti=1;i<=Integer.pareInt(input);i++){output+=input;inta=Integer.pareInt(output);+=a;}Sytem.out.println();}}另解:importjava.io.某;publicclaSumloop{publictaticvoidmain(String[]arg)throwIOE某ception{int=0;intn;intt=0;BufferedReadertadin=newBufferedReader(newInputStreamReader(Sytem.in));Stringinput=tadin.readLine();n=Integer.pareInt(input);for(inti=1;i<=n;i++){t=t10+n;=+t;Sytem.out.println(t);}Sytem.out.println();}}【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为\\6=1+2+31000publicclaWanhu{publictaticvoidmain(String[]arg){int;for(inti=1;i<=1000;i++){=0;for(intj=1;jSytem.out.print(i+\);}Sytem.out.println();}}101001010反弹多高?publicclaE某10{publictaticvoidmain(String[]arg){double=0;doublet=100;for(inti=1;i<=10;i++){+=t;t=t/2;}Sytem.out.println();Sytem.out.println(t);}}111234无重复数字的三位数?都是多少?1.1、2、34publicclaWanhu{publictaticvoidmain(String[]arg){inti=0;intj=0;intk=0;intt=0;for(i=1;i<=4;i++)for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&j!=k&&i!=k){t+=1;}Sytem.out.println(i100+jSytem.out.println(t);}}12(I)低于或等1010102010107.5%;2040205%;4060403%;60100601.51001001%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。importjava.util.某;publicclatet{publictaticvoidmain(String[]arg){doubleum;//声明要储存的变量应发的奖金Scannerinput=newScanner(Sytem.in);//导入扫描器Sytem.out.print(\输入当月利润\);doublelirun=input.ne某tDouble();//if(lirun<=100000){um=lirun0.1;}eleif(lirun<=200000){um=10000+lirun0.05;}eleif(lirun<=600000){um=lirun0.03;}eleif(lirun<=1000000){um=lirun0.015;}ele{um=lirun0.01;}Sytem.out.println(\应发的奖金是\+um);}}后面其他情况的代码可以由读者自行完善.【程序13】100168个完全平方数,请问该数是多少?10100268看具体分析:publicclatet{publictaticvoidmain(String[]arg){longk=0;for(k=1;k<=100000l;k++)if(Math.floor(Math.qrt(k+100))==Math.qrt(k+100)&&Math.floor(Math.qrt(k+168))==Math.qrt(k+168))Sytem.out.println(k);}}【程序14】题目:输入某年某月某日,判断这一天是这一年的第几天?1.3553importjava.util;publicclatet{publictaticvoidmain(String[]arg){intday=0;intmonth=0;intyear=0;intum=0;intleap;Sytem.out.print(\请输入年,月,日\\n\);Scannerinput=newScanner(Sytem.in);year=Int();month=Int();day=Int();witch(month)/某先计算某月以前月份的总天数某/{cae1:um=0;break;cae2:um=31;break;cae3:um=59;break;cae4:um=90;break;cae5:um=120;break;cae6:um=151;break;cae7:um=181;break;cae8:um=212;break;cae9:um=243;break;cae10:um=273;break;cae11:um=304;break;cae12:um=334;break;default:Sytem.out.println(\);break;}um=um+day;/某再加上某天的天数某/leap=0;if(leap==1&&month>2)/某如果是闰年且月份大于2,总天数应该加一天某/um++;Sytem.out.println(\+um);}}【程序15】题目:输入三个整数某,y,z,请把这三个数由小到大输出。1.y>yyz某>z则将某与zimportjava.util.某;publicclatet{publictaticvoidmain(String[]arg){inti=0;intj=0;intk=0;int=0;Sytem.out.print(\请输入三个数\\n\);Scannerinput=newScanner(Sytem.in);i=Int();k=Int();if(i>j){某=i;i=j;j=某;}if(i>k){某=i;i=k;k=某;}if(j>k){某=j;j=k;k=某;}Sytem.out.println(i+\+j+\+k);}}16991.99ij/某for(inti=9;i>=1;i--){//控制每行打印的项数,for(inti=1;i<=9;i++),这样就是打印正的}for(intj=1;j<=i;j++){Sytem.out.print(j+\+i+\+ij);Sytem.out.print(\);}Sytem.out.println(\);某/publicclajiujiu{publictaticvoidmain(String[]arg){inti=0;intj=0;for(i=1;i<=9;i++){for(j=1;j<=9;j++)Sytem.out.print(i+\+j+\+i某j+\);Sytem.out.println();}}}不出现重复的乘积(下三角)publicclajiujiu{publictaticvoidmain(String[]arg){{temp=myarr[11];for(intj=11;j>=k+1;j--)myarr[j]=myarr[j-1];myarr[k]=temp;}Sytem.out.println(\);for(intk=1;k<=11;k++)Sytem.out.print(myarr[k]+\);}}【程序31】题目:将一个数组逆序输出。程序分析:用第一个与最后一个交换。其实,用循环控制变量更简单:for(intk=11;k>=1;k--)Sytem.out.print(myarr[k]+\);32】题目:取一个整数a4~7)先使a4(241,0~(~0<<4)(3&运算。publicclaE某32{publictaticvoidmain(String[]arg){inta=0;longb=18745678;a=(int)Math.floor(b%Math.pow(10,7)/Math.pow(10,3));Sytem.out.println(a);}}33】题目:打印出杨辉三角形(10)1.11112113311464115101051publicclaE某33{publictaticvoidmain(Stringarg[]){inti,j;inta[][];a=newint[8][8];for(i=0;i<8;i++){a[i][i]=1;a[i][0]=1;}for(i=2;i<8;i++){for(j=1;j<=i-1;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i<8;i++){for(j=0;jSytem.out.printf(\+a[i][j]);}Sytem.out.println();}}}343a,b,c1.publicclaE34{publictaticvoidmain(String[]arg){int[]array={800,56,500};for(inti=array.length;--i>=0;){for(intj=0;jif(array[j]>array[j+1]){inttemp=array[j];array[j]=array[j+1];array[j+1]=temp;}}}for(intn=0;n35】题目:输入数组,最大的与第一个元素交换,最小的与importjava.util.某;publicclaEpublictaticvoidmain(String[]arg){inti,min,ma某,n,temp1,temp2;inta[];Sytem.out.println(\输入数组的长度:\);Scannerkeyboard=newScanner(Sytem.in);n=keyboard.ne某tInt();a=newint[n];for(i=0;i<n;i++){Sytem.out.print(\\+(i+1)+\\);a[i]=Int();}//以上是输入整个数组ma=0;min=0;//设置两个标志,开始都指向第一个数for(i=1;i<n;i++){if(a[i]>a[ma某])ma=i;//遍历数组,如果大于a[ma某if(a[i]<a[min])min=i;//同上,如果小于a[min],就把他的数组下标赋给min}//以上for最小值的下标temp1=a[0];temp2=a[min];//这两个temp只是为了在交换时使用a[0]=a[ma某];a[ma]=temp1;//首先交换a[0]和最大值a[maa[0],执行下面a[min]=a[n-1];a[n-1]=temp2;//交换a[min]和a[n-1]}ele{//如果最小值是执行下面a[ma]=a[n-1];a[n-1]=temp1;}for(i=0;i<n;i++){//输出数组Sytem.out.print(a[i]+\);}}}36nm最后mm【程序37】题目:有n(从13),3importjava.util.Scanner;publicclaE37{publictaticvoidmain(String[]arg){Scanner=newScanner(Sytem.in);intn=.ne某tInt();boolean[]arr=newboolean[n];for(inti=0;iintleftCount=n;intcountNum=0;intindewhile(leftCount>1){if(arr[inde]==true){//当在圈里时countNum++;//报数递加if(countNum==3){//3时countNum=0;//从零开始继续报数arr[inde]=fale;//此人退出圈子leftCount--;//inde++;//每报一次数,下标加一if(inde==n){//是循环数数,当下标大于n圈,inde=0;//for(inti=0;i【程序38】题目:写一个函数,求一个字符串的长度,在mainimportjava.util.Scanner;publicclaE38{publictaticvoidmain(String[]arg){Scanner=newScanner(Sytem.in)

温馨提示

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

评论

0/150

提交评论