JAVA 皮常德2-7章答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二
1.角谷猜想:任何一个正整数n,如果它是偶数则除以二,如果是奇数则乘
以3再加上1,这样得到一个新的整数,如此继续进行上述处理,则最后得到的数一定是1,编写应用程序和小程序分别验证:3~10000之间任何正整数都满足上述规则。
2.编写一个程序模拟同时掷2个骰子。程序要用Math.random( )模拟产生
第一个骰子,然后再产生第二个骰子,将2个结果相加。和等于7的可能性最大,等于2和12的可能性最小。
下图表示了出现36种情况组合。程序模拟掷3600次骰子,判断求和结果是否合理,共有6种情况的和是7,故在3600次掷骰子的结果中应当有1/6的可能性是7。
123456 1234567 2345678 3456789 45678910 567891011 6789101112
一、实验步骤:
1.
应用程序:
package cp2;
public class a4 {
public static void main(String[] args) {
boolean a=true;
int j;
for(int i=3;i<=10000;i++){
for(j=i;j>1;){
if(j%2==0){
j=j/2;
}
else{
j=j*3+1;
}
}
if(j!=1){
a=false;break;
}
}
System.out.println(a);
}
}
运行结果:true
小程序:
package cp2;
import java.awt.*;
import java.applet.*;
public class a5 extends Applet{
Label lab1;
TextField input1;
int num1=1;
public void init(){
lab1=new Label("任意输入3~10000的一个整数");
input1=new TextField(10);
add(lab1);
add(input1);
}
public boolean action(Event e,Object o){
num1=Integer.parseInt(input1.getText());
showStatus("");
input1.setText("");
repaint();
showStatus("这个数是"+num1);
return true;
}
public void paint(Graphics g){
int xpos=50,ypos=50,i=0;
int xpos1=xpos;
while(num1!=1)
{
if(num1%2==0){
num1=num1/2;
g.drawString(Integer.toString(num1), xpos, ypos);
}
else{
num1=num1*3+1;
g.drawString(Integer.toString(num1), xpos, ypos);
}
xpos=xpos+50;
i++;
if(i%5==0)
{
ypos=ypos+10;
xpos=xpos1;
}
}
}
}
运行结果:
2.
程序:
package cp2;
import java.awt.*;
import java.applet.*;
public class a6 extends Applet{
Label lab;
TextField input;
int a,b,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12;
double i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12;
public void init(){
lab=new Label("输入次数");
input=new TextField(10);
add(lab);
add(input);
}
public boolean action(Event e,Object o){
int time=Integer.parseInt(input.getText()); showStatus("");
input.setText("");
showStatus("模拟次数"+time);
t2=t3=t4=t5=t6=t7=t8=t9=t10=t11=t12=0;
for(int i=1;i<=time;i++){
a=(int)(Math.random()*6+1);
b=(int)(Math.random()*6+1);
switch(a+b){
case 12:t12++;break;
case 11:t11++;break;
case 10:t10++;break;
case 9:t9++;break;
case 8:t8++;break;
case 7:t7++;break;
case 6:t6++;break;
case 5:t5++;break;
case 4:t4++;break;
case 3:t3++;break;
case 2:t2++;break;
}
i12=(double)t12/i;
i11=(double)t11/i;
i10=(double)t10/i;
i9=(double)t9/i;
i8=(double)t8/i;
i7=(double)t7/i;
i6=(double)t6/i;
i5=(double)t5/i;
i4=(double)t4/i;
i3=(double)t3/i;
i2=(double)t2/i;
repaint();
}
//repaint();
return true;