版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、角谷猜想:任何一个正整数 n ,如果它是偶数则除以 2,如果是奇数则乘以 3 加上 1 , 这样得到一个新的整数, 如继续进行上述处理,则最后得到的数一定是 1。编写应用程序 和小程序程序分别证明: 所有的 3 至 10000 的数都符合上述规则。应用程序如下:public class Jiaogu/* param args the command line arguments*/public static void main(String args)int x,n,i;for(x=3;x<=10000;x+) n=x;while(n!=1)if(n%2=0)n=n/2;elsen=n*
2、3+1;System.out.println(x+" 符合角谷猜想 !");小程序如下:package javaapplication2;import java.awt.Graphics;import java.util.*;import java.applet.Applet;public class JavaApplication2 extends Appletpublic void paint(Graphics g)int x,n,i=10;for(x=3;x<=10000;x+)n=x;while(n!=1)if(n%2=0)n=n/2;elsen=n*3+1;
3、g.drawString (x+" 符合角谷猜想 !",25,25+i); i=i+15;第 2 章习题 52 、编写一个小程序( Applet ),要求输入两个整数,在状态条显示较大的数,紧跟着显示 “ is larger ”。若二者相等,显示“ the two numbers are equal!”。程序如下:package javaapplication3;import java.applet.*;import java.awt.*;public class JavaApplication3 extends AppletLabel lab1,lab2;TextFiel
4、d input1,input2;int one,two;public void init()lab1=new Label (" 输入第一个整数 ");lab2=new Label (" 输入第二个整数 ");input1=new TextField (6);input2=new TextField(6);add(lab1);add(input1);add(lab2);add(input2);public boolea n action( Eve nt e,Object o) int max;if(e.target = in put1 | e.target
5、 = in put2 )one=ln teger.parse In t (i nput1.getText ();two=ln teger.parse In t (i nput2.getText ();if(on e=two)showStatus("the two nu mbers are equal!");elsemax=(on e>two) ?on e:two; showStatus(max+" is larger");return true;3、编写一个程序模拟同时掷两个骰子。程序要用Math.ra ndom()模拟产生第一个骰子,然后再产生第
6、二个骰子,将两个结果相加。相加的和等于7的可能性最大,等于 2和12的可能性最小。下图表示了出现36种情况的组合。程序模拟掷3600次骰子,判断求和结果是否合理,共有6种情况的和是7,故在3600次掷骰子的结果中应当有1/6的可能性是7。123456123456723456783456789456789105678910116789101112程序如下:package touzi;/* author Administrator*/ public class Touzipublic static void main(String args)double result2; double resul
7、t7; double result12;int n1, n2;int times2 = 0;int times7 = 0;int times12 = 0;for (int i = 0; i < 3600; i+)n1 = (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;resu
8、lt7 = 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); 运行结果:r
9、un:和为 2 的次数 : 83 比率 : 0.023055555555555555和为 7 的次数 : 552 比率 : 0.15333333333333332 和为 12 的次数 : 105 比率 : 0.029166666666666667 成功构建 (总时间 : 1 秒 ) 第 3 章习题 1编程:编写一个 applet ,要求输入一个任意长度的整数( long 类型变量所允许的范围内) 将这个数分成独立的数字,并分开显示。例如输入 32439 则显示 3 2 4 3 9 。程序如下: package fenkai;/* author Administrator*/import jav
10、a.applet.*;import java.awt.*;public class Fenkai 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();r epaint();r etu
11、rn true;p ublic void paint(Graphics g)f or(int i=0;i<str.length();i+)g .drawString(str.charAt(i)+"",50+i*10,50);编程:计算从 0 到 10 的平方和立方值。并以如下格式显示: 数 平方 立方000111248392710 100 1000程序如下: package pingfanglifang;* author Administrator*/import java.applet.*;import java.awt.*;public class Pingfan
12、glifang extends Applet public void paint(Graphics g)g.drawString(" 整数 ",20,15);g.drawString(" 平方 ",80,15);g.drawString(" 立方 ",140,15);f or(int i=0;i<=10;i+) g.drawString(""+i,20,30+i*20); g.drawString(""+i*i,80,30+i*20); g.drawString(""+
13、i*i*i,140,30+i*20);第 3 章习题 3 采用循环语句打印如下图形。* *k'k'k*/ 程序清单 /* graph1.java*/public class graph1 / draw n stars static void star(int n) for (inti = 1; i <= n; i+) System.out.print("*");/ draw n spaces static void space(int n) for (int i = 1; i <= n; i+) System.out.print(" &
14、quot;); public static void main(String args) / the length of space int i = 20;/ thelength of starint j = 1;for (j = 1; j <= 5; j+) star(j); space(i);star(j); i -= 2;System.out.println(); 第 3 章习题 4 编程:读取一个矩形的边长,然后输出一个空心矩形。例如读入边长 5,应当输出:/ 程序清单/* 采用小程序实现* graph2.java */ public class graph2 extends A
15、ppletint 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.parseInt(input.getText(); repaint();return true;public void paint(Graphi
16、cs 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_1.java*/public class graph2_1 private int number; public NO_2_4(in
17、t number) this.number = number; draw(number);/ draw squarepublic voiddraw(int n) if (n = 1)System.out.println("*"); else stars(n);System.out.println();for (int i = stars(1);0; i < n; i+) space(n - 2);stars(1);System.out.println(); stars(n); System.out.println();/ draw stars static void
18、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 graph2_1(7);第 3 章习题 5编程:编写一个 applet ,输入一个数,判断输入的这个数是否为回文数。所谓回文数就是
19、从左向右看和从右向左看都一样。例如: 121 、 13431 都是回文数,而 12345 不是回文数。 程序如下: package huiwen;* author Administrator*/import java.awt.*;import java.applet.*;public class Huiwen extends AppletTextField input;Label message;boolean b;p ublic void init()message=new Label(" 输入一个数 :");input=new TextField(10);add(mes
20、sage);add(input);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(Graphics g)if( b )g.drawString(input.getT ext()+" 是回文数 "
21、,50,100); elseg.drawString(input.getText()+" 不是回文数 ",50,100);编写一个 applet ,采用下列公式计算eAx 的值:eAx=1+(xA1)/1+ (xA2)/2! + +於n)/n!。从键盘输入x和n ,编程计算eAx的值。程序如下:package jisuanex;* author Administrator*/import java.awt.*;import java.applet.*;public class Jisuanex extends Applet double result;int x,n;Lab
22、el express1=new Label("e 的 ");TextField field1=new TextField(5);Label express2=new Label(" 次方 :");Label express3=new Label(" 输入 n:"); TextField field2=new TextField(5);p ublic void init()add(express1);add(field1);add(express2);add(express3);add(field2);int factor(int m)
23、int t=1;for(int i=1;i<=m;i+)t=t*i;return t;int f(int x , int m)int t=1;for(int i=1;i<=m;i+)t=t*x;return t;public boolean action(Event e,Object o)double temp=1;result=1; x=Integer.parseInt(field1.getText(); n=Integer.parseInt(field2.getText(); for(int m=1;m<=n;m+)temp=(double)f(x,m) / factor
24、(m);result += temp;showStatus(" 结果: "+result); repaint();return true;编程:产生 20 个 int 类型的随机数,针对每个数使用 if-then-else 判断它是大于、小于或 等于下一个数(注意:最后一个数不比较) 。程序如下 :package bijiao;/* author Administrator */public class Bijiao public static void main(String args) int array = new int20;for (int i = 0; i &l
25、t; 20; i+) arrayi = (int) (Math.random() * 10e6) % 100;System.out.print(arrayi+" ");System.out.println();for (int i = 0; i < 19; i+) if (arrayi > arrayi + 1)System.out.println("第 "+ i+ "个数 ("+ arrayi+ ")大于第"+ (i +1)+ "个数("+arrayi + 1+ ")&q
26、uot;);else if (arrayi < arrayi+ 1)System.out.println("第 "+ i+ "个数 ("+ arrayi+ ")小于第"+ (i +1)+ "个数("+arrayi + 1+ ")");elseSystem.out.println("第 "+ i+ "个数 ("+ arrayi+ ")等于第"+ (i +1)+ "个数("+arrayi + 1+ ")&
27、quot;);定义一个类,它包含了一个 int类型的变量X、若干个构造函数(根据用户自己的需要) 和一个输出方法 show( )。编程:从键盘输入一个两位以上的数,将这个数传递给这个类的 变量x,采用方法show()逆序输出这个数。程序如下:package reversenum;/* author Administrator*/public class Reversenum private int x;Reversenum (int x)this.x = x;public void show() String str;str = Integer.toString(x);char array =
28、 new charstr.length();array = str.toCharArray();for(int i = str.length()-1; i >= 0;i-)System.out.print(arrayi);public static void main(String args) Reversenum temp = new Reversenum(325425);temp.show();2、定义一个复数类 complex ,它的内部具有两个实例变量: realPart 和 imagPart ,分别代表 复数的实部和虚部,编程实现要求的数学运算。(1) 实现两个复数相加。复数加
29、运算的原则是:复数的实部和虚部分别相加。(2) 实现两个复数相减。复数减运算的原则是:复数的实部和虚部分别相减。(3) 输出运算结果,判断是否正确。 程序如下:package complex;/* author Administrator*/public class Complexprivate double realPart;private double imagePart;public Complex() this.realPart = 0.0; this.imagePart = 0.0;public Complex(double real, double image)this.realP
30、art = real; this.imagePart = image;public void show() if (this.realPart = 0.0) && (this.imagePart = 0.0) System.out.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);else Sy
31、stem.out.println(this.realPart + "+" + this.imagePart + "i");public void add(Complex x, Complex y) this.realPart = x.realPart + y.realPart; this.imagePart = x.imagePart + y.imagePart;public void sub(Complex x, Complex y) this.realPart = x.realPart - y.realPart;this.imagePart = x.
32、imagePart - y.imagePart;public static void main(String arg) Complex c1 = new Complex(1, 2);Complex c2 = new Complex(2, 2);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();3、定义一个圆
33、类 circle,它有一个变量radius (半径)。从键盘输出数据,通过构造函数的 参数传递给radius,编程计算并输出圆的周长和面积。但是,你必须确保输入的数据不为负 数。程序如下:package Circle;import 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(" 半径
34、: ");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 = Intege
35、r.parseInt( banjing.getText() ); if(r<0) showStatus(" 半径不能为负数!请重新输入数据。");return false; repaint(); return true; class 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、定义一个日期类 date,确保具有如下功能:(1) 输出日期的格式具有如下几种: YYYY
36、 MM DDMM DD YYYY DD MM YYYYdate 类型的对象。(2) 采用重载构造函数,以上述日期格式数据为参数,创建 程序如下:package date;/* author Administrator*/ public class Date int YYYY; int MM; int DD; public 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 isV
37、alid() return ( this.YYYY > 0&& this.MM > 0 && this.DD > 0 && this.MM < 13 && this.DD < 32); public void showYMD() System.out.println(this.YYYY+" "+this.MM+" "+this.DD);public void showMDY() System.out.println(this.MM+" "+t
38、his.DD+" "+this.YYYY); public void showDMY() System.out.println(this.DD+" "+this.MM+" "+this.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() day
39、2.showYMD();day2.showMDY(); day2.showDMY();定义一个整形集合类integerSet。这种类型的对象可以存储10个20至80之间的整数,即它的内部有一个整形数组存储数据。编程: (1) 判断两个 integerSet 类对象 S1 和 S2 是否相等。提示:集合相等的前提是所有元素相(2) 输出两个集合对象的交集。(3) 输出两个集合对象的并集。(4) 将一个整形数据插入到一个集合对象中。(5) 从一个集合中删除某一个元素。/ 程序清单/* IntegerSet.java*/public class IntegerSet private boolean
40、isEmpty;/ thesize of the set private final int size = 10;/ how many elements inthe set private int current;/ set to store datas private 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; t
41、his.isEmpty = true;this.current = 0; for (int i= 0; i < size; i+)this.seti = 0;/ /clear IntegerSet public void Clear() this.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)
42、 / System.out.println("merge");/argments IntegerSet is emptyif(arg1.isEmpty && arg2.isEmpty) this.Clear(); return true;/ arg1 is empty if (arg1.isEmpty = true) this.isEmpty = false;this.current = arg2.current; for (int i = 0; i < this.size; i+) this.seti = arg2.seti;return true;
43、/ arg2 is empty if (arg2.isEmpty = true) this.isEmpty = false;this.current = arg1.current; for (int i = 0; i < this.size; i+) this.seti = arg1.seti; return true;/ arg1 equals qrg2 if (arg1.equal(arg2) = true) this.isEmpty = false; this.current = arg1.current; for (int i = 0; i < this.size; i+)
44、 this.seti = arg1.seti; return true;/ make a clone of thisIntegerSet tmp = new IntegerSet(); tmp.isEmpty = false;tmp.current = this.current; for (int i = 0; i < this.size; i+) tmp.seti = this.seti;/ fill this with arg1this.isEmpty = false;this.current = arg1.current; for (int i = 0; i < this.s
45、ize; i+) this.seti = arg1.seti;/ now merging!for (int i = 0; i < arg2.size; i+) /arg2.seti is not in this.Set if (this.isIn(arg2.seti) = false) if (this.current = 10) System.out.println("IntegerSet Over flow!"); / restore thisthis.isEmpty = false; this.current = tmp.current; for (int j
46、= 0; j < this.size; j+)this.setj = tmp.setj;returnfalse; this.InsertElement(arg2.seti);return true;/ Intersection two IntegerSet public boolean IntersectIntegerSet(IntegerSet arg1, IntegerSet arg2) / either of them is emptyif (arg1.isEmpty = true | arg2.isEmpty = true) return true;for (int i = 0;
47、 i < this.size; i+)if (arg2.seti != 0 && arg1.isIn(arg2.seti) = true) this.InsertElement(arg2.seti);return true;/ insert a element into a IntegerSet public boolean InsertElement(int arg) if (arg < 20 | arg > 80) System.out.println("The argument must >20 and <80"); re
48、turn false;/ empty setif (this.isEmpty = true) this.isEmpty = false; this.current+;this.set0 = arg; return true;/ the set is fullif(this.current = 10)return false;/ insert a element in the setif(this.isIn(arg) = true) System.out.println(arg + " is already in the IntegerSet!"); return false
49、;for (int i = 0; i < this.size; i+) if (this.seti = 0) this.seti = arg;this.current+; return true;/ never comes here! return false;/ delete a element in an IntegerSetpublicboolean DeleteElement(int arg) if (arg < 20 | arg > 80) System.out.println("The argument must >20 and <80&qu
50、ot;);returnfalse; / empty set if(this.isEmpty = true)/ empty InsegerSet return false;else if (this.isIn(arg) = true) int pos = size - 1;for(int i = 0; i < size; i+)if (this.seti = arg)pos = i;this.current-;/ empty?if (this.current = 0)this.isEmpty = true;/ set 0this.setpos = 0;return true; else S
51、ystem.out.println(arg + " is not in the IntegerSet!"); return false;/ valid public boolean valid() for (int i = 0; i < this.size; i+) if (this.seti = 0)continue;if (this.seti < 20 | this.seti > 80) return false;return true;/ equal public boolean equal(IntegerSet arg) for (int i =
52、0; i < size; i+)if(this.isIn(arg.seti) = false) return false; return true;/ is in?public boolean isIn(int arg) / empty IntergerSet if (this.isEmpty = true) return false;for (int i = 0; i < size; i+) if (arg = seti) return true; return false;/ print the IntegerSet public voidprint() for (int iS
53、ystem.out.print("( ");0; i < this.size; i+)System.out.print(this.seti + " ");System.out.print(")n");/ for test/ main public static void main(String args) I ntegerSet t1 = new IntegerSet();IntegerSet t2 = new IntegerSet();IntegerSet t3 = new IntegerSet();IntegerSet t4
54、 = new IntegerSet();t1.InsertElement(30);t1.InsertElement(33);t1.InsertElement(38);System.out.println("t1"); t1.print();t2.InsertElement(30);t2.InsertElement(32); t2.InsertElement(38);t2.InsertElement(43);t2.InsertElement(54);System.out.println("t2");t2.print();t3.MergeIntegerSet
55、s(t1, t2); t3.print(); t4.IntersectIntegerSet(t1, t2); t4.print();第 4 章习题 6写一个具有两个方法的基类base,并在第一方法内调用第二方法。然后写一个派生类derived,并覆盖父类中的第二个方法。产生一个derived类对象,将它向上类型转换(即转换为base类型),并调用第一个方法。验证并解释运行结果。/ 程序清单/* upCast.java*/class base public void method1() System.out.println("method1 is invoked in base!&qu
56、ot;); System.out.println("Call method2 !");method2();public void method2() System.out.println("method2 is invoked in base!"); class derived extends base public void method2()System.out.println("method2 is invoked in derived!"); public class upCast public static void main(String args) derived tmp = new d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六年级音乐上册教案
- 企业经营战略概论模拟试卷
- 2026 学龄前自闭症精细提升课件
- 会计从业资格(会计基础)模拟试卷157
- 会议管理制度
- 促销活动方案标准版本
- 企业加工合同
- 2026 学龄前自闭症入门干预认知课件
- 25-第十章 体温监测与显示实验
- 生物-2026届长春高三下三模
- 生字预习表语文预习卡
- 9.3 LLDPE物质安全资料表-2
- 2023年广东交通职业技术学院单招综合素质模拟试题及答案解析
- 郑渊洁童话之《五个苹果折腾地球》
- 大一下学期高等数学期中考试试卷及答案
- GB/T 27725-2011热塑性塑料蝶阀
- GB/T 1957-2006光滑极限量规技术条件
- 农业行政处罚程序和文书制作课件
- 工业机器人编程与实操期末试题
- 输电线路改造工程验收交底
- 气动冲床设备日常点检标准作业指导书
评论
0/150
提交评论