《《JAVA简明教程(第三版)》2-7单元答案(共40页).docx》由会员分享,可在线阅读,更多相关《《JAVA简明教程(第三版)》2-7单元答案(共40页).docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上第2章习题4 角谷猜想:任何一个正整数n,如果它是偶数则除以2,如果是奇数则乘以3加上1,这样得到一个新的整数,如继续进行上述处理,则最后得到的数一定是1。编写应用程序和小程序分别证明:所有的3至10000的数都符合上述规则。*/ 程序清单/*方法1:采用小程序*/import java.awt.*;import java.util.*;import java.applet.Applet;public class jiaogu extends Appletpublic void paint(Graphics g)int x,n,i=10;for(x=3;x=10;x+
2、)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: 采用应用程序 */class jiaogupublic static void main(String args)int x,n,i;for(x=3;xtwo)?one:two;showStatus(max+ 较大!);return true; /* 第2章习题6 编写一个程序模拟同时掷2个骰子。程序要用Math.random( )模拟产生第一个骰子, 然后再产生第二个骰子,将2个结果相加。和等于7的可能性最
3、大,等于2和12的可能性最小。 下图表示了出现36种情况组合。程序模拟掷3600次骰子,判断求和结果是否合理,共有6种情况的和是7, 故在3600次掷骰子的结果中应当有1/6的可能性是7。123456123456723456783456789456789105678910116789101112*/ 程序清单/* * dice.java * * 模拟掷骰子 */public class dice public static void main(String args) / The rate that numbers appeardouble result2;double result7;dou
4、ble result12;int n1, n2;int int1, int2;/ The times numbers appearint times2 = 0;int times7 = 0;int times12 = 0;for (int i = 0; i 3600; i+) / generate random intn1 = (int) (Math.random() * 6 + 1 );n2 = (int) (Math.random() * 6 + 1 );if (n1 + n2) = 2)times2+;else if (n1 + n2) = 7)times7+;else if (n1 +
5、 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);/* 第3章习题1 编程:要求输入一个5位整数,将这个
6、数分成独立的数字,并分开显示。例如输入32439则显示 3 2 4 3 9。*/ 程序清单/* * deduct.java */import java.applet.*;import java.awt.*;public class deduct extends AppletString str;TextField input;Label Linput;public void init()Linput=new Label(输入一个整数);input=new TextField(10);add(Linput);add(input);public boolean action(Event e,Obj
7、ect o)if(e.target=input)str=input.getText();showStatus(这个数是:+str);repaint();return true;public void paint(Graphics g)for(int i=0;istr.length();i+)g.drawString(str.charAt(i)+,50+i*10,50);/* 第3章习题2 编程:计算从0 到10的平方和立方值。并以如下格式显示:数 平方 立方0001112483927101001000*/ 程序清单/* * num.java */import java.applet.*;imp
8、ort java.awt.*;public class num extends Appletpublic void paint(Graphics g)g.drawString(数,20,15);g.drawString(平方值,80,15);g.drawString(立方值,140,15);for(int i=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);/ 采用应用程序如下public class num2 public static v
9、oid main(String args) int i = 0;int result;System.out.println(数 + 平方 + 立方);for (; i = 10; i+) result = i;System.out.print(i + );result = result * i;System.out.print( + result);result = result * i;System.out.print( + result);System.out.println();/* 第3章习题3 采用循环语句打印如下图形。* * * * */ 程序清单/* * graph1.java
10、*/public class graph1 / draw n starsstatic void star(int n) for (int i = 1; i = n; i+) System.out.print(*);/ draw n spacesstatic void space(int n) for (int i = 1; i = n; i+) System.out.print( );public static void main(String args) / the length of spaceint i = 20;/ the length of starint j = 1;for (j
11、= 1; j = 5; j+) star(j);space(i);star(j);i -= 2;System.out.println();/* 第3章习题4 编程:读取一个矩形的边长,然后输出一个空心矩形。例如读入边长5,应当输出:* * * * * * * * * */ 程序清单/* 采用小程序实现 * graph2.java */public class graph2 extends Appletint num;TextField input;Label Linput;public void init()Linput=new Label(Enter an integer:);input=n
12、ew TextField(10);add(Linput);add(input);public boolean action(Event e,Object o)if(e.target=input)num=Integer.parseInt(input.getText();repaint();return true;public void paint(Graphics g)int i,j;for(i=0;inum;i+)if(i=0|i=num-1)for(j=0;jnum;j+)g.drawString (*,30+10*j,50+10*i);elseg.drawString (*,30,50+1
13、0*i);g.drawString (*,30+10*(num-1),50+10*i);/* 采用应用程序实现 * graph2_1.java */public class graph2_1 private int number;public NO_2_4(int number) this.number = number;draw(number);/ draw squarepublic void draw(int n) if (n = 1)System.out.println(*);else stars(n);System.out.println();for (int i = 0; i n;
14、i+) stars(1);space(n - 2);stars(1);System.out.println();stars(n);System.out.println();/ draw starsstatic void stars(int n) for (int i = 1; i = n; i+) System.out.print(*);/ draw spacesstatic void space(int n) for (int i = 1; i = n; i+) System.out.print( );public static void main(String args) graph2_1
15、 temp = new graph2_1(7);/* 第3章习题5 编程:输入一个数,判断输入的这个数是否为廻文。所谓廻文数就是从左向右看和从右向左看都一样。例如:121、13431都是廻文,而12345不是廻文。*/ 程序清单/* 采用小程序实现 * huiwen.java */import java.awt.*;import java.applet.*;public class huiwen extends AppletTextField input;Label message;boolean b=true;public void init()message=new Label(请输入你需
16、要判断的数:);input=new TextField(10);add(message);add(input);showStatus(start.);public boolean action(Event e,Object o)String str;b=true;if(e.target=input)str=input.getText();for(int i=0,j=str.length()-1;ij;i+,j-)if(str.charAt(i)!=str.charAt(j)b=false;repaint();return true;public void paint(Graphics g)if
17、( b )g.drawString(input.getText()+是回文,50,100);elseg.drawString(input.getText()+不是回文,50,100);showStatus(done);/* 第3章习题6 采用下列公式计算ex的值:ex =1+x1/1!+ x2/2!+xn/n!。从键盘输入x和n,编程计算ex的值。*/ 程序清单/* * expi.java */import java.awt.*;import java.applet.*;public class expi extends Appletdouble result;int x;Label expr
18、ess1=new Label(e 的);TextField field=new TextField(5); Label express2=new Label(次方:); public void init()add(express1);add(field); add(express2);int factor(int n)/ 计算 n!int t=1;for(int i=1;i=n;i+)t=t*i;return t; int f(int x , int n)/ 计算 xnint t=1;for(int i=1;i1e-12)temp=(double)f(x,n) / factor(n);resu
19、lt += temp;n+;showStatus(结果是:+result);repaint();return true; /* 第3章习题7 编程:产生20个int类型的随机数,针对每个数使用if-then-else判断它是大于、小于或等于下一个数(注意:最后一个数不比较)。*/ 程序清单/* * randAndComp.java */public class randAndComp public static void main(String args) int array = new int20;for (int i = 0; i 20; i+) arrayi = (int) (Math.
20、random() * 10e6) % 100;System.out.print(arrayi+ );System.out.println();for (int i = 0; i arrayi + 1)System.out.println(The + i+ one(+ arrayi+ ) is bigger than + (i + 1)+ one(+ arrayi + 1+ );else if (arrayi = 0;i-)System.out.print(array_tempi);public static void main(String args) reverseNumber temp =
21、 new reverseNumber(1234);temp.show();/* 第4章习题2 定义一个复数类complex,它的内部具有两个实例变量:realPart和imagPart,分别代表复数的实部和虚部,编程实现要求的数学运算。(1)实现两个复数相加。复数加运算的原则是:复数的实部和虚部分别相加。(2)实现两个复数相减。复数减运算的原则是:复数的实部和虚部分别相减。(3)输出运算结果,判断是否正确。*/ 程序清单/* * Complex.java */public class Complex / real partprivate double realPart;/ imag partp
22、rivate double imagePart;/ default initpublic Complex() this.realPart = 0.0;this.imagePart = 0.0;/ init with argumentspublic Complex(double real, double image) this.realPart = real;this.imagePart = image;/ show the complexpublic void show() if (this.realPart = 0.0) & (this.imagePart = 0.0)System.out.
23、println(0);else if (this.realPart = 0.0)System.out.println(this.imagePart + i);else if (this.imagePart = 0.0)System.out.println(this.realPart);elseSystem.out.println(this.realPart + + + this.imagePart + i);/ add two complexespublic void add(Complex x, Complex y) this.realPart = x.realPart + y.realPa
24、rt;this.imagePart = x.imagePart + y.imagePart;/sub two complexespublic void sub(Complex x, Complex y) this.realPart = x.realPart - y.realPart;this.imagePart = x.imagePart - y.imagePart;public static void main(String arg) Complex c1 = new Complex(1, 2);Complex c2 = new Complex(2, 2);Complex c3 = new
25、Complex();c1.show();c2.show();c3.add(c1, c2);System.out.print(add : );c3.show();c3.sub(c1, c2);System.out.print(sub : );c3.show();/* 第4章习题3 定义一个圆类circle,它有一个变量radius(半径)。从键盘输出数据,通过构造函数的参数传递给radius,输出圆的周长和面积。但是,你必须确保输入的数据不为负数。*/ 程序清单/* * circle.java */import java.awt.*;import java.applet.*;public cla
26、ss circle extends AppletTextField banjing;int r=0;round Circle;public void init()Label prompt;Circle=new round();prompt = new Label(半径:);banjing=new TextField(20); add( prompt );add( banjing );public void paint(Graphics g)Circle.setRound(r); g.drawString(面积:+Circle.area() ,50,80);g.drawString(周长:+Circle.lengthCircle() ,50,100);public boolean action(Event e,Object o)if (e.target = banjing)r = Integer.parseInt( banjing.getText() );if(r0)showStatus(半径