


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA经典算法40题(供面试所用)现在是3月份,也是每年开年企业公司招聘的高峰期,同时有许多的朋友也出来找工作。现在的招聘他们有时会给你 面试题或者智力测试题,也有的直接让你上机操作,写一段程序。算法的计算不乏岀现,基于这个原因我自己 法上的题型。希望对于大家有所帮助。岀一套搜集了一些算【程序4】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个对兔子,假如兔子都不死,问每个月的兔子总数为多少?月又生一1 .程序分析:兔子的规律为数列1,1,2,3,5,8,13,2112345678910111213public class exp2public s
2、tatic void main(String args)int i=0;for(i=l;i=20;i+)System.out ? printIn(f(i);public static int f(irit x)if(x=l | x=2)return 1;elsereturn f(x-l)+f(x-2);1415或1617181920212223public class exp2public static void main(String args)int i=0;math mymath = new math();for(i=l;i=20;i+)System.out ? println(myma
3、th.A(i);24 25 class math27public int f(int x)2829if(x=l | x=2)30wturn 1;31else32return f(x-l)+f(x-2);3334【程序2】 题目判断101-200之间有多少个素数,并输出所有素数。1 .程序分析:判断素数的方法:用一个数分别去除2到sqrt (这个数),如果能被整除则表明此数不是素数,反之是素数。1public class exp22public static void main(String args)3int i=0;4math mymath = new math();5for(i=2;i=2
4、00;i+)6if(mymath ? iszhishu(i)=true)7System, ou t. printing);8910class math1112public intx)1314if(x=l | x=2)15return 1;16else17return f(x-l)+f(x-2);1819public boolean iszhishu(int x)20212223242526for(int i=2;i=x/2;i+)if (x % 2=0 )return false;return true;【程序3】 题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方
5、和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。1 .程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。1 public class exp22345678public static void main(String args)int i=0;math mymath = new math();for(i=100;i=999;i+)if(mymath.shuixianhua(i)rue)Sys tem.out ? print.n(i);10 class math111213141516171819202122public i
6、nt f(int x)if(x=l | x=2)return 1;elsereturn f(x-l)+f(x-2);public boolean iszhishu(int x)for(int i=2;ik,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。(3) 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。1public class exp22public exp2()3public void fengjie(int n)4for(int i=2;i =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1 .程序分析:(a
7、 b)?a:b这是条件运算符的基本例子。12mport javax.swing.*;3public class ex5 4public static void main(String args)5String str=6str=30ptionPane.showlnputDialog(”请输入N的值(输入exit 退出):);7int N;8N=0;9try10N=lnteger.parseint(str);1112catch(NumberFormatException e)13e.printStackTrace();1415str=(N90 ?A:(N 60 ?B:C);16System.ou
8、t ? printlnCstr);1718【程序6】 题目:输入两个正整数 m和n,求其最大公约数和最小公倍数。1 .程序分析:利用辗除法。1最大公约数:2public class CommonDivisor3public static void main(String args)45commonDivisor(24,32);67static int commonDivisor(int M, int N)89if(N0|M0)1011System.out.println(ERROR!);12return1314if(N=0)1516System.out ? println(the bigges
9、t common divisor is :” +M);17wturn M;1819return commonDivisor(N,M%N);202122最小公倍数和最大公约数:23import java ? util.Seanner;24public class CandC2526下面的方法是求出最大公约数27public static int gcd(intint n)2829while (true)3031if (m = m % n) = 0)32return n;33if (n = n % m) = 0)34return m;353637public static void main(St
10、ring args) throws Exception3839取得输入值40/Seanner chin = new Seanner(System.in);41/int a = chin? nextTnt(), b = chin.nextint();42int a=23; int b=32;43int c = gcd(a, b);44System. out. printin (最小公倍数:+ a*b/c +n 最大公约数:+ c);4546【程序7】 题目:输入一行字符,分别统计岀其中英文字母、空格、数字和其它字符的个数。1 .程序分析:利用 while语句,条件为输入的字符不为n1er;2pu
11、blic class ex7 3public static void main(String args)4System. out. printin(请输入字符串:”);Seanner sean=new Seanner(System.in);String str=scan.next();String El=u4e00-u9fa5String E2=a-zA-Zint countH=0;int countE=0;char arrChar=str.toCharArray();String arrStr=new StringarrChar.length;for (int i=0;iaMChar.len
12、gth ;i+ )arrStri=String.valueOf(arrChari);for (String i: arrStr )if (i.matches(El) countH+;if (i.matches(E2)countE+;System, out. println(汉字的个数 +countH);System, out. println(字母的个数 +countE);【程序 8 题目:求 s=a+aa+aaa+aaaa+aa.a 的值,其中 a是一个数字。例女口 2+22+222+2222+22222(A时共有5个数相加) , 几个数相加有键盘控制。1 . 程序分析:关键是计算出每一项的
13、值。import java.io.*;public class Sumloop public static void main(String args) throws IOExceptionint s=0;String output=”;BufferedReader stadin = new BufferedReader(new TnputstreamReadeMSystem.in); System. out. printin (请输入 a 的值” );String input adin.readLine();for(int i nteger.parselnt(input);i+)output
14、+=input;int a=Integer.parseint(output);s+=a;System.out ? printIn(s);另解:import java ? io.*;public class Sumloop public static void main(String args) throws IOExceptionint s=0;int n;intBufferedReader stadin = new BufferedReader(new InputStreamReader(System.in); String input = stadin.readLine();n=Tnteg
15、er ? parseint(input);for(int i=l;i=n;i+)t=t*10+n;s=s+t;Sys tem.out. print.n(t);System.out ? printIn(s);【程序9】 题目:一个数如果恰好等于它的因子之和,这个数就称为 所有完数。完数”。例如6=1+2+3.编程 找出1000以内的1public class Wanshu 2public static void main(String args)34int s;5for(int i=l;i=1000;i+)67S=0 ;8for(int j=l;ji;j+)9if(i % j=0)10s=s+j
16、;11if(s=i)12System.out.print(i+);1314System.out ? printIn();1516【程序10题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地 时,共经过多少米?第10次反弹多高?1public class ExlO 2public static void main(String args)34double s=0;5double t=100;6for(int i=l;i=10;i+)78S+=t ;9t=t/2;1011System.out ? println(s);12System.out.println
17、(t);131415【程序11题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列1public class Wanshu 2public static void main(String args)34int i=0;5int j=0;6int k=0;7int t=0;8for(i=l;i=4;i+)9for(j=l;jv=4;j+)10for(k=l;k=4;k+)11if(i!=j & j!=k & i!=k)12t+=l;13System.out.print
18、ln(i*100+j*10+k);1415System.out.println (t);1617【程序12】 题目:企业发放的奖金根据利润提成。利润低于或等于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 .程序分析:请利用数轴来分界,定位
19、。注意定义时需把奖金定义成长整型。1mport java .util.*;2public class test 3public static void main (Stringargs)4double sum;/声明要储存的变量应发的奖金5Seanner input =new Seanner (System.in);导入扫描器6System ? out. print(输入当月利润);7double lirun=input .nextDouble();从控制台录入利润8if(lirun=1OOOOO)(9sum=lirun*0.1;10else if (lirun=200000)11sum=10
20、000+lirun*0.075;12else if (lirun=400000)13sum=17500+lirun*0.05;14else if (lirun=600000)15sum=lirun*0.03;16else if (lirun=1000000)(17sum=lirun*0.015;18 else19sum=lirun*0.01;2021System. out. print In (应发的奖金是+sum);2223后面其他情况的代码可以由读者自行完善?【程序13】题目:一个整数,它加上 100后是一个完全平方数,加上 168又是一个完全平方数,请问该数是多少?1?程序分析:在10万
21、以内判断,先将该数加上 100后再开方,再将该数加上 268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:public class test 123456public static void main (Stringargs) long k=0;for(k=l;ky则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使 x最小。import java.util.*;public class test public static void main (Stringargs)int i=0;int j=0;int k=0;int x=0;Syst
22、em. out. print( 请输入三个数 n);nextlnt();Seanner input = new Seanner(Systeirkin); i=input j=input ? nextlnt();k=input ? nextlnt(); x=i;i=j ;j=x ;if(ik)x=i ;i=k; k=x; if(jk)x=j;j=k ;k=x;System.out.printIn(i+, +j+, +k);程序16 】题目:输出 9*9 口诀。1 . 程序分析:分行与列考虑,共 9 行 9 列, i 控制行, j 控制列public class jiujiu public sta
23、tic void main(String args)int i=0;int j=0;for(i=l;i=9;i+)for(j=l;jv=9;j+)System.out.print(i+*+j+=+i*j+t);System.out.println();不出现重复的乘积(下三角)public class jiujiu public static void main(String args)int i=0;int j=0;for(i=l;i=9;i+) for(j=l;jv=i;j+)System.out.print(i+*+j+=+i*j+t);System.out ? println();上三
24、角public class jiujiu public static void main(String args)int i=0;31int j=0;32for(i=l;i=9;i+)33 for(j=i;j=9;j+)34System.out.print(i+*+j+=+i*j+t);35System, ou t. printlnO;363738【程序17题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10天早上想 再吃时,见只剩下一个桃子了。求第一天共摘了多少。第二天早上又将剩1
25、 ?程序分析:采取逆向思维的方法,从后往前推断。public class猴子吃桃static int total(int day)if(day = 10)return 1;elsereturn (total(day+1)+1)*2;10public static void main(String args)11121314System.out.printin(total(l);【程序18】 题目:两个乒乓球队进行比赛,各出三人。甲队为 a,b,c三人,乙队为x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。1 ?程序
26、分析:判断素数的方法:用一个数分别去除2到sqrt (这个数),如果能被整除,则表明此数不是素数,反之是素数。【程序19】题目打印出如下图案(菱形)1 .程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。三角形:public class StartG public static void main(String args)int i=0;int j=0;for(i=l;i=4;i+) for(j=l;j=l;i_) for(j=l;j=2*i-3;j+)System.out ? print(System.out.println(
27、”);* );”);16171819菱形:20public class StartG 21public static void main(String args)2223int i=0;24int25for(i=l;i=4;i+)2627for(int k=l; k=l;i-)3435for(int k=l; k=5-i;k+)36(” ;37for(j=l;j=2*i-3;j+)38System.out.print(*);39System.out.pr ” ;404142求出这个数列的前 20项之和。【程序20】 题目:有一分数序列:2/1,3/2, 5/3, 8/5, 13/& 21/13
28、1.程序分析:请抓住分子与分母的变化规律。1 public class test20 public static void main(String args) 3float fm = If;4float fz = If;5float temp;6float sum = 0f;7for (int i=0;i20;i+)8temp = fm;9fm = fz;10fz = fz + temp;11sum += fz/fm;12/System.out? println(sum);1314System.out.println(sum);1516【程序21】 题目:求1+2!+3!+20!的和1.程序分
29、析:此程序只是把累加变成了累乘1public class Ex21 2static long sum = 0;3static long fac = 0;4public static void main(String args) 5long sum = 0;6long fac = 1;7for(int i=l; i 1) 16value = n * recursion(n? 1);1718retuni value;192021【程序23】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 3个人大2岁。问第三个人,又说比第 2人大两岁。问第2个人,说比第一个
30、人大两岁。最后问第一个人,他说是 10岁。请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,类需知道第四人的岁数,依次推,推到第一人(10岁),再往回推。12public class Ex23 static int getAge(int n)if (n=l)return 10;return 2 +1);public static void main(String args) System. out. printin ( ”第五个的年龄为 : +getAge(5);程序 24 】 题目:给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序
31、打印出各位数字import java.util.Seanner;public class Ex24 public static void main(String args) Ex24 tn = new Ex24();Seanner s = new Seanner(System.in); long a = s.nextLong();if(a 100000) System.out ? println(Error Input, please run this program Again);System.exit(0);if(a =0 & a = 10 & a = 100 & a = 1000 & a
32、 = 10000 & a =0; i-) System.out ? print(chi); 【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同1 public class Ex25 static inta = new int 5;static int b = new irrt 5;public static voidmain(String args) boolean is=false;Scanner s =new Scanner(System.In); long1 = s.nextLong();if (1 99999)| (1 = 0; i
33、)ai = (int) (1 / (long) Math.pow(10, i);1 = (1 % (long) Math.poA(10, i);System. out.printin();for (int i = 0, j = 0; i 5; i+, j+)bj = ai;for (int i = 0, j = 4; i 5; i+, j-)if (ai != 5j) is = false;break; else is = true;if (is = false) System. out .println(is not a Palindrom!n); else if (is = true) S
34、ystem. out.println(is a Palindrom!);判断第二个字母。【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续if语句判断第二个字母1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或1mport java.util.Scanner;2public class Ex26 3public static void main(String args)4/保存用户输入的第二个字母5char weekSecond;6/将Scanner类示例化为input对象,用于接收用户输入7Seanner input = new S
35、eanner(System.in);开始提示并接收用户控制台输入System.out ? print(请输入星期值央文的第一个子母,我来帮您判断是星期几:);String letter = input.next();/判断用户控制台输入字符串长度是否是一个字母if (letter.length() = 1)利用取第一个索引位的字符来实现让 Scanner接收char类型输入char weekFirst = letter.charAt(O);switch (weekFirst)case m:/当输入小写字母时,利用switch 结构特性执行下一个带break语句的case分支,以实现忽略用户控制
36、台输入大小写敏感的功能控制台错误提示 else(”输入错误,不能识别的星期值第二个字母,程序结束!“);44break:weekSecond = letter.charAt(O);/利用或(|)运算符来实现忽略用户控制台输入大小写敏感的功能if (weekSecond = A | weekSecond = a)System, out. printin(”星期六(Saturday);break;/利用或(|)运算符来实现忽略用户控制台输入大小写敏感的功能 else if (weekSecond = U | weekSecond = u)80System ? out.println(星期日(Sun
37、day );81break;82控制台错误提示83 else8485输入错误,不能识别的星期值第二个字母,程序结束!“); break;8687 else88控制台错误提示89System. out. printin(输入错误,只能输入一个字母,程序结束!”);90break;9192default:93控制台错误提示94System. out. print In(输入错误,不能识别的星期值第一个字母,程序结束!”);break;95 else控制台错误提示System.out.printin(输入错误,只能输入一个字母,程序结束!”);【程序27】 题目求100之内的素数1public cl
38、ass Ex27 2public static void main(String args)34int sum ;5for(sum=2;sum=100;sum+)67for(i=2;isum/2)13System, out .print In (sum+是素数”;141516【程序28】 题目:对10个数进行排序1mport java ? uti1.Arrays;2mport java ? util.Random;3mport java.util.Sca rm er;4public class Ex28 5public static void main(String args) 6int am = new in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车保洁服务中的客户情绪管理策略
- 儿童美术课件
- 2025至2031年中国毒特灵行业投资前景及策略咨询研究报告
- 游泳用品专卖店行业深度调研及发展项目商业计划书
- 电子竞技选手健康管理服务行业深度调研及发展项目商业计划书
- 电影发行代理行业跨境出海项目商业计划书
- 歌剧表演AI应用行业深度调研及发展项目商业计划书
- 2025至2031年中国尼龙垫圈铰行业投资前景及策略咨询研究报告
- 护理情绪治疗方案
- 消防培训课件机构
- 太阳能发电指数保险-条款
- 文字学概要完整版本
- 2022年幼儿识字:生字卡片-幼儿识字卡片大全
- 标准风机样本参数表(多种型号)
- JY-T 0466-2015 小学体育器材设施配备标准
- 2023分布式光伏电站安装作业指导书
- 成人呼吸支持治疗器械相关压力性损伤的预防
- 蛛网膜下腔出血病人护理查房
- 石英砂过滤器出厂检验报告
- 北师大版数学五年级下册期末整理与复习课件
- 2023年上海市闵行区数学五年级第二学期期末教学质量检测模拟试题含解析
评论
0/150
提交评论