[工学]50道JAVA基础编程练习题全面解答

上传人:豆浆 文档编号:34090358 上传时间:2018-02-20 格式:DOC 页数:36 大小:363.50KB
返回 下载 相关 举报
[工学]50道JAVA基础编程练习题全面解答_第1页
第1页 / 共36页
[工学]50道JAVA基础编程练习题全面解答_第2页
第2页 / 共36页
[工学]50道JAVA基础编程练习题全面解答_第3页
第3页 / 共36页
[工学]50道JAVA基础编程练习题全面解答_第4页
第4页 / 共36页
[工学]50道JAVA基础编程练习题全面解答_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《[工学]50道JAVA基础编程练习题全面解答》由会员分享,可在线阅读,更多相关《[工学]50道JAVA基础编程练习题全面解答(36页珍藏版)》请在金锄头文库上搜索。

1、50 道 JAVA 基础编程练习题解答本人尚属菜鸟,因此下面的解答有可能会出现错误,也可能使用的方法不够简便,希望指正。发现错误了,请 QQ 联系我,希望得到指正。QQ:474027915【程序 1】题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? .程序分析: 兔子的规律为数列 1,1,2,3,5,8,13,21. 解答:(方法一)利用数学分析可得知:这个月的兔子数量为前两个月的兔子数量之和,推导过程如下:X1,X 2,X 3 Y1,Y 2,Y 3 Z1,Z 2,Z 3X1:表示一个月大的

2、兔子; X2 表示两个月大的兔子;X 3 表示三个月及三月以上的兔子。有以下数学表达式:Y1=X2+X3 ,Y 2=X1 ,Y 3=X2+X3Z1=Y2+Y3 ,Z 2=Y1 ,Z 3=Y2+Y3Z1+Z2+Z3= Y2+Y3+Y1+(Y2+Y3)=(Y2+Y3+Y1)+(X2+X3+X1)因此上面每个月的兔子的数量满足斐波那契数列。编程实现较为简单,此处省略。(方法二)方法二利用编程实现,具有一般性(开始兔子个数和产仔周期可自行输入),程序设计如下:import java.util.*;import java.io.*;class TuZiint nianling=1;public clas

