ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:19.74KB ,
资源ID:3712068      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3712068.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java经典算法40初学必做基础.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java经典算法40初学必做基础.docx

1、java经典算法40初学必做基础java经典算法40题(21-40)【程序21】 题目:求1+2!+3!+.+20!的和 1.程序分析:此程序只是把累加变成了累乘。 public class Ex21 static long sum = 0; static long fac = 0;public static void main(String args) long sum = 0; long fac = 1;for(int i=1; i 1) value = n * recursion(n-1);return value;【程序23】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大

2、2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。 public class Ex23 static int getAge(int n)if (n=1)return 10;return 2 + getAge(n-1);public static void main(String args) System.out.println(第五个的年龄为:+g

3、etAge(5);【程序24】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 import java.util.Scanner;public class Ex24 public static void main(String args) Ex24 tn = new Ex24();Scanner s = new Scanner(System.in);long a = s.nextLong();if(a 100000) System.out.println(Error Input, please run this program Again);System.ex

4、it(0);if(a =0 & a = 10 & a = 100 & a = 1000 & a = 10000 & a =0; i-) System.out.print(chi);【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 import java.util.Scanner;public class Ex25 static int a = new int5;static int b = new int5;public static void main(String args) boolean is =false;Scanner s

5、= new Scanner(System.in);long l = s.nextLong();if (l 99999 | l = 0; i-) ai = (int) (l / (long) Math.pow(10, i);l =(l % ( long) Math.pow(10, i);System.out.println();for(int i=0,j=0; i5; i+, j+) bj = ai;for(int i=0,j=4; i5; i+, j-) if(ai != bj) is = false;break; else is = true;if(is = false) System.ou

6、t.println(is not a Palindrom!); else if(is = true) System.out.println(is a Palindrom!);【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 import java.util.Scanner;public class Ex26 public static void main(String args)/保存用户输入的第二个字母char weekSecond;/将

7、Scanner类示例化为input对象,用于接收用户输入Scanner input = new Scanner(System.in);/开始提示并接收用户控制台输入 System.out.print(请输入星期值英文的第一个字母,我来帮您判断是星期几:);String letter = input.next();/判断用户控制台输入字符串长度是否是一个字母if (letter.length() = 1)/利用取第一个索引位的字符来实现让Scanner接收char类型输入char weekFirst = letter.charAt(0);switch (weekFirst)case m:/当输入

8、小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能case M:System.out.println(星期一(Monday);break;case t:/当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能case T:System.out.print(由于星期二(Tuesday)与星期四(Thursday)均以字母T开头,故需输入第二个字母才能正确判断:);letter = input.next();/判断用户控制台输入字符串长度是否是一个字母if (l

9、etter.length() = 1)/利用取第一个索引位的字符来实现让Scanner接收char类型输入weekSecond = letter.charAt(0);/利用或(|)运算符来实现忽略用户控制台输入大小写敏感的功能if (weekSecond = U | weekSecond = u)System.out.println(星期二(Tuesday);break;/利用或(|)运算符来实现忽略用户控制台输入大小写敏感的功能 else if (weekSecond = H | weekSecond = h)System.out.println(星期四(Thursday);break;/控

10、制台错误提示 elseSystem.out.println(输入错误,不能识别的星期值第二个字母,程序结束!);break; else /控制台错误提示 System.out.println(输入错误,只能输入一个字母,程序结束!);break;case w:/当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能case W:System.out.println(星期三(Wednesday);break;case f:/当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台

11、输入大小写敏感的功能case F:System.out.println(星期五(Friday);break;case s:/当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能case S:System.out.print(由于星期六(Saturday)与星期日(Sunday)均以字母S开头,故需输入第二个字母才能正确判断:);letter = input.next();/判断用户控制台输入字符串长度是否是一个字母if (letter.length() = 1)/利用取第一个索引位的字符来实现让Scanner接收char类

12、型输入weekSecond = letter.charAt(0);/利用或(|)运算符来实现忽略用户控制台输入大小写敏感的功能if (weekSecond = A | weekSecond = a)System.out.println(星期六(Saturday);break;/利用或(|)运算符来实现忽略用户控制台输入大小写敏感的功能 else if (weekSecond = U | weekSecond = u)System.out.println(星期日(Sunday);break;/控制台错误提示 elseSystem.out.println(输入错误,不能识别的星期值第二个字母,程序

13、结束!);break; else/控制台错误提示 System.out.println(输入错误,只能输入一个字母,程序结束!);break;default:/控制台错误提示 System.out.println(输入错误,不能识别的星期值第一个字母,程序结束!);break; else/控制台错误提示 System.out.println(输入错误,只能输入一个字母,程序结束!);【程序27】 题目:求100之内的素数 public class Ex27 public static void main(String args)int sum,i;for(sum=2;sum=100;sum+)

14、for(i=2;isum/2)System.out.println(sum+是素数);【程序28】 题目:对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。 import java.util.Arrays;import java.util.Random;import java.util.Scanner;public class Ex28 public static void main(String args) int arr = new int11;Random r=new Rando

15、m();for(int i=0;i10;i+)arri=r.nextInt(100)+1;/得到10个100以内的整数Arrays.sort(arr);for(int i=0;iarr.length;i+)System.out.print(arri+t);System.out.print(nPlease Input a int number: );Scanner sc=new Scanner(System.in);arr10=sc.nextInt();/输入一个int值Arrays.sort(arr);for(int i=0;iarr.length;i+)System.out.print(ar

16、ri+t);【程序29】 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将aii累加后输出。 public class Ex29 public static void main(String args)double sum=0;int array=1,2,3,4,5, 6,7,7,8;for(int i=0;i3;i+)for(int j=0;j3;j+)if(i=j)sum=sum + arrayij;System.out.println( sum); 【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 1.

17、 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 import java.util.Random;public class ArraySort public static void main(String args) int temp=0;int myarr = new int12;Random r=new Random();for(int i=1;i=10;i+)myarri=r.nextInt(1000);for (int k=1;k=10;k+)System.out.print(myarrk+,);for(int i=1;

18、i=9;i+)for(int k=i+1;kmyarrk)temp=myarri;myarri=myarrk;myarrk=temp;System.out.println();for (int k=1;k=10;k+)System.out.print(myarrk+,);myarr11=r.nextInt(1000);for(int k=1;kmyarr11)temp=myarr11;for(int j=11;j=k+1;j-)myarrj=myarrj-1;myarrk=temp;System.out.println(); for (int k=1;k=1;k-)System.out.pri

19、nt(myarrk+,);【程序32】 题目:取一个整数a从右端开始的47位。 程序分析:可以这样考虑: (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用(0 4) (3)将上面二者进行&运算。 public class Ex32 public static void main(String args)int a=0;long b=18745678;a=(int) Math.floor(b % Math.pow(10,7)/Math.pow(10, 3);System.out.println(a);【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序

20、分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 public class Ex33 public static void main(String args)int i,j;int a;a=new int88;for(i=0;i8;i+)aii=1;ai0=1; for(i=2;i8;i+)for(j=1;j=i-1;j+)aij=ai-1j-1+ai-1j; for(i=0;i8;i+)for(j=0;j=0;) for(int j=0;jarraysj+1) int temp=arraysj; arraysj=arraysj+1; arrays

21、j+1=temp; for(int n=0;narrays.length;n+) System.out.println(arraysn); 【程序35】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 import java.util.*; public class Ex35 public static void main(String args) int i, min, max, n, temp1, temp2; int a; System.out.println(输入数组的长度:); Scanner keyboard = new Scanner(System.

22、in); n = keyboard.nextInt(); a = new intn; for (i = 0; i n; i+) System.out.print(输入第 + (i + 1) + 个数据); ai = keyboard.nextInt(); /以上是输入整个数组max = 0; min = 0; /设置两个标志,开始都指向第一个数for (i = 1; i amax) max = i; /遍历数组,如果大于amax,就把他的数组下标赋给maxif (ai amin) min = i; /同上,如果小于amin,就把他的数组下标赋给min /以上for循环找到最大值和最小值,max

23、是最大值的下标,min是最小值的下标temp1 = a0; temp2 = amin; /这两个temp只是为了在交换时使用a0 = amax; amax = temp1; /首先交换a0和最大值amaxif (min != 0) /如果最小值不是a0,执行下面amin = an - 1; an - 1 = temp2; /交换amin和an-1 else /如果最小值是a0,执行下面amax = an - 1; an - 1 = temp1; for (i = 0; i n; i+) /输出数组System.out.print(ai + ); 【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1