JAVA 皮常德27章答案.docx
- 文档编号:24214873
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:31
- 大小:38.04KB
JAVA 皮常德27章答案.docx
《JAVA 皮常德27章答案.docx》由会员分享,可在线阅读,更多相关《JAVA 皮常德27章答案.docx(31页珍藏版)》请在冰豆网上搜索。
JAVA皮常德27章答案
二
1.角谷猜想:
任何一个正整数n,如果它是偶数则除以二,如果是奇数则乘以3再加上1,这样得到一个新的整数,如此继续进行上述处理,则最后得到的数一定是1,编写应用程序和小程序分别验证:
3~10000之间任何正整数都满足上述规则。
2.编写一个程序模拟同时掷2个骰子。
程序要用( )模拟产生第一个骰子, 然后再产生第二个骰子,将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;
}
}
}
}
|
运行结果:
true
小程序:
packagecp2;
import.*;
import.*;
publicclassa5extendsApplet{
)
Labellab1;
TextFieldinput1;
intnum1=1;
publicvoidinit(){
lab1=newLabel("任意输入3~10000的一个整数");
input1=newTextField(10);
add(lab1);
add(input1);
}
~
publicbooleanaction(Evente,Objecto){
num1=());
showStatus("");
("");
repaint();
showStatus("这个数是"+num1);
returntrue;
}
)
publicvoidpaint(Graphicsg){
intxpos=50,ypos=50,i=0;
intxpos1=xpos;
while(num1!
=1)
{
if(num1%2==0){
num1=num1/2;
(num1),xpos,ypos);
}
else{
|
num1=num1*3+1;
(num1),xpos,ypos);
}
xpos=xpos+50;
i++;
if(i%5==0)
{
ypos=ypos+10;
xpos=xpos1;
}
、
}
}
}
运行结果:
2.
程序:
packagecp2;
"
import.*;
import.*;
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=());
:
showStatus("");
("");
showStatus("模拟次数"+time);
t2=t3=t4=t5=t6=t7=t8=t9=t10=t11=t12=0;
for(inti=1;i<=time;i++){
a=(int)()*6+1);
b=(int)()*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();
}
+xn/n!
.
三、实验步骤:
1.程序:
packagecp3;
import.*;
import.*;
)
publicclassa1extendsApplet{
Labellab;
TextFieldinput;
inta,b[]=newint[20],i,j;
publicvoidinit(){
lab=newLabel("输入数字");
input=newTextField(10);
\
add(lab);
add(input);
}
publicbooleanaction(Evente,Objecto){
a=());
("");
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--){
(b[t]),j*20-t*20,55);
}
^
for(i=0;i<;i++){
b[i]=0;
}
}
}
运行结果:
**
****
******
《
********
**********
2:
程序:
packagecp3;
import.*;
import.*;
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=());
b=());
("");
("");
showStatus("");
<
sum=0;
aac=newaa();
for(i=0;i<=b;i++){
sum+=(double)(a,i))/(double)(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;
}
—
}
}
publicclassa1{
publicstaticvoidmain(String[]args){
intvalue=();
aaa1=newaa(value);
();
}
}
*
运行结果:
12345
54321
成功构建(总时间:
3秒)
2.
packagecp4;
classinteger{
`
inta[]=newint[10];
publicvoidinput(){
inti;
for(i=0;i<=9;i++){
a[i]=();
if(a[i]==0)
break;
}
}
publicvoidoutput(){
…
inti;
for(i=0;i<=9;i++){
'');}
}
}
classuninteger{
inta[]=newint[20];
publicvoidoutput(){
(
inti;
for(i=0;i<=19;i++){
'');}
}
}
classmeans{
inti,j;
publicbooleaneq(integera1,integera2){
~
for(i=0;i<=9;i++){
if[i]==0)
break;
}
for(j=0;j<=9;j++){
if[j]==0)
break;
}
if(i!
=j){
returnfalse;
!
}
else{
for(i=0;i<=9;i++){
if[i]!
=[i])
returnfalse;
}
}
returntrue;
}
/
publicvoidmix(integera1,integera2,integermix){
intt=0;
for(i=0;i<=9;i++)
for(j=0;j<=9;j++){
if[i]==[j])
[t++]=[i];
elseif[i]<[j])
break;
}
}
#
publicvoidunion(integera1,integera2,unintegerunion){
intt,s;
i=0;
for(s=0,t=0;s<=9&&t<=9&&[s]!
=0&&[t]!
=0;){
if[s]<[t]){
[i++]=[s];
s++;
}
elseif[s]>[t]){
…
[i++]=[t];
t++;
}
else{
[i++]=[s];
s++;t++;
}
}
if([s]==0||s>9)&&(t<=9&&[t]!
=0)){
for(;t<=9;)
—
[i++]=[t++];
}
elseif([t]==0||t>9)&&(s<=9&&[s]!
=0)){
for(;s<=9;)
[i++]=[s++];
}
}
publicvoidinsert(integera1,inta){
for(i=0;i<=9;i++){
;
if[i]==0)
break;}
if(i==10)
"此表已满不能插入");
else{
if(a<=[0]){
for(;i>=1;i--){
[i]=[i-1];
}
[0]=a;
{
}
elseif(a>=[i-1])
[i]=a;
else{
for(j=0;;j++)
if(a>=[j]&&a<=[j+1])
break;
for(;i>j+1;i--){
[i]=[i-1];
}
!
[j+1]=a;
}
"插入后的表一变为:
");();
}
}
publicvoiddelete(integera2,inta){
for(i=0;i<=9;i++){
if[i]==0)
break;}
&
if[a]==0)
"所删位置无元素");
else{
for(j=a;j
[j]=[j+1];
}
"删除后的表二变为:
");();
}
}
}
?
publicclassa5{
publicstaticvoidmain(String[]args){
booleanf;
inta,b;
integermix=newinteger();
unintegerunion=newuninteger();
integera1=newinteger();
integera2=newinteger();
"请以从小到大顺序输入两组(每组个数小于11个)20~80之间的整数,分别以0,0结束");
();
。
();
"表一为:
");();
"表二为:
");();
meansm1=newmeans();
f=(a1,a2);
if(f)
"两个集合相等");
else
!
"两个集合不相等");
(a1,a2,mix);
(a1,a2,union);
"两个集合的交为:
");();
"两个集合的并为:
");();
"请输入要插入表一的整数:
");a=();
(a1,a);
)
"请输入要删除表二元素的下标:
");b=();
(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.程序
/**/
packagecp5;
、
publicclassa4{
publicstaticvoidmain(String[]args){
a4_2b=newa4_2();
();
}
}
/**/
packagecp5;
…
publicclassa4_1{
inta1=1;
publicinta2=1;
privateinta3=1;
protectedinta4=1;
}
/**/
$
packagecp5;
publicclassa4_2{
a4_1a=newa4_1();
publicvoiddatause()
{
"data="+;
"publicdata="+;
序:
packagecp5;
'
classTest{
publicStringpub;
privateStringpri;
protectedStringprot;
Stringfri;
Test(){
="public";
="private";
="protected";
="friendly";
~
}
}
publicclassa5{
publicstaticvoidmain(String[]args){
Testtmp=newTest();
}
}
运行结果;
public
:
Exceptioninthread"main"Uncompilablesourcecode-pri可以在中访问private
atResult:
1
成功构建(总时间:
3秒)
六
四、实验内容:
1.编写一个采用随机函数生成句子的游戏。
现有4个字符串数组:
article、noun、verb、preposition, 它们的内容分别是:
the、a 、one 、some、any ; boy、girl、dog、town、car ; drove、jumped、ran、walked、skipped ; to、from、over、under、依照句法要求:
article + noun + verb + preposition + article + noun产生20个句子。
2.从键盘输入几行文本做如下处理:
(1)显示各元音字母出现的次数。
(2)统计各个单词的长度。
五、实验步骤:
—
1.程序
packagecp6;
publicclassa3{
publicstaticvoidmain(String[]args){
String[]article={"the","a","one","some","any"};
String[]noun={"boy","girl","dog","town","car"};
String[]verb={"drove","jumped","ran","walked","skipped"};
String[]preposition={"to","from","over","under","on"};
'
for(inti=0;i<=19;i++)
{
"");
"");
"");
"");
"");
}
}
;
}
实验结果:
thegirlranfromonedog
theboywalkedtosomedog
theboywalkedoverthedog
thedogwalkedunderaboy
somegirlranunderoneboy
thetownranunderatown
atownranoverthedog
[
thedogwalkedfromsometown
aboywalkedunderatown
agirlranunderthetown
oneboyjumpedfromadog
onegirljumpedfromthetown
thegirldrovefromonegirl
theboyranundertheboy
thegirlwalkedunderonedog
oneboydroveoveratown
aboyrantoatown
【
thetowndroveunderthegirl
someboyrantoaboy
somedogjumpedtosomedog
成功构建(总时间:
0秒)
2.程序
packagecp6;
classaa{
publicvoida1(Strings){
—
inti=0,j=0,t=0;
int[]a=newint[8];
for(;i<=()-1;){
if(i)!
='')i++;
elsebreak;
}
if(i==())"字母个数为"+()+"\t");
else{
for(i=0;i<=()-1;i++){
if(i)!
='');
?
elseif(a[0]==0&&(i)=='')
{
a[j++]=i-t;
t=i;
}
else
{
a[j++]=i-t-1;
t=i;
}
:
}
a[j]=i-t-1;
"字母个数分别为");
for(i=0;a[i]!
=0;i++){
"\t");
}}
t=0;
for(i=0;i<=()-1;i++){
if(i)=='a'||(i)=='i'||(i)=='e'||(i)=='o'||(i)=='u')
t++;
…
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 皮常德27章答案 常德 27 答案