3、s Text1 public static void main(String args) throws IOException / TODO Auto-generated method stubint shuliang=1;int zhouqi=4;int yuefen=0;Vector rongqi=new Vector();System.out.print(输入兔子开始数量:);BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in);shuliang=(new Integer(stdin.readLi

4、ne();System.out.print(输入兔子生产周期:);zhouqi=(new Integer(stdin.readLine();System.out.print(输入查询月份:);yuefen=(new Integer(stdin.readLine();for(int i=1;i=zhouqi)rongqi.addElement(new TuZi();System.out.print(兔子数量为:+rongqi.size();【程序 2】题目:判断 101-200 之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能

5、被整除, 则表明此数不是素数,反之是素数。 解答:程序如下:public class Text2 public static void main(String args) / TODO Auto-generated method stubint sum=0;System.out.print(101到200 的素数是: );for(int i=101;ik,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数你n,重复执行第一步。 (3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。 这个题目很明显是要用递归算法来实现的,打印“*”有

6、些技巧,但也很容易解决,程序如下:import java.io.*;public class Text4 public static void chuLi(int n)for(int i=2;ii&(n%i=0)n=n/i;System.out.print(i+*);chuLi(n);break;/这句很重要public static void main(String args) throws IOExceptionint shu=0;BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in);System.

7、out.print(请输入正整数:);shu=(new Integer(stdin.readLine();chuLi(shu);【程序 5】 题目:利用条件运算符的嵌套来完成此题:学习成绩=90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。 解答:此题较为简单,程序如下import java.io.*;public class Text5 public static void main(String agrs) throws IOExceptionSystem.out.print(请输入成绩:);BufferedReader stdin=new Buff

8、eredReader(new InputStreamReader(System.in);int chengji=new Integer(stdin.readLine();char dengji=chengji=90?A:B);System.out.print(dengji); 【程序 6】 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 算法(1)设计:E0.确保 m n 若 m n,则 m n。 a。则有:%=0%=0可以仿照上面的推导过程得出: %=0(%)%=0则 b 也是 n 和 m%n 的公因子,又 ba,与 a 是 n 和 m%n 的最大公因子矛盾。综上,如果某数是

9、 n 与 m%n 的最大公因子,则这个数也是 m 和 n 的最大公因子。(3)证毕。对步骤 E0 的分析:若 m算法设计:F1:求出 m 和 n 的较大者,令较大者为 m,较小者为 n。F2:判断 m 能否被 n 整除,若能则 m 为两者最小公倍数。F2:将 n 分解因式。F3:将 m 依次乘以 n 的因子,判断乘积能否被 n 整除,若能则乘积为两者最小公倍数。根据上面的算法,程序如下:import java.io.*;import java.util.*;public class Text6 public static void fenJie(Vector m,int n)for(int i

10、=2;ii&(n%i=0)n=n/i;m.addElement(i);fenJie(m,n);break;public static int gongBeiShu(Vector m,int a,int b)int chengji=1;if(a%b=0)return a;for(int i=0;i pool=new Vector();BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in);System.out.print(请输入第一个正整数:);shu1=(new Integer(stdin.readLin

11、e();System.out.print(请输入第二个正整数:);shu2=(new Integer(stdin.readLine();if(shu1=65&bytesi=97&bytesi=48&bytesi m,int n)for(int i=1;i m,int n)int sum=0;for(int i=0;i pool=new Vector();fenJie(pool,i);zhenjia=panBie(pool,i);if(zhenjia)System.out.println(i);【程序 10】 题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第

12、 10 次落地时,共经过多少米?第 10 次反弹多高? 解答:此题较为简单,程序设计如下:import java.io.*;public class Text10 public static void main(String args) throws IOException float heigh=100;int cishu=10;float sum=0;BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in);System.out.print(输入初始下落高度:);heigh=(new Float(std

13、in.readLine();sum=heigh;System.out.print(输入落地碰撞次数:);cishu=(new Integer(stdin.readLine();for(int i=1;i m,int n)for(int i=1;i pool=new Vector();int m=100;int n=168;int t=0;int flag=0;BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in);System.out.print(输入第一个正整数:);m=new Integer(stdi

14、n.readLine();System.out.print(输入第二个正整数:);n=new Integer(stdin.readLine();if(mn)t=m;m=n;n=t;fenJie(pool,n-m);int a=0;int b=0;int N=0;int x=0;for(int i=0;i0)flag=1;System.out.println(x);if(flag=0)System.out.println(不存在这样的数字!);【程序 14】 题目:输入某年某月某日,判断这一天是这一年的第几天? 解答:闰年的判断,可根据以下三点进行判断。1、 普 通 年 能 被 4 整 除 且

15、不 能 被 100 整 除 的 为 闰 年 。 ( 如 2004 年 就 是 闰 年 ,1900 年 不是 闰 年 )2、 世 纪 年 能 被 400 整 除 的 是 闰 年 。 (如 2000 年 是 闰 年 , 1900 年 不 是 闰 年 )3、 对 于 数 值 很 大 的 年 份 ,这 年 如 果 能 整 除 3200,并 且 能 整 除 172800 则 是 闰 年 。 如172800 年 是 闰 年 , 86400 年 不 是 闰 年 (因 为 虽 然 能 整 除 3200, 但 不 能 整 除 172800)分 析 : 利用 Scanner 类中 nextInt()进行数据的读取,由于是连续输入而且输入中有汉字,故这种方法不行。程序设计需要改进,现利用 Character.isDigit 方法进行程序设计,达到了较为理想的结果,程序如下所示。(此程序中有一段代码是对字符串中的数字进行提取,如 211 年 8 月 8 日提取三个数字分别为: 211、8 、8)import java.io.*;import java.util.*;public class Text14xin public static void main(String args) throws IOExceptionlong year=0;long month=0;long

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号