JAVA 皮常德27章答案演示教学.docx
- 文档编号:8030756
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:27
- 大小:39.09KB
JAVA 皮常德27章答案演示教学.docx
《JAVA 皮常德27章答案演示教学.docx》由会员分享,可在线阅读,更多相关《JAVA 皮常德27章答案演示教学.docx(27页珍藏版)》请在冰豆网上搜索。
JAVA皮常德27章答案演示教学
JAVA皮常德2-7章答案
二
1.角谷猜想:
任何一个正整数n,如果它是偶数则除以二,如果是奇数则乘以3再加上1,这样得到一个新的整数,如此继续进行上述处理,则最后得到的数一定是1,编写应用程序和小程序分别验证:
3~10000之间任何正整数都满足上述规则。
2.编写一个程序模拟同时掷2个骰子。
程序要用Math.random( )模拟产生第一个骰子, 然后再产生第二个骰子,将2个结果相加。
和等于7的可能性最大,等于2和12的可能性最小。
下图表示了出现36种情况组合。
程序模拟掷3600次骰子,判断求和结果是否合理,共有6种情况的和是7, 故在3600次掷骰子的结果中应当有1/6的可能性是7。
1
2
3
4
5
6
1
2
3
4
5
6
7
2
3
4
5
6
7
8
3
4
5
6
7
8
9
4
5
6
7
8
9
10
5
6
7
8
9
10
11
6
7
8
9
10
11
12
一、实验步骤:
1.
应用程序:
packagecp2;
publicclassa4{
publicstaticvoidmain(String[]args){
booleana=true;
intj;
for(inti=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
小程序:
packagecp2;
importjava.awt.*;
importjava.applet.*;
publicclassa5extendsApplet{
Labellab1;
TextFieldinput1;
intnum1=1;
publicvoidinit(){
lab1=newLabel("任意输入3~10000的一个整数");
input1=newTextField(10);
add(lab1);
add(input1);
}
publicbooleanaction(Evente,Objecto){
num1=Integer.parseInt(input1.getText());
showStatus("");
input1.setText("");
repaint();
showStatus("这个数是"+num1);
returntrue;
}
publicvoidpaint(Graphicsg){
intxpos=50,ypos=50,i=0;
intxpos1=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.
程序:
packagecp2;
importjava.awt.*;
importjava.applet.*;
publicclassa6extendsApplet{
Labellab;
TextFieldinput;
inta,b,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12;
doublei2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12;
publicvoidinit(){
lab=newLabel("输入次数");
input=newTextField(10);
add(lab);
add(input);
}
publicbooleanaction(Evente,Objecto){
inttime=Integer.parseInt(input.getText());
showStatus("");
input.setText("");
showStatus("模拟次数"+time);
t2=t3=t4=t5=t6=t7=t8=t9=t10=t11=t12=0;
for(inti=1;i<=time;i++){
a=(int)(Math.random()*6+1);
b=(int)(Math.random()*6+1);
switch(a+b){
case12:
t12++;break;
case11:
t11++;break;
case10:
t10++;break;
case9:
t9++;break;
case8:
t8++;break;
case7:
t7++;break;
case6:
t6++;break;
case5:
t5++;break;
case4:
t4++;break;
case3:
t3++;break;
case2:
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();
returntrue;
}
publicvoidpaint(Graphicsg){
g.drawString("各种和的概率:
",25,40);
g.drawString("12:
"+i12,25,55);
g.drawString("11:
"+i11,25,70);
g.drawString("10:
"+i10,25,85);
g.drawString("9:
"+i9,25,100);
g.drawString("8:
"+i8,25,115);
g.drawString("7:
"+i7,25,130);
g.drawString("6:
"+i6,25,145);
g.drawString("5:
"+i5,25,160);
g.drawString("4:
"+i4,25,175);
g.drawString("3:
"+i3,25,190);
g.drawString("2:
"+i2,25,205);
}
}
运行结果:
三
一、实验内容:
1.采用循环语句打印如下图形:
**
****
******
********
2.编写一个applet,采用公式:
ex=1+x1/1!
+x2/2!
+……..+xn/n!
.
三、实验步骤:
1.程序:
packagecp3;
importjava.awt.*;
importjava.applet.*;
publicclassa1extendsApplet{
Labellab;
TextFieldinput;
inta,b[]=newint[20],i,j;
publicvoidinit(){
lab=newLabel("输入数字");
input=newTextField(10);
add(lab);
add(input);
}
publicbooleanaction(Evente,Objecto){
a=Integer.parseInt(input.getText());
input.setText("");
repaint();
returntrue;
}
publicvoidpaint(Graphicsg){
for(inti=0;a!
=0;i++){
b[i]=a%10;
a/=10;
}
for(j=0;b[j]!
=0;j++);
for(intt=--j;t>=0;t--){
g.drawString(Integer.toString(b[t]),j*20-t*20,55);
}
for(i=0;i b[i]=0; } } } 运行结果: ** **** ****** ******** ********** 2: 程序: packagecp3; importjava.awt.*; importjava.applet.*; publicclassa6extendsApplet{ Labellab1,lab2; TextFieldinput1,input2; inta,b,i; doublesum=0; publicclassaa{ intmult(intn){ ints=1; for(intj=1;j<=n;j++) s*=j; returns; } } publicvoidinit(){ lab1=newLabel("输入x大小"); input1=newTextField(10); lab2=newLabel("输入n值"); input2=newTextField(10); add(lab1); add(input1); add(lab2); add(input2); } publicbooleanaction(Evente,Objecto){ a=Integer.parseInt(input1.getText()); b=Integer.parseInt(input2.getText()); input1.setText(""); input2.setText(""); showStatus(""); sum=0; aac=newaa(); for(i=0;i<=b;i++){ sum+=(double)(Math.pow(a,i))/(double)c.mult(i); } showStatus("结果为"+sum); returntrue; } } 输入x=1,n=30时的运行结果: 四 二、实验内容: 1.定义一个类,它包含了一个int类型的变量x、若干个构造函数(根据你的需要)和一个输出方法show( )。 编程: 从键盘输入一个数,将这个数传递给这个类的x,采用方法show( )逆序输出这个数。 2.定义一个整形集合类integerSet。 这种类型的对象可以存储10个20至80之间的整数,即它的内部有一个整形数组存储数据。 编程: (1) 判断两个integerSet类对象S1和S2是否相等。 提示: 集合相等的前提是所有元素相等。 (2) 输出两个集合对象的交集。 (3) 输出两个集合对象的并集。 (4) 将一个整形数据插入到一个集合对象中。 (5) 从一个集合中删除某一个元素。 三、实验步骤: 1. 程序 packagecp4; classaa{ intx; aa(intn){ x=n; } voidshow(){ intb=0; for(;x! =0;){ b=b*10+x%10; x/=10; } System.out.println(b); } } publicclassa1{ publicstaticvoidmain(String[]args){ intvalue=CP4.readInt(); aaa1=newaa(value); a1.show(); } } 运行结果: 12345 54321 成功构建(总时间: 3秒) 2. packagecp4; classinteger{ inta[]=newint[10]; publicvoidinput(){ inti; for(i=0;i<=9;i++){ a[i]=CP4.readInt(); if(a[i]==0) break; } } publicvoidoutput(){ inti; for(i=0;i<=9;i++){ System.out.print(a[i]); System.out.print('');} System.out.println(); } } classuninteger{ inta[]=newint[20]; publicvoidoutput(){ inti; for(i=0;i<=19;i++){ System.out.print(a[i]); System.out.print('');} System.out.println(); } } classmeans{ inti,j; publicbooleaneq(integera1,integera2){ for(i=0;i<=9;i++){ if(a1.a[i]==0) break; } for(j=0;j<=9;j++){ if(a2.a[j]==0) break; } if(i! =j){ returnfalse; } else{ for(i=0;i<=9;i++){ if(a1.a[i]! =a2.a[i]) returnfalse; } } returntrue; } publicvoidmix(integera1,integera2,integermix){ intt=0; for(i=0;i<=9;i++) for(j=0;j<=9;j++){ if(a1.a[i]==a2.a[j]) mix.a[t++]=a1.a[i]; elseif(a1.a[i] break; } } publicvoidunion(integera1,integera2,unintegerunion){ intt,s; i=0; for(s=0,t=0;s<=9&&t<=9&&a1.a[s]! =0&&a2.a[t]! =0;){ if(a1.a[s] union.a[i++]=a1.a[s]; s++; } elseif(a1.a[s]>a2.a[t]){ union.a[i++]=a2.a[t]; t++; } else{ union.a[i++]=a1.a[s]; s++;t++; } } if((a1.a[s]==0||s>9)&&(t<=9&&a2.a[t]! =0)){ for(;t<=9;) union.a[i++]=a2.a[t++]; } elseif((a2.a[t]==0||t>9)&&(s<=9&&a1.a[s]! =0)){ for(;s<=9;) union.a[i++]=a1.a[s++]; } } publicvoidinsert(integera1,inta){ for(i=0;i<=9;i++){ if(a1.a[i]==0) break;} if(i==10) System.out.println("此表已满不能插入"); else{ if(a<=a1.a[0]){ for(;i>=1;i--){ a1.a[i]=a1.a[i-1]; } a1.a[0]=a; } elseif(a>=a1.a[i-1]) a1.a[i]=a; else{ for(j=0;;j++) if(a>=a1.a[j]&&a<=a1.a[j+1]) break; for(;i>j+1;i--){ a1.a[i]=a1.a[i-1]; } a1.a[j+1]=a; } System.out.print("插入后的表一变为: ");a1.output(); } } publicvoiddelete(integera2,inta){ for(i=0;i<=9;i++){ if(a2.a[i]==0) break;} if(a2.a[a]==0) System.out.println("所删位置无元素"); else{ for(j=a;j a2.a[j]=a2.a[j+1]; } System.out.print("删除后的表二变为: ");a2.output(); } } } publicclassa5{ publicstaticvoidmain(String[]args){ booleanf; inta,b; integermix=newinteger(); unintegerunion=newuninteger(); integera1=newinteger(); integera2=newinteger(); System.out.println("请以从小到大顺序输入两组(每组个数小于11个)20~80之间的整数,分别以0,0结束"); a1.input(); a2.input(); System.out.print("表一为: ");a1.output(); System.out.print("表二为: ");a2.output(); meansm1=newmeans(); f=m1.eq(a1,a2); if(f) System.out.println("两个集合相等"); else System.out.println("两个集合不相等"); m1.mix(a1,a2,mix); m1.union(a1,a2,union); System.out.print("两个集合的交为: ");mix.output(); System.out.print("两个集合的并为: ");union.output(); System.out.print("请输入要插入表一的整数: ");a=CP4.readInt(); m1.insert(a1,a); System.out.print("请输入要删除表二元素的下标: ");b=CP4.readInt(); m1.delete(a2,b); } } ********************** 运行结果: 请以从小到大顺序输入两组(每组个数小于11个)20~80之间的整数,分别以0,0结束 21 32 44 56 78 80 0 31 46 56 80 0 表一为: 2132445678800000 表二为: 31465680000000 两个集合不相等 两个集合的交为: 568000000000 两个集合的并为: 2131324446567880000000000000 请输入要插入表一的整数: 46 插入后的表一变为: 21324446567880000 请输入要删除表二元素的下标: 6 所删位置无元素 成功构建(总时间: 1分钟38秒) 五 三、实验内容 1.写一个类,它具有一个protected数据成员。 在同一个文件内再写第二个类,在这个类内编写一个方法, 以操作第一类内的protected数据; 2.采用public、private、protected以及友员等成员创建一个类,然后定义这个类的一个对象。 观察在访问所有类成员时会出现哪种类型的编译错误。 三、实验步骤 1.程序 /*a4.java*/ packagecp5; publicclassa4{ publicstaticvoidmain(String[]args){ a4_2b=newa4_2(); b.datause(); } } /*a4_1.java*/ packagecp5; publicclassa4_1{ inta1=1; publicinta2=1; privateinta3=1; protectedinta4=1; } /*a4_2.java*/ packagecp5; publicclassa4_2{ a4_1a=newa4_1(); publicvoiddatause() { System.out.println("data="+a.a1); System.out.println("publicdata="+a.a2); //System.out.println("privitedata="+a.a3);//拒绝访问 System.out.println("protecteddata="+a.a4); } } 运行结果; data=1 publicdata=1 protecteddata=1 成功构建(总时间: 0秒) 2.程序: packagecp5; classTest{ publicStringpub; privateStringpri; protectedStringprot; Stringfri; Test(){ this.pub="public"; this.pri="private"; this.prot="protected"; this.fri="friendly"; } } publicclassa5{ publicstaticvoidmain(String[]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 皮常德27章答案演示教学 常德 27 答案 演示 教学