JAVA 皮常德27章答案演示教学.docx

上传人:b****6 文档编号:8030756 上传时间:2023-01-28 格式:DOCX 页数:27 大小:39.09KB
下载 相关 举报
JAVA 皮常德27章答案演示教学.docx_第1页
第1页 / 共27页
JAVA 皮常德27章答案演示教学.docx_第2页
第2页 / 共27页
JAVA 皮常德27章答案演示教学.docx_第3页
第3页 / 共27页
JAVA 皮常德27章答案演示教学.docx_第4页
第4页 / 共27页
JAVA 皮常德27章答案演示教学.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

JAVA 皮常德27章答案演示教学.docx

《JAVA 皮常德27章答案演示教学.docx》由会员分享,可在线阅读,更多相关《JAVA 皮常德27章答案演示教学.docx(27页珍藏版)》请在冰豆网上搜索。

JAVA 皮常德27章答案演示教学.docx

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[]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

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

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