《JAVA简明教程(第三版)》2-7单元答案_第1页
《JAVA简明教程(第三版)》2-7单元答案_第2页
《JAVA简明教程(第三版)》2-7单元答案_第3页
《JAVA简明教程(第三版)》2-7单元答案_第4页
《JAVA简明教程(第三版)》2-7单元答案_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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+)n=x;whil

2、e(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;x<=1000;x+)n=x;while(n!=1)if(n%2=0)n=n/2;else n=n*3+1;System.out.println(x+" 符合角谷猜想!");/* 第2章习题5 编写一个applet,要求输入2个整

3、数,在状态条显示较大的数,紧跟着显示“is larger”。若二者相等,显示“the two numbers are equal!*/ 程序清单/* * large.java */import java.applet.*;import java.awt.*; public class large extends AppletLabel lab1,lab2;TextField input1,input2;int one,two;public void init()lab1=new Label ("输入第一个数");lab2=new Label ("输入第二个数&qu

4、ot;);input1=new TextField (6);input2=new TextField(6);add(lab1);add(input1);add(lab2);add(input2);public boolean action(Event e,Object o)int max;if(e.target = input1 | e.target = input2 )one=Integer.parseInt (input1.getText ();two=Integer.parseInt (input2.getText ();if(one=two)showStatus("两个数相等

5、!");elsemax=(one>two)?one:two;showStatus(max+" 较大!");return true; /* 第2章习题6 编写一个程序模拟同时掷2个骰子。程序要用Math.random( )模拟产生第一个骰子, 然后再产生第二个骰子,将2个结果相加。和等于7的可能性最大,等于2和12的可能性最小。 下图表示了出现36种情况组合。程序模拟掷3600次骰子,判断求和结果是否合理,共有6种情况的和是7, 故在3600次掷骰子的结果中应当有1/6的可能性是7。123456123456723456783456789456789105678

6、910116789101112*/ 程序清单/* * dice.java * * 模拟掷骰子 */public class dice public static void main(String args) / The rate that numbers appeardouble result2;double result7;double result12;int n1, n2;int int1, int2;/ The times numbers appearint times2 = 0;int times7 = 0;int times12 = 0;for (int i = 0; i <

7、 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 + n2) = 12)times12+;result2 = times2 / 3600.0;result7 = times7 / 3600.0;result12 = times12 / 3600.0;System.out.println("和为 2

8、 的次数 : "+times2+" 占的比率 : " + result2);System.out.println("和为 7 的次数 : "+times7+" 占的比率 : " + result7);System.out.println("和为 12 的次数 : "+times12+" 占的比率 : " + result12);/* 第3章习题1 编程:要求输入一个5位整数,将这个数分成独立的数字,并分开显示。例如输入32439则显示 3 2 4 3 9。*/ 程序清单/* * ded

9、uct.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,Object o)if(e.target=input)str=input.getText

10、();showStatus("这个数是:"+str);repaint();return true;public void paint(Graphics g)for(int i=0;i<str.length();i+)g.drawString(str.charAt(i)+"",50+i*10,50);/* 第3章习题2 编程:计算从0 到10的平方和立方值。并以如下格式显示:数 平方 立方0001112483927101001000*/ 程序清单/* * num.java */import java.applet.*;import java.awt.

11、*;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(""

12、+i*i*i,140,30+i*20);/ 采用应用程序如下public class num2 public static void 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(" " + r

13、esult);result = result * i;System.out.print(" " + result);System.out.println();/* 第3章习题3 采用循环语句打印如下图形。* * * * */ 程序清单/* * graph1.java */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(

14、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 = 1; j <= 5; j+) star(j);space(i);star(j);i -= 2;System.out.println();/* 第3章习题4 编程:读取一个矩形的边长,然后输出一个空心矩形。例如读入边长5,应当输出:* *

15、* * * * * * * */ 程序清单/* 采用小程序实现 * graph2.java */public class graph2 extends Appletint num;TextField input;Label Linput;public void init()Linput=new Label("Enter an integer:");input=new TextField(10);add(Linput);add(input);public boolean action(Event e,Object o)if(e.target=input)num=Integer

16、.parseInt(input.getText();repaint();return true;public void paint(Graphics g)int i,j;for(i=0;i<num;i+)if(i=0|i=num-1)for(j=0;j<num;j+)g.drawString ("*",30+10*j,50+10*i);elseg.drawString ("*",30,50+10*i);g.drawString ("*",30+10*(num-1),50+10*i);/* 采用应用程序实现 * graph2

17、_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; i+) stars(1);space(n - 2);stars(1);System.out.p

18、rintln();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 temp = new gra

19、ph2_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("请输入你需要判断的数:&qu

20、ot;);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;i<j;i+,j-)if(str.charAt(i)!=str.charAt(j)b=false;repaint();return true;public void paint(

21、Graphics g)if( 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

22、expi extends Appletdouble result;int x;Label express1=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 ,

23、 int n)/ 计算 xnint t=1;for(int i=1;i<=n;i+)t=t*x;return t; public boolean action(Event e,Object o)double temp=1;int n=1;result=1; / e的结果if(e.target=field)x=Integer.parseInt(field.getText();while(temp>1e-12)temp=(double)f(x,n) / factor(n);result += temp;n+;showStatus("结果是:"+result);rep

24、aint();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.random() * 10e6) % 100;System.out.pr

25、int(arrayi+" ");System.out.println();for (int i = 0; i < 19; i+) if (arrayi > arrayi + 1)System.out.println("The "+ i+ " one("+ arrayi+ ") is bigger than "+ (i + 1)+ " one("+ arrayi + 1+ ")");else if (arrayi < arrayi + 1)System.out

26、.println("The "+ i+ " one("+ arrayi+ ") is smaller than "+ "the "+ (i + 1)+ " one("+ arrayi + 1+ ")");elseSystem.out.println("The "+ i+ " one("+ arrayi+ ") is equal to "+ "the "+ (i + 1)+ " one(&

27、quot;+ arrayi + 1+ ")");/* 第4章习题1定义一个类,它包含了一个int类型的变量x、若干个构造函数(根据你的需要)和一个输出方法show( )。编程:从键盘输入一个数,将这个数传递给这个类的x,采用方法show( )逆序输出这个数。 */ 程序清单/* * reverseNumber.java */public class reverseNumber / reverseNumberprivate int x;reverseNumber (int x)this.x = x;public void show() String str_temp;str_

28、temp = Integer.toString(x); / 根据整数x,生成一个String对象char array_temp = new charstr_temp.length();array_temp = str_temp.toCharArray();for(int i = str_temp.length()-1; i >= 0;i-)System.out.print(array_tempi);public static void main(String args) reverseNumber temp = new reverseNumber(1234);temp.show();/*

29、 第4章习题2 定义一个复数类complex,它的内部具有两个实例变量:realPart和imagPart,分别代表复数的实部和虚部,编程实现要求的数学运算。(1)实现两个复数相加。复数加运算的原则是:复数的实部和虚部分别相加。(2)实现两个复数相减。复数减运算的原则是:复数的实部和虚部分别相减。(3)输出运算结果,判断是否正确。*/ 程序清单/* * Complex.java */public class Complex / real partprivate double realPart;/ imag partprivate double imagePart;/ default initp

30、ublic 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.println("0");else if

31、 (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.r

32、ealPart + y.realPart;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)

33、;Complex c3 = new 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

34、java.awt.*;import java.applet.*;public class 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.dr

35、awString("面积:"+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(r<0)showStatus("半径不能为负数!请重新输入数据。");return false;repaint();return true;cla

36、ss round / 定义一个round 类final float PI=3.14f;int r;void setRound(int t)r=t;float area() return PI*r*r;float lengthCircle() return 2*PI*r;/* 第4章习题4 定义一个日期类date,确保具有如下功能: (1) 输出日期的格式具有如下几种:YYYY MM DDMM DD YYYYDD MM YYYY (2) 采用重载构造函数,以上述日期格式数据为参数,创建 date类型的对象。*/ 程序清单/* * Date.java */public class Date / y

37、earint YYYY;/ monthint MM;/ dayint DD;/ initpublic Date(int y, int m, int d) this.YYYY = y;this.MM = m;this.DD = d;public Date( ) this.YYYY = 0;this.MM = 0;this.DD = 0;public boolean isValid() return (this.YYYY > 0&& this.MM > 0&& this.DD > 0&& this.MM < 13&&a

38、mp; this.DD < 32);public void showYMD() System.out.println(this.YYYY+" "+this.MM+" "+this.DD);public void showMDY() System.out.println(this.MM+" "+this.DD+" "+this.YYYY);public void showDMY() System.out.println(this.DD+" "+this.MM+" "+th

39、is.YYYY);public static void main(String args)Date day1=new Date();Date day2=new Date(2003,12,1);if(day1.isValid()day1.showYMD();day1.showMDY();day1.showDMY();if(day2.isValid()day2.showYMD();day2.showMDY();day2.showDMY();/* 第4章习题5 定义一个整形集合类integerSet。这种类型的对象可以存储10个20至80之间的整数,即它的内部有一个整形数组存储数据。编程:(1)判断

40、两个integerSet类对象S1和S2是否相等。提示:集合相等的前提是所有元素相等。(2)输出两个集合对象的交集。(3)输出两个集合对象的并集。(4)将一个整形数据插入到一个集合对象中。(5)从一个集合中删除某一个元素。*/ 程序清单/* * IntegerSet.java * */public class IntegerSet private boolean isEmpty;/ the size of the setprivate final int size = 10;/ how many elements in the setprivate int current;/ set to s

41、tore datasprivate int set = new intsize;public IntegerSet() / 也可以采用随机数初始化数组/gen random ints to set <100/for(int i = 0; i < size; i+)/seti = (int)(Math.random()*10e5)%100;this.isEmpty = true;this.current = 0;for (int i = 0; i < size; i+)this.seti = 0;/clear IntegerSetpublic void Clear() this

42、.isEmpty = true;this.current = 0;for (int i = 0; i < this.size; i+)this.seti = 0;/ Merge two IntegerSetspublic boolean MergeIntegerSets(IntegerSet arg1, IntegerSet arg2) / System.out.println("merge");/ argments IntegerSet is emptyif (arg1.isEmpty && arg2.isEmpty) this.Clear();return true;/ arg1 is emptyif (arg1.isEmpty = true) this.isEmpty = false;this.current = arg2.current;for (int i = 0; i < this.size; i+)this.seti = arg2.seti;return true;/ arg2 is emptyif (arg2.isEmpty = true) this.isEmpty = fals

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论