皮德常java课后答案修正版.docx
- 文档编号:9264392
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:58
- 大小:31.31KB
皮德常java课后答案修正版.docx
《皮德常java课后答案修正版.docx》由会员分享,可在线阅读,更多相关《皮德常java课后答案修正版.docx(58页珍藏版)》请在冰豆网上搜索。
皮德常java课后答案修正版
角谷猜想:
任何一个正整数n,如果它是偶数则除以2,如果是奇数则乘以3加上1,
这样得到一个新的整数,如继续进行上述处理,则最后得到的数一定是1。
编写应用程序和小程序程序分别证明:
所有的3至10000的数都符合上述规则。
应用程序如下:
publicclassJiaogu{
/**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(String[]args)
{
intx,n,i;
for(x=3;x<=10000;x++)
{n=x;
while(n!
=1)
if(n%2==0)
n=n/2;
else
n=n*3+1;
System.out.println(x+"符合角谷猜想!
");
}
}
}
小程序如下:
packagejavaapplication2;
importjava.awt.Graphics;
importjava.util.*;
importjava.applet.Applet;
publicclassJavaApplication2extendsApplet
{
publicvoidpaint(Graphicsg)
{
intx,n,i=10;
for(x=3;x<=10000;x++)
{
n=x;
while(n!
=1)
if(n%2==0)
n=n/2;
else
n=n*3+1;
g.drawString(x+"符合角谷猜想!
",25,25+i);
i=i+15;
}
}
}
第2章习题5
2、编写一个小程序(Applet),要求输入两个整数,在状态条显示较大的数,紧跟着显示“islarger”。
若二者相等,显示“thetwonumbersareequal!
”。
程序如下:
packagejavaapplication3;
importjava.applet.*;
importjava.awt.*;
publicclassJavaApplication3extendsApplet{
Labellab1,lab2;
TextFieldinput1,input2;
intone,two;
publicvoidinit(){
lab1=newLabel("输入第一个整数");
lab2=newLabel("输入第二个整数");
input1=newTextField(6);
input2=newTextField(6);
add(lab1);
add(input1);
add(lab2);
add(input2);
}
publicbooleanaction(Evente,Objecto)
{
intmax;
if(e.target==input1||e.target==input2)
{
one=Integer.parseInt(input1.getText());
two=Integer.parseInt(input2.getText());
if(one==two)
showStatus("thetwonumbersareequal!
");
else{
max=(one>two)?
one:
two;
showStatus(max+"islarger");
}
}
returntrue;
}
}
3、编写一个程序模拟同时掷两个骰子。
程序要用Math.random()模拟产生第一个骰子,然
后再产生第二个骰子,将两个结果相加。
相加的和等于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
程序如下:
packagetouzi;
/**
*
*@authorAdministrator
*/
publicclassTouzi
{
publicstaticvoidmain(String[]args)
{
doubleresult2;doubleresult7;doubleresult12;
intn1,n2;
inttimes2=0;
inttimes7=0;
inttimes12=0;
for(inti=0;i<3600;i++)
{
n1=(int)(Math.random()*6+1);
n2=(int)(Math.random()*6+1);
if((n1+n2)==2)
times2++;
elseif((n1+n2)==7)
times7++;
elseif((n1+n2)==12)
times12++;
}
result2=times2/3600.0;
result7=times7/3600.0;
result12=times12/3600.0;
System.out.println("和为2的次数:
"+times2+"比率:
"+result2);
System.out.println("和为7的次数:
"+times7+"比率:
"+result7);
System.out.println("和为12的次数:
"+times12+"比率:
"+result12);}
}
运行结果:
run:
和为2的次数:
83比率.023*********
和为7的次数:
552比率:
0.153********333332
和为12的次数:
105比率.029*********
成功构建(总时间:
1秒)
第3章习题1
编程:
编写一个applet,要求输入一个任意长度的整数(long类型变量所允许的范围内),将这个数分成独立的数字,并分开显示。
例如输入32439则显示32439。
程序如下:
packagefenkai;
/**
*
*@authorAdministrator
*/
importjava.applet.*;
importjava.awt.*;
publicclassFenkaiextendsApplet{
Stringstr;
TextFieldinput;
LabelLinput;
publicvoidinit(){
Linput=newLabel("输入一个整数");
input=newTextField(10);
add(Linput);
add(input);
}
publicbooleanaction(Evente,Objecto){
if(e.target==input){
str=input.getText();
}
repaint();
returntrue;
}
publicvoidpaint(Graphicsg){
for(inti=0;i g.drawString(str.charAt(i)+"",50+i*10,50); } } 编程: 计算从0到10的平方和立方值。 并以如下格式显示: 数平方立方 000 111 248 3927 ………………………………… 101001000 程序如下: packagepingfanglifang; /** * *@authorAdministrator */ importjava.applet.*; importjava.awt.*; publicclassPingfanglifangextendsApplet{ publicvoidpaint(Graphicsg){ g.drawString("整数",20,15); g.drawString("平方",80,15); g.drawString("立方",140,15); for(inti=0;i<=10;i++){ g.drawString(""+i,20,30+i*20); g.drawString(""+i*i,80,30+i*20); g.drawString(""+i*i*i,140,30+i*20); } } } 第3章习题3采用循环语句打印如下图形。 * * ** ** *** *** **** **** ***** ***** //程序清单 /* *graph1.java */ publicclassgraph1{ //drawnstars staticvoidstar(intn){for(inti=1;i<=n;i++){ System.out.print("*"); } } //drawnspaces staticvoidspace(intn){for(inti=1;i<=n;i++){ System.out.print(""); } } publicstaticvoidmain(String[]args){ //thelengthofspaceinti=20;//thelengthofstarintj=1; for(j=1;j<=5;j++){star(j);space(i);star(j);i-=2; System.out.println(); } } } 第3章习题4 编程: 读取一个矩形的边长,然后输出一个空心矩形。 例如读入边长5,应当输出: ***** ** ** ** ***** //程序清单 /*采用小程序实现 *graph2.java */ publicclassgraph2extendsApplet{ intnum; TextFieldinput; LabelLinput; publicvoidinit(){ Linput=newLabel("Enteraninteger: ");input=newTextField(10);add(Linput);add(input); } publicbooleanaction(Evente,Objecto){ if(e.target==input) num=Integer.parseInt(input.getText()); repaint();returntrue; } publicvoidpaint(Graphicsg) { inti,j; for(i=0;i g.drawString("*",30+10*j,50+10*i); else{ g.drawString("*",30,50+10*i); g.drawString("*",30+10*(num-1),50+10*i); } } } /*采用应用程序实现 *graph2_1.java */ publicclassgraph2_1{ privateintnumber; publicNO_2_4(intnumber){this.number=number;draw(number); } //drawsquarepublicvoiddraw(intn){if(n==1)System.out.println("*");else{stars(n); System.out.println();for(inti=0;i (1);space(n-2);stars (1); System.out.println(); } stars(n); System.out.println(); } } //drawstars staticvoidstars(intn){for(inti=1;i<=n;i++){ System.out.print("*"); } } //drawspaces staticvoidspace(intn){for(inti=1;i<=n;i++){ System.out.print(""); } } publicstaticvoidmain(String[]args){graph2_1temp=newgraph2_1(7); } } 第3章习题5 编程: 编写一个applet,输入一个数,判断输入的这个数是否为回文数。 所谓回文数就是从左向右看和从右向左看都一样。 例如: 121、13431都是回文数,而12345不是回文数。 程序如下: packagehuiwen; /** * *@authorAdministrator */ importjava.awt.*; importjava.applet.*; publicclassHuiwenextendsApplet{ TextFieldinput; Labelmessage; booleanb; publicvoidinit(){ message=newLabel("输入一个数: "); input=newTextField(10); add(message); add(input); } publicbooleanaction(Evente,Objecto){ Stringstr; b=true; if(e.target==input){ str=input.getText(); for(inti=0,j=str.length()-1;i if(str.charAt(i)! =str.charAt(j)) b=false; } repaint(); returntrue; } publicvoidpaint(Graphicsg){ if(b) g.drawString(input.getText()+"是回文数",50,100); else g.drawString(input.getText()+"不是回文数",50,100); } } 编写一个applet,采用下列公式计算e^x的值: e^x=1+(x^1)/1! +(x^2)/2! +…+(x^n)/n! 。 从键盘输入x和n,编程计算e^x的值。 程序如下: packagejisuanex; /** * *@authorAdministrator */ importjava.awt.*; importjava.applet.*; publicclassJisuanexextendsApplet{ doubleresult; intx,n; Labelexpress1=newLabel("e的"); TextFieldfield1=newTextField(5); Labelexpress2=newLabel("次方: "); Labelexpress3=newLabel("输入n: "); TextFieldfield2=newTextField(5); publicvoidinit(){ add(express1); add(field1); add(express2); add(express3); add(field2); } intfactor(intm){ intt=1; for(inti=1;i<=m;i++) t=t*i; returnt; } intf(intx,intm){ intt=1; for(inti=1;i<=m;i++) t=t*x; returnt; } publicbooleanaction(Evente,Objecto){ doubletemp=1; result=1; x=Integer.parseInt(field1.getText()); n=Integer.parseInt(field2.getText()); for(intm=1;m<=n;m++) { temp=(double)f(x,m)/factor(m); result+=temp; } showStatus("结果: "+result); repaint(); returntrue; } } 编程: 产生20个int类型的随机数,针对每个数使用if-then-else判断它是大于、小于或等于下一个数(注意: 最后一个数不比较)。 程序如下: packagebijiao; /** * *@authorAdministrator */ publicclassBijiao{ publicstaticvoidmain(String[]args){ intarray[]=newint[20]; for(inti=0;i<20;i++){ array[i]=((int)(Math.random()*10e6))%100; System.out.print(array[i]+""); } System.out.println(); for(inti=0;i<19;i++){ if(array[i]>array[i+1]) System.out.println("第"+i+"个数("+array[i]+")大于第"+(i+1)+"个数("+array[i+1]+")"); elseif(array[i] System.out.println("第"+i+"个数("+array[i]+")小于第"+(i+1)+"个数("+array[i+1]+")"); else System.out.println("第"+i+"个数("+array[i]+")等于第"+(i+1)+"个数("+array[i+1]+")"); } } } 定义一个类,它包含了一个int类型的变量x、若干个构造函数(根据用户自己的需要) 和一个输出方法show()。 编程: 从键盘输入一个两位以上的数,将这个数传递给这个类的变量x,采用方法show()逆序输出这个数。 程序如下: packagereversenum; /** * *@authorAdministrator */ publicclassReversenum{ privateintx; Reversenum(intx){ this.x=x; } publicvoidshow(){ Stringstr; str=Integer.toString(x); chararray[]=newchar[str.length()]; array=str.toCharArray(); for(inti=str.length()-1;i>=0;i--) System.out.print(array[i]); } publicstaticvoidmain(String[]args){ Reversenumtemp=newReversenum(325425); temp.show(); } } 2、定义一个复数类complex,它的内部具有两个实例变量: realPart和imagPart,分别代表复数的实部和虚部,编程实现要求的数学运算。 (1)实现两个复数相加。 复数加运算的原则是: 复数的实部和虚部分别相加。 (2)实现两个复数相减。 复数减运算的原则是: 复数的实部和虚部分别相减。 (3)输出运算结果,判断是否正确。 程序如下: packagecomplex; /** * *@authorAdmin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 皮德常 java 课后 答案 修正