java程序设计实训教程参考答案.docx
- 文档编号:9280906
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:69
- 大小:67.88KB
java程序设计实训教程参考答案.docx
《java程序设计实训教程参考答案.docx》由会员分享,可在线阅读,更多相关《java程序设计实训教程参考答案.docx(69页珍藏版)》请在冰豆网上搜索。
java程序设计实训教程参考答案
参考答案
第1章
一、判断题
1.×2.×3.√4.√
5.√6.×7.×8.×
二、选择题
1.A、B、C、D、E
2.B3.C
4.A5.B
6.B7.E
三、填空题
1.面向对象的、解释的、结构中立的、可移植的、多线程的
2.一种与平台无关的二进制字节码(Bytecode)
3.可移植性
4.JVM
5.Applet、JavaApplication
6.动态
7.命令行
8.慢
9.大大提高Java字节码的执行效率
10.java、class
四、问答题
1.Java是一种简单的、面向对象的、分布式的、解释的、健壮的、安全的、结构中立的、可移植的、性能优异的、多线程的、动态的语言,它还支持垃圾自动回收。
Java语言的“动态性”和C++语言相比,Java语言允许在运行时动态地装入所需要的类,这些类既可以位于本地,也可以是从Internet上下载的,这一特性是C++等其他编译型语言所无法实现的。
2.
用户应用程序
JavaAPI
JVM
硬件平台
3.(见课本中设置Path一节)
五、编程题
1,2都是利用集成化开发环境实际动手操作。
第2章
一、判断题
1.√2.√3.√4.√
5.√6.×7.×8.√
二、选择题
1.A、B2.A、C、D
3.C4.C
5.A、D6.C
7.A8.A
三、填空题
1.0
2.–128~127
3.位运算、关系运算
4.32,64
5.保护变量
6.80
7.在前面加个‘0’,012
8.while
四、问答题
1.十进制常数记法就是我们日常生活用的整数的写法:
如365,0,-29456。
八进制常数记法只需要在前面加个‘0’即可。
如012表示八进制数12。
它转化为十进制的值是1×81+2×80=10,-012则和十进制数-10相等。
十六进制数记法是开头加上‘0x’或者‘0X’,如0x12表示十六进制数18。
-0X10表示十进制数-16。
2.在Java程序中,数组具有下列特点:
(1)同一数组中的所有元素均属于相同的数据类型,该数据类型称为数组的基本类型。
(2)数组一经创建,其元素个数就保持不变,这个长度称为数组的长度。
(3)数组中的每一个元素均能借助于下标(Index)来访问。
(4)数组元素的类型既可以是基本类型(如int,float等),也可以是复合类型(如String,Object,甚至数组类型),从而可以产生对象数组、多维数组。
3.对于一维数组,可以采用如下方法进行初始化:
方法一:
遍历数组元素进行初始化;例:
int[]demoArray=newint[10];
for(inti=0;i demoArray[i]=someValue;//给demoArray[i]赋予某个值 方法二: 采用数组初始化列表进行数组创建和初始化;例: boolean[]demoArray={false,true,true,false,true}; int[]intArray={0,1,2,3}; 其中被“{”和“}”括起来的数值列表称为初始化列表。 4.参考下表: 五、编程题 仅供参考: publicclassStudent{ publicfinalstaticintNUM_OF_SCORE=3; privateStringname; protectedint[]scores; publicStudent(){ name=""; scores=newint[NUM_OF_SCORE]; } publicvoidsetName(StringnewName){ name=newName; } publicStringgetName(){ returnname; } publicvoidsetScore(intscoreNum,intscore){ if(scoreNum<0||scoreNum>=NUM_OF_SCORE)return; if(score<0||score>100)return; scores[scoreNum]=score; } publicintgetScore(intscoreNum){ if(scoreNum<0||scoreNum>=NUM_OF_SCORE)return-1; returnscores[scoreNum]; } publicintgetAverageScore(){ inttotal=0; for(inti=0;i return(int)(total/NUM_OF_SCORE); } } publicclassGraduateextendsStudent{ publicStringcomputeGrade(){ inttotal=0; for(inti=0;i if(total/NUM_OF_SCORE>80)return"PASS"; elsereturn"NOPASS"; } } publicclassStudentDemo{ publicstaticvoidmain(String[]args){ Graduatestudent1=newGraduate(); student1.setName("zhang3"); student1.setScore(0,78); student1.setScore(1,92); student1.setScore(2,72); System.out.println("Thegradeofgraduatestudent"+student1.getName()+"is"+puteGrade()); } } 第3章 一、判断题 1.√2.×3.×4.√ 5.×6.×7.×8.√ 二、选择题 1.A、B2.B、C、D 3.A、B4.D 5.C6.C 7.A8.A 三、填空题 1.顺序结构、选择结构、循环结构 2.for语句、while语句和do-while语句 3.if语句、switch语句 四问答题 1.任何复杂的程序均可由三种控制结构表示,这三种结构是: 顺序结构、选择结构和循环结构。 2.如果对于有多分支选择结构,使用switch语句更好。 因为如果使用if语句来表示,程序会显得很臃肿,而且随着分支的增多,可读性也就越来越差。 但是如果使用switch语句,流程容易看懂,而且程序也不会显得臃肿。 3.switch语句的用法: switch语法的一般格式如下: switch(表达式){ case1取值1: 语句块1; break; case2取值2: 语句块2; break; … caseN取值N: 语句块N; break; default: 语句块N+1; break; } (1)case子句中的值“取值i”必须是常量,而且所有case子句中的值应该是互不相同。 (2)case分支中包括多个执行语句时,可以不用大括号{}括起。 (3)表达式可以返回任意简单类型的值,多分支语句把表达式返回的值与每个case子句的值进行比较。 如果匹配成功,则执行该case子句后的语句块。 (4)switch语句的功能可以用if-else来实现,但在某些情况下,使用switch语句更简练,可读性强,而且程序的执行效率提高。 (5)break语句用来执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。 因为case子句只是起到一个标号的作用,用来查找匹配的入口并从此处开始执行,对后面的case子句不再进行匹配,而是直接执行其后的语句序列,因此应该在每个case分支后用break来终止后面的case分支语句的执行。 在一些特殊的情况下,多个不同的case值要执行一组相同的操作,这时可以不用break。 (6)default子句是任选的。 当表达式的值与任一case子句中的值都不匹配时,程序执行default后面的语句;如果表达式的值与任一case子句中的值都不匹配且没有default子句,则程序不作任何操作,而是直接跳出switch语句块。 4.for语句的用法: for语句的一般格式为: for(初始化表达式;终止表达式;迭代表达式) { 循环体; } (1)控制for循环的变量经常只是用于该循环,而不用在程序的其他地方。 在这种情况下,可以在循环的初始化部分中声明变量。 (2)for语句通常用来执行循环次数确定的情况,也可以根据循环结束条件执行循环次数不确定的情况。 (3)for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。 完成一次循环后,重新判断终止条件。 (4)初始化、终止以及迭代部分都可以为空语句(分号不能省),三者均为空的时候,相当于一个无限循环,如果循环体中不包括break等语句,也没有可捕获的异常,那么将成为一个死循环,这在一般的程序设计中是应该能避免的。 (5)可以在for语句的初始化部分声明一个变量,它的作用域为整个for语句。 (6)在初始化部分和迭代部分可以使用逗号语句来进行多个操作。 逗号语句是用逗号分隔的语句序列。 5.do-while循环语句首先执行循环体,然后计算终止条件,若结果为true,则循环执行大括号中的语句,直到布尔表达式的结果为false。 与while语句不同的是,do-while语句的循环体至少执行一次,这是“直到型”循环的特点。 而while语句的循环体的执行要先判断条件表达式。 五编程题 1.程序如下: /** *Writeadescriptionofclassvectorhere. * *@author(zhys) *@version(aversionnumberoradate) */ importjava.lang.Exception; importjava.io.*; classVector{ privateintdimension;//向量的维数 privatedoubleelement[]; Vector(){ dimension=3; element=newdouble[3]; for(inti=0;i element[i]=1; } } Vector(intdimension){ this.dimension=dimension; element=newdouble[dimension]; for(inti=0;i element[i]=0; } } voidinitial(doubleelement[]){//向量的初始化 if(element.length! =this.element.length){ System.out.println("所输入的数组的元素个数与向量的维数不匹配"); System.exit(0); } for(inti=0;i this.element[i]=element[i]; } } intgetDimension(){//向量的维数 returndimension; } //向量的加法运算 staticVectoraddition(VectorA,VectorB){ if(A.getDimension()! =B.getDimension()){ System.out.println("所进行运算的向量的维数不匹配"); System.exit(0); } Vectorsum=newVector(A.getDimension()); for(inti=0;i sum.element[i]=A.element[i]+B.element[i]; } returnsum; } //向量的减法运算 staticVectorsubtration(VectorA,VectorB){ if(A.getDimension()! =B.getDimension()){ System.out.println("所进行运算的向量的维数不匹配"); System.exit(0); } Vectorsub=newVector(A.getDimension()); for(inti=0;i sub.element[i]=A.element[i]-B.element[i]; } returnsub; } //向量的点积运算 staticdoubledot_metrix(VectorA,VectorB){ if(A.getDimension()! =B.getDimension()){ System.out.println("所进行运算的向量的维数不匹配"); System.exit(0); } doubleresult=0; for(inti=0;i result+=A.element[i]*B.element[i]; } returnresult; } //向量的叉乘运算 staticVectorforked_metrix(VectorA,VectorB){ if(A.getDimension()! =B.getDimension()){ System.out.println("所进行运算的向量的维数不匹配"); System.exit(0); } if(A.getDimension()! =3){ System.out.println("本程序只处理3维向量间的叉乘运算"); System.exit(0); } Vectorresult=newVector(3); result.element[0]=A.element[1]*B.element[2]-A.element[2]*B.element[1]; result.element[1]=A.element[2]*B.element[0]-A.element[0]*B.element[2]; result.element[2]=A.element[0]*B.element[1]-A.element[1]*B.element[0]; returnresult; } //向量的模运算 doublemodel(){ doubleresult=0; for(inti=0;i result+=element[i]*element[i]; } result=Math.sqrt(result); returnresult; } //向量的模输出 voidoutput(){ System.out.print("<\t"); for(inti=0;i System.out.print(element[i]+",\t"); } System.out.print(element[dimension-1]+"\t"); System.out.print(">\t"); System.out.println(); } } classVectorDemo{ publicstaticvoidmain(Stringargs[]){ System.out.println("矢量运算"); VectorM=newVector(),N=newVector(); doublemodel=M.model(); Vectorsum_vector=Vector.addition(M,N); Vectorsub_vector=Vector.subtration(M,N); doubledot_metrix=Vector.dot_metrix(M,N); Vectorforked_metrix=Vector.forked_metrix(M,N); System.out.println("\n矢量M"); M.output(); System.out.println("\n矢量N"); N.output(); System.out.println("\n矢量M的模"); System.out.println(model); System.out.println("\n矢量M和N的和"); sum_vector.output(); System.out.println("\n矢量M和N的差"); sub_vector.output(); System.out.println("\n矢量M和N的点积"); System.out.println(dot_metrix); System.out.println("\n矢量M和N的叉乘"); forked_metrix.output(); System.out.println("\n"); } } 2.程序如下: /** *Writeadescriptionofclassstephere. * *@author(zhys) *@version(aversionnumberoradate) */ publicclassjava_{ publicstaticvoidmain(String[]args){ intcount=0;//初始化台阶数为0 for(;;){ count++; if(count%2! =1)//以每步两级最后剩一级 continue; if(count%3! =2)//每步走三级则剩两级 continue; if(count%4! =3)//每步走四级则剩三级 continue; if(count%5! =4)//每步走五级则剩四级 continue; if(count%6! =5)//每步走六级则剩五级 continue; if(count%7! =0)//每步走七级则刚好不剩 continue; break; } System.out.println("thenumberofthestepsis"+count); } } 第4章 一、判断题 1.√2.×3.√4.× 5.×6.√7.×8.× 9.√10.×11.×12.√ 13.×14.×15.√16.× 17.√18.×19.√20.× 21.×22.√ 二、选择题 1.A2.B、D 3.A、B4.A 5.A、B、C、D6.A、B 7.B、C8.A和D 9.A10.B和C 11.B12.A 13.A14.B 15.B16.B、C 17.D18.B 19.B20.A 三、填空题 1.抽象数据类型 2.多态、动态 3.子程序包、编译单元、程序包 4.所有基本数据类型、void 5.按值调用、按引用调用 6.声明、该块 7.for语句中的三部分 8.属性、约束 9.属性、行为 10.受保护(protected)、包级、包级 11.局部变量、this 12.数据成员、方法成员 13.类、共享、类、实例 14.“收尾”、初始化 15.封装、包装在数据外面的合法的操作 16.多个名字、参数列表 17.编译时、运行时、运行时 18.运行时、继承、动态绑定 19.单继承 20.抽象类(abstractclass)、继承 21.返回值类型、参数类型、数据成员 22.数据成员、成员方法 23.编译、编译单元、子程序包、编译单元 24.类、公有、公有 四、问答题 1.问题空间: 是需要用计算机去解决的问题,这些问题是存在于现实生活中的。 比如机场管理、个人信用卡关系、银行账户管理。 解空间: 所谓解空间就是对问题空间中有待解决的问题进行建模的空间。 这里讨论的解空间将以计算机为载体,要做的工作就是如何将现实中将要解决的问题抽象成计算机可以理解并表示的单元,这个单元即为所谓的对象。 所以将现实抽象成对象是个很重要的过程。 2.多态就是指同一个符号或名字在不同情况下的不同解释。 多态是个复杂的概念,现在需要了解的是,多态使得程序是动态的,而不是在编译阶段就可以完全确定下来的。 在运行的时候,程序会寻找最合适的服务去提供,这是面向对象程序设计语言的一大特点。 3.接口是和类一样的一种抽象数据类型,接口中只给出公有的静态常量数据成员,不能定义其他的数据成员,只能定义公有的抽象方法,不能定义其他形式的成员方法。 4.常用的有java.lang、java.applet、java.awt、java.io、java
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 程序设计 教程 参考答案