《50道JAVA基础编程练习题全面解答》.doc
文本预览下载声明
50道JAVA基础编程练习题解答
本人尚属菜鸟,因此下面的解答有可能会出现错误,也可能使用的方法不够简便,希望指正。发现错误了,请QQ联系我,希望得到指正。
QQ:474027915
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? .程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
解答:
(方法一)
利用数学分析可得知:这个月的兔子数量为前两个月的兔子数量之和,推导过程如下:
X1,X2,X3 Y1,Y2,Y3 Z1,Z2,Z3
X1:表示一个月大的兔子;X2表示两个月大的兔子;X3表示三个月及三月以上的兔子。
有以下数学表达式:
Y1=X2+X3 ,Y2=X1 ,Y3=X2+X3
Z1=Y2+Y3 ,Z2=Y1 ,Z3=Y2+Y3
Z1+Z2+Z3= Y2+Y3+Y1+(Y2+Y3)=(Y2+Y3+Y1)+(X2+X3+X1)
因此上面每个月的兔子的数量满足斐波那契数列。编程实现较为简单,此处省略。
(方法二)
方法二利用编程实现,具有一般性(开始兔子个数和产仔周期可自行输入),程序设计如下:
import java.util.*;
import java.io.*;
class TuZi
{
int nianling=1;
}
public class Text1 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int shuliang=1;
int zhouqi=4;
int yuefen=0;
VectorTuZi rongqi=new VectorTuZi();
System.out.print(输入兔子开始数量:);
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
shuliang=(new Integer(stdin.readLine()));
System.out.print(输入兔子生产周期:);
zhouqi=(new Integer(stdin.readLine()));
System.out.print(输入查询月份:);
yuefen=(new Integer(stdin.readLine()));
for(int i=1;i=shuliang;i++)
{
rongqi.addElement(new TuZi());
}
for(int i=2;i=yuefen;i++)
{
for(int j=0;jrongqi.size();j++)
{
TuZi a=(TuZi)rongqi.elementAt(j);
a.nianling++;
}
for(int j=0;jrongqi.size();j++)
{
if(rongqi.elementAt(j).nianling=zhouqi)
{
rongqi.addElement(new TuZi());
}
}
}
System.out.print(兔子数量为:+rongqi.size());
}
}
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
解答:
程序如下:
public class Text2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
System.out.print(101到200的素数是: );
for(int i=101;i=200;i++)
{
int flag=0;
for(int j=2;j=Math.sqrt(i);j++)
{
float k=(float)i;
if(k%j==0)
{
flag=1;
break;
}
}
if(flag==0)
{
System
显示全部