




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章Java概述一、单项选择题1.若Java程序中公有类的名字是OneApp,则保存该程序的文件名是 【】A.Oneapp.java B.Oneapp.class C.OneApp.java D.OneApp.class答案:C。保存Java源程序的文件名要与公有类的名字一致,包括大小写也要完全相同,且文件名的后缀是.java。一个源程序文件中最多只能有一个公有类。2.Java程序OneApp.java编译后的类文件名是 【】A.Oneapp.java B.Oneapp.class C.OneApp.java D.OneApp.class答案:D。Java源程序经编译后,生成的类文件的名字与原来的名字相同,后缀是.class。3.Java语言的解释器是 【】A.JVM B.javac.exe C.java.exe D.JDK答案:C。Java语言的编译器是javac.exe,解释器是java.exe。JVM是Java虚拟机,JDK是软件开发工具包。4.下列选项中,不属于Java语言特点的是 【】A.类型定义 B.解释执行 C.与平台无关 D.多线程答案:A。C语言中使用typedef进行类型定义,在Java中已经去掉了。另外三个选项都是Java的特点。5.下列关于Java程序的叙述中,正确的是 【】A.Java程序必须配合HTML文件才能执行B.JVM解释执行Java源程序C.Java程序中可以使用指针D.Java程序生成的字节码文件与平台无关答案:D。Java程序在经过编译且正确后,可以使用Java命令直接执行,配合HTML文件才能执行的是Applet。解释执行的不是Java源程序,是源程序经编译后生成的字节码文件。Java中已经没有指针这个语法成分了。6.下列选项中,不是Java程序主函数main()前面的修饰符的是 【】A.class B.static C.void D.public答案:A。main()函数前面的修饰符通常是:publicstaticvoid,不包括class。class关键字用在类定义的第一行中,即类头中。main()不是类,是类中的函数。main()前三个修饰符的次序可稍做变化,参见教材第一章第三节中的内容。7.下列概念中,属于面向对象语言重要概念和机制之一的是 【】A.方法调用 B.模块 C.继承 D.结构化答案:C。方法调用、模块、结构化都不仅仅是面向对象语言中的概念,在面向过程的语言中也有这些概念,并且它们并不体现面向对象的特点。而继承概念在面向过程的语言中是没有的,这是面向对象语言的特点。二、填空题1.假设Java程序保存在文件MyTest.java中,则编译这个程序的命令是______。答案:javacMyTest.java。javac是Java的编译器,javac的后面是要编译的源文件名,而且是带后缀名的全名。2.类Testll经Java编译程序编译后,产生的文件是______。答案:字节码文件Testll.class。源文件中的每个类编译后都生成一个类文件。文件名是类名,后缀是.class。3.JVM的全称是______。答案:Java虚拟机,英文是JavaVirtualMachine。4.Java程序主函数main()前面的修饰符是______。答案:publicstaticvoid。这三个关键字的次序可以略有不同。5.Java源文件经编译后生成的二进制文件称为______。答案:字节码文件。字节码文件是类文件。参见教材第一章第一节中的内容。6.编写好的Java源程序在计算机上运行需依次经历两个阶段,分别是______和解释执行。答案:编译。参见教材第一章第三节中的内容。7.公有类MyFirstTest所在的文件经Java编译程序编译后,产生的文件是______。答案:MyFirstTest.class。三、简答题1.请简要叙述Java语言的特点。解答:Java是通用的、面向对象的语言,并具有分布性、安全性和健壮性等特点。具体表现在以下方面。(1)语法简单,功能强大Java语言的语法非常像C++,同时去掉了C++中不常用且容易出错的地方,Java解释器只占用很少的内存,适合在各种类型的机器上运行。(2)与平台无关Java语言一个非常重要的特点就是与平台的无关性,Java虚拟机(JavaVirtualMachine,简称JVM)是实现这一特点的关键。Java编译器将Java程序编译成虚拟机能够识别的字节码(bytecode)。字节码就是虚拟机的机器指令,它与平台无关,有统一的格式,不依赖于具体的硬件环境,只运行在JVM上。在任何安装Java运行时环境的系统上,都可以执行这些代码。JVM在执行字节码文件时,把字节码解释成具体平台上的机器指令执行。所以Java程序在不同的平台上运行时,不需要重新编译。Java语言规定了统一的数据类型,有严格的语法定义,在任何平台上,同一种数据类型是一致的,为Java程序跨平台的无缝移植提供了很大的便利。(3)解释编译两种运行方式Java程序可以经编译器得到字节码。在现在的Java版本中又加入了编译功能(即justintime编译器,简称JIT编译器),JIT编译器将字节码转换成本机的机器代码,然后可以以较高速度执行,使得执行效率大幅度提高。(4)多线程Java内置了语言级多线程功能,提供现成的类Thread,只要继承这个类就可以编写多线程的程序,可使用户程序并行执行。(5)动态执行兼有丰富的API文档及类库Java执行代码是在运行时动态载入的,程序可以自动进行版本升级。在网络环境下,可用于瘦客户机架构,减少维护工作。Java为用户提供了详尽的API文档说明,Java开发工具包中的类库包罗万象,类库与时俱进,随时更新,增加的新方法和其他实例,不会影响到原有程序的执行。2.为什么说Java语言是平台无关的?解答:一般的高级语言程序在不同的平台上运行时,需要针对本计算机机器指令集而编译成不同的目标文件。而JVM屏蔽了具体平台的差异。Java编译器将Java程序编译成虚拟机能够识别的字节码(bytecode)。字节码就是虚拟机的机器指令,它与平台无关,有统一的格式,不依赖于具体的硬件环境,只运行在JVM上。在任何安装Java运行时环境的系统上,都可以执行这些代码。JVM在执行字节码文件时,把字节码解释成具体平台上的机器指令执行。所以Java程序在不同的平台上运行时,不需要重新编译。Java语言规定了统一的数据类型,有严格的语法定义,在任何平台上,同一种数据类型是一致的,为Java程序跨平台的无缝移植提供了很大的便利。3.什么是Java虚拟机?解答:Java虚拟机(JavaVirtualMachine,简称JVM)是一台虚拟计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。不同的操作系统有不同的虚拟机,它类似于一个小巧而高效的CPU,是实现Java语言平台无关性的保证。【延伸阅读】Java虚拟机规范中给出了JVM的定义:JVM是在一台真正的机器上用软件方式实现的一台假想机。JVM使用的代码存储在.class文件中。JVM的某些指令很像真正的CPU指令,包括算术运算、流控制和数组元素访问等。JVM的具体实现包括:指令集(等价于CPU的指令集)、寄存器组、类文件格式、栈、垃圾收集堆、内存区。Java虚拟机规范提供了编译所有Java代码的硬件平台。因为编译是针对假想机的,所以该规范能让Java程序独立于平台。它适用于每个具体的硬件平台,以保证能运行为JVM编译的代码。JVM不但可以用软件实现,而且可以用硬件实现。JVM的代码格式为压缩的字节码,因而效率较高。由JVM字节码表示的程序必须保持原来的类型规定。Java主要的类型检查是在编译时由字节码校验器完成的。Java的任何解释器必须能执行符合JVM定义的类文件格式的任何类文件。Java虚拟机规范对运行时数据区域的划分及字节码的优化并不做严格的限制,它们的实现依平台的不同而有所不同。JVM的实现叫做Java运行时系统或运行时环境(RuntimeEnvironment),简称为运行时。Java运行时必须遵从Java虚拟机规范,这样,Java编译器生成的类文件才可被所有Java运行时系统下载。嵌入了Java运行时系统的应用程序,就可以执行Java程序了。目前有许多操作系统和浏览器都嵌入了Java运行时环境。4.查阅API文档,列出JavaAPI文档中4个包名。解答:从JavaAPI文档中选出了4个比较常用的包:java.awt、java.lang、java.util、javax.swing。编程时会用到这4个包,后续章节中也会提及。5.查阅API文档,列出java.lang中4个类。解答:从java.lang包中选出了常用的4个类:Math、String、System、Thread。编程时会用到这4个类,后续章节中也会提及。6.查阅API文档,列出java.awt.event中4个接口。解答:java.awt.event是处理事件的包,选出4个常用接口:ItemListener、KeyListener、MouseListener、MouseListener。讲授事件一节时会提及。7.查阅API文档,列出java.lang.Math类中4个常用方法。解答:java.lang.Math类中包含了许多常用函数,选出4个常用方法如下。staticintabs(inta):返回int型值a的绝对值。staticdoublemax(doublea,doubleb):返回两个double型值a、b中的较大者。staticdoublepow(doublea,doubleb):返回a的b次幂的值。staticdoublerandom():返回大于等于0.0且小于1.0的一个正的double型值。8.查阅API文档,列出java.lang.String类中4个常用方法。解答:java.lang.String是处理字符串的类,选出4个常用方法如下。charcharAt(intindex):返回由index指定的索引处的字符。Stringconcat(Stringstr):将指定字符串str添加在本串的最后。booleanequals(ObjectanObject):将本串与指定对象anObject进行比较。intindexOf(Stringstr):返回指定子串str在本串中第一次出现的索引。9.查阅API文档,列出java.util.Random类中2个常用方法。解答:java.util.Random类是用来生成伪随机数的类。选出2个常用方法如下。doublenextDouble():根据本随机数生成器,从0.0到1.0之间、均匀分布的double型伪随机数序列中,返回下一个伪随机数。intnextInt(intbound):根据本随机数生成器,从0(含)到指定值bound(不含)之间、均匀分布的int型伪随机数序列中,返回一个伪随机数。10.查阅API文档,列出java.awt.Color类中2个构造方法。解答:java.awt.Color是用来处理颜色的类。选出2个常用方法如下。Color(floatr,floatg,floatb):使用指定的范围在(0.0-1.0)间的红色、绿色和蓝色值r,g,b,创建一个不透明的sRGB颜色。Color(intr,intg,intb):使用指定的范围在(0-255)间的红色、绿色和蓝色值r,g,b,创建一个不透明的sRGB颜色。
第二章数据和表达式一、单项选择题1.以下选项中,能作为Java语言关键字的字符串的是 【】A.define B.type C.include D.switch答案:D。define可以进行宏定义,是C语言中预处理命令中的一种,在Java中已经丢弃。C语言中使用include语句包含.h文件,Java中使用的是import语句。switch用在多重分支语句中。参看教材第三章第二节的内容。2.以下标识符中,不是Java语言关键字的是 【】A.wait B.new C.long D.switch答案:A。使用new调用类的构造方法来创建对象。long表示长整型类型。switch是多分支语句,其用法参见教材第三章第三节的内容。3.以下字符串中,能作为Java程序中的标识符的是 【】A.Val B.OK# C.2Val D.catch答案:A。OK#中含有特殊字符#。2Val是以数字2开头。catch是关键字。它们都不能用作标识符。4.以下字符串中,能作为Java程序变量名的是 【】A.default B.final C.long D.CASE答案:D。变量名必须是一个合法的标识符,CASE是全大写的,全小写的case是关键字,两者是不相同的。default用在多重分支语句中,final用在异常处理语句中。long表示长整型类型。5.下列选项中,能作为Java语言注释的是 【】A.从/*开始直到行尾 B.从//开始直到行尾C.从/*开始直到**结束 D.从/**开始直到行尾答案:B。Java程序中的注释,如果是以/*开头的,则必须以*/结尾。所以选项A不正确,它没有结束标记。类似的,选项D也是没有结束标记*/。选项C的结束标记符号不正确。6.标识符MAIN不能用作 【】A.类名 B.接口名 C.程序名 D.主函数名答案:D。Java程序中,主函数名必须是main,且全小写。MAIN是正确的标识符,可以用作类名、接口名及程序名。7.不属于Java基本数据类型的是 【】A.记录型 B.整型 C.浮点型 D.布尔型答案:A。记录型是C语言中由程序员通过typedef定义的,Java语言中除了整型、浮点型、布尔型等基本数据类型外,程序员仅能定义类类型(由class标识)和接口(由interface标识)。8.以下数据类型转换中,必须进行强制类型转换的是 【】A.int→char B.short→long C.float→double D.byte→int答案:A。int比char的位数多,所以不能进行自动类型转换,必须进行强制类型转换。选项B、C和D都是由位数少的类型转换为位数多的类型,可以自动完成。9.以下数据类型转换中,必须进行强制类型转换的是 【】A.long→byte B.short→float C.int→long D.byte→short答案:A。10.以下选项中,不是转义字符的是 【】A.\u061 B.\t C.\141 D.\u0061答案:A。选项B是水平制表符,选项C和D表示的都是字符a。'\'后面是3位八进制数。'\u'后面必须是4位十六进制数。二、填空题1.用来声明Java布尔变量(逻辑变量)的保留字是______。答案:boolean。2.方法内定义的变量称作______。答案:自动变量,或是局部变量/临时变量/栈变量。自动变量需要由程序员为其初始化。3.Java逻辑与和逻辑或运算符有一个特殊的功能,当左侧操作数能决定表达式的值时,跳过右侧操作数的运算。这个功能是______。答案:短路操作。4.一个byte类型的操作数和一个int类型的操作数进行运算,结果的类型是______。答案:int。不同类型的量进行混合运算时,要先转换为同一种类型,然后再进行运算。通常是位数少的类型转换为位数多的类型。byte类型的操作数要先转换为int类型的,进行运算后的类型也为int类型的。5.当不同数值类型的数据进行运算时,表示范围较小的类型转换为表示范围较大的类型的转换称作______。答案:自动类型转换。对于整数类型,位数少则表示范围较小,位数多则表示范围较大。对于浮点数类型也是如此。而int型是32位,long型是64位,相应地,float是32位,double是64位。它们之间,整数的表示范围小于浮点数的表示范围。整型转为浮点型也是自动进行的。6.当不同数值类型的数据进行运算时,表示范围较大的类型转换为表示范围较小的类型的转换称作______。答案:强制类型转换。不符合自动类型转换规则的数据进行混合运算时,如果需要进行类型转换,必须标注目标类型,进行强制类型转换。7.表达式“45&20”的十进制值是______。答案:4。45的二进制表示为101101,20的二进制表示为10100,两个数进行位与运算,即对应位进行与运算,两个位都为1时结果为1,其余为0。101101&10100=000100,即是4。8.表达式1==1>>>32;的值是______。答案:true。移位运算符>>>的优先级高于比较运算符==,所以先计算1>>>32。对于int型量,移位操作的位数对32取模,即1>>>32不移位,结果仍是1。这个结果再与1进行比较,相等,所以结果是true。三、简答题1.Java支持的数据类型有哪些?列出Java语言中所有的基本数据类型。解答:Java支持的数据类型分为两大类,一类是基本数据类型,另一类是复合数据类型。基本数据类型共有8种,分为4小类,分别是逻辑型、字符型、整型和浮点型。复合数据类型包括数组、类和接口。逻辑类型或称布尔类型使用boolean表示,字符类型使用char表示,整数类型共有4种,分别是:byte(1字节)、short(2字节)、int(4字节)及long(8字节)。浮点数共有两种类型,分别是:单精度浮点数float(4字节)及双精度浮点数double(8字节)。【延伸阅读】Java中定义的各种数据类型占用固定的内存长度,与当前系统的软硬件环境无关。例如,int型整数总是32位的,而不管是在Linux、Windows还是Android环境下。这个特点体现了Java的平台无关性。另外Java还为每种数据类型都预定义了一个默认值,以保证在任何情况下对变量的取值都是正确的。这个特点体现了Java的安全稳定性。一个char表示一个Unicode字符。每一个Unicode字符可用'\uxxxx'表示,其中xxxx是任意的一个16位无符号整数,即4位十六进制数,范围为0~65535。char类型的常量值必须用一对单引号('')括起来。例如,'B'的Unicode值为'\u0042'。byte表示的数的范围为-128~127,short表示的数的范围为-32768~32767,int表示的数的范围为-231~231-1,long表示的数的范围为-263~263-1。整型常量可用十进制、八进制或十六进制形式表示,以1~9开头的数为十进制数,以0开头的数为八进制数,以0x开头的数为十六进制数。Java中4种整型量都是有符号的。float表示的数的范围约为1.4e-45~3.4e+38,double表示的数的范围约为4.9e-324~1.8e+308。2.Java中常用的运算符有哪几类?每类列出几个,并说明其含义。解答:运算符有算术运算符、关系运算符、逻辑运算符、位运算符,每类列出3个。此外还有几个特殊的运算符。如表2-1所示。表2-1部分运算符及其含义类别运算符运算符含义算术运算符+加法-减法++加1关系运算符<小于>=大于等于==等于逻辑运算符&&逻辑与||逻辑或!逻辑非位运算符&位与^位异或<<左移特殊运算符new对象实例+=字符串连接赋值?:条件运算符|=或赋值3.Java中运算符优先级是如何定义的?举例说明。解答:Java语言将全部运算符按从高到低划分了15个等级,每个等级中包含少则一个多则十余个的运算符。比如,数组下标运算符,后缀形式的加1和减1运算符具有最高优先级,扩展赋值运算符具有最低优先级,乘法、除法运算符的优先级高于加法、减法运算符的优先级等。在对一个表达式进行计算时,如果表达式中含有多个运算符,则要按运算符的优先顺序从高向低依次进行,同级运算符则根据结合律从左向右或从右向左进行。括号可以改变运算次序。各运算符的优先次序见教材的表2-8。4.从下列字符串中选出正确的Java关键字:abstract,bit,boolean,case,character,comment,double,else,end,endif,extend,false,final,finally,float,for,generic,goto,if,implements,import,inner,instanceof,interface,line,long,loop,native,new,null,old,oper,outer,package,print,private,rest,return,short,static,super,switch,synchronized,this,throw,throws,transient,var,void,volatile,where,write解答:Java关键字包括:abstract,boolean,case,double,else,false,final,finally,float,for,generic,goto,if,implements,import,inner,instanceof,interface,long,native,new,null,outer,package,private,rest,return,short,static,super,switch,synchronized,this,throw,throws,transient,void,volatile。其余的都不是Java关键字:bit,character,comment,end,endif,extend,line,loop,old,oper,print,var,where,write。5.请叙述标识符的定义规则。指出下面给出的字符串中,哪些不能用作标识符,并说明原因:here,there,this,that,it,2to1,标识符,字符串,名字解答:在Java中,定义标识符的规则主要有:(1)标识符是以字母、下划线(_)或美元符($)开头,由字母、数字、下划线(_)或美元符($)组成的字符串。仅能含有这些字符。(2)标识符区分大小写。(3)标识符的长度没有限制。(4)注释和空白不能插在一个标识符之中。(5)Java有许多关键字,它们都有各自的特殊意义和用法,不得用它们作为标识符。题目所给的标识符中,不正确的有this和2to1,其中this是Java中的关键字,不能用作标识符,2to1是以数字开头的字符串,也不符合Java对标识符的规定。其他的都是正确的标识符。汉字亦是字母。6.转义字符是什么?列举几个转义字符。解答:有些字符在语言中有特殊的含义,表示它们时应使用转义字符。转义字符就是使用特殊格式表示的有特殊含义的字符。表2-2中列出了几个转义字符。表2-2几个转义字符及其含义转义字符含义\b退格键(Backspace)\n换行符\r回车符\t水平制表符(Tab)\\反斜杠\\'单引号'\"双引号"7.Java中的类型转换是指什么?解答:每个数据都与特定的类型相关,运算时,允许整型、浮点型、字符型数据进行混合运算。不同类型的变量数据要先转换为同一种类型,然后再进行运算。Java是一种强类型语言,不支持变量数据间的自动任意转换,有时必须显式地进行变量类型的转换。如果同为整数类型,或同为浮点数类型,那么,转换的原则是位数少的类型可以转换为位数多的类型。对于不同类的数值类型,转换的原则是整数类型可以转换为浮点数类型。有一个特例是字符类型,它可以转换为位数更长的整数类型或浮点数类型。上述这几种转换称作自动类型转换,也就是表达式中不需要显式地指明相关的类型信息。凡是不符合自动类型转换规则的类型转换,都必须标注出目标类型的名字,这属于强制类型转换。8.>>>与>>有什么区别?举例说明。解答:Java提供两种右移运算符。逻辑右移运算符(也称无符号右移运算符)>>>只对位进行操作,而没有算术含义,它用0填充移位后左侧的空位。运算符“>>”执行算术右移,它使用最高位填充移位后左侧的空位。右移的结果为:每移一位,第一个操作数被2整除一次,移动的次数由第二个操作数确定。比如,-256>>4得到-16,-256>>>4得到268435440,0xa2>>>2得到40。9.下列表达式中,找出每个操作符的计算顺序,在操作符下按次序标上相应的数字。a+b+c-da+b/c-da+b/c*d(a+b)+c-d(a+b)+(c-d)%e(a+b)+c-d%e(a+b)%e%c-d解答:在Java中,在对一个表达式进行计算时,如果表达式中含有多个运算符,则要按运算符的优先顺序从高向低依次进行,同级运算符则按结合律进行。括号可以改变运算次序。各表达式中运算符的计算顺序如下所示。a+b+c-d123a+b/c-d213a+b/c*d312(a+b)+c-d123(a+b)+(c-d)%e1423(a+b)+c-d%e1243(a+b)%e%c-d123410.什么是变量声明?解答:Java中,通过在对象类型后紧跟一个变量名来对变量进行声明。例如;intnum。变量声明也叫变量说明。【延伸阅读】根据变量是基本数据类型还是复合数据类型,其声明的效果也分两种结果。对于简单类型的变量,声明即为创建,也就是在内存中分配了适当的存储空间。完成初始化后可以直接使用。而对于复合数据类型变量,声明只是定义了对所声明变量的一个引用,这个引用还没有指向任何可用的存储单元,还需要通过new运算符来实例化该对象,也就是分配内存,并让引用指向这个存储区的首地址。四、程序分析题阅读下列程序片段,请写出程序片段的执行结果。intb1=1;intb2=1;b1<<=31;b2<<=31;b1>>=31;b1>>=1;b2>>>=31;b2>>>=1;解答:>>>与>>都是右移运算符,它们的不同之处在于使用不同位填充移位后左侧的空白。>>运算使用符号位填充左侧的空位,而>>>使用零填充空位。也就是说,>>运算保持操作数的符号不变,而>>>运算则可能改变原数的符号。分析上面的程序段。初始时,b1和b2都是int型的变量,占32位,初值均为1,两个变量分别向左移动31位,两个值变为:10000000000000000000000000000000,在计算机内部,这个值是:-2147483648。下一步,b1再向右移动31位,这里使用的是>>运算符。b1是一个负数,其最高位为1,右移时使用1填充左侧的空位。右移31位后b1的值为:11111111111111111111111111111111,在计算机内部,这个值是:-1。b1继续向右移动1位,此时值不变,仍为-1。实际上,此后使用>>运算符将b1向右移动任何位,它的值都不会再变了。使用>>>运算符则有所不同。>>>使用零填充左侧的空位,所以将b2向右移动31位后,它的值为:00000000000000000000000000000001,即b2的值为1。再向右移动1位,则它的值为:00000000000000000000000000000000,即b2的值为0。
第三章流程控制语句一、单项选择题1.以下选项中,不属于Java语句的是 【】A.for语句 B.switch语句 C.while语句 D.include语句答案:D。include语句是C语言中用来包含头文件的语句。Java语言中引入包的语句是import语句。2.以下选项中,不属于Java语句的是 【】A.break语句 B.continue语句 C.goto语句 D.for语句答案:C。goto语句使得程序的执行流程混乱,程序的易读性降低,Java语言中已经不再使用该语句。3.设i的初值为6,则执行完j=i--;后,i和j的值分别为 【】A.6,6 B.6,5 C.5,6 D.5,5答案:C。给j赋值时,使用的是i原来的值,即6。赋值后,i的值减1,为5。4.在一个if语句中,下列选项中正确的是 【】A.if的个数一定多于else的个数 B.if的个数一定与else的个数相等C.if的个数一定少于else的个数 D.if的个数可能多于else的个数答案:D。if语句是允许嵌套的,而且else语句是可选的。当在一个if语句中又嵌套了if语句时,就会出现多个if的情况。而因为else是可选的,所以它的个数少于等于if的个数。5.switch语句中,大多数情况下,每个case块中最后一条语句应该是 【】A.default B.continue C.break D.goto答案:C。按照switch语句的语法格式,每个case块中最后一条语句是break语句。表示针对这种情形的处理已经完成,程序的控制流转至switch之后的语句继续执行。6.switch语句中,可以不写break语句的case块是 【】A.第一个块 B.最后一个块 C.任意一个块 D.哪个块都不行答案:B。实际上,从语法角度看,哪个case块都可以不写break语句,但这可能不是原本想要的语义。没有break语句,控制流会一直执行下去,起不到多分支的作用。通常,每个case块都要写break语句,保证执行了该块中的语句后控制流转到switch语句之后继续执行。如果进入最后一个case块执行,则写不写break语句,控制流都转到switch语句之后,所以这个break语句是可以省略的。7.switch语句中,如果没有相匹配的条件,则执行 【】A.任一个case后的语句 B.default之后的语句C.所有case后的语句 D.循环执行switch语句答案:B。switch语句中,如果没能进入任何一个case块执行,则进入default块中,执行其中的语句。可以将default块看作是一个分支,即前面的条件均不满足时要执行的语句。8.下列选项中,不是受检异常的是 【】A.ClassNotFoundException B.ArithmeticExceptionC.FileNotFoundException D.IOException答案:B。ArithmeticException异常属于运行时异常。9.下列选项中,与try语句配套使用的语句是 【】A.default B.catch C.break D.case答案:B。try-catch语句是异常处理语句,用try语句括住可能会出现异常的语句,后面使用catch语句捕获异常并进行处理。10.处理异常时,catch语句的后面,一般都会出现的语句是 【】A.default B.catch C.break D.finally答案:D。catch语句的最后通常是finally语句。不论是否捕获到异常,都要执行finally后面的语句。11.假设有定义:Strings=null,则下列选项中,能引发异常的是 【】I.if((s!=null)&(s.length()>0))II.if((s!=null)&&(s.length()>0))III.if((s==null)|(s.length()==0))IV.if((s==null)||(s.length()==0))A.I B.I和III C.II和IV D.III答案:B。I和III中,使用的分别是&和|运算符,这是位运算符,没有短路功能,所以&或|运算符的前后子表达式都要执行。如果s是空串,则调用s.length()时会发生异常。II和IV中,使用的是逻辑运算符&&和||,具有短路功能。对于具有短路功能的运算符,如果运算符前面的子表达式能决定整个表达式的结果,则可以跳过运算符后面的子表达式的计算。II中,当s是空串时,s!=null的值为false,不必去执行s.length()>0。当s不是空串时,调用s.length()是安全的。IV中,当s不是空串时,调用s.length()==0是安全的。当s是空串时,s==null为true,已经能够决定整个表达式的结果为true,不用去计算s.length(),所以也是安全的。二、填空题1.能替换for语句的语句是______或______。答案:do-whilewhile。for语句、do-while语句和while语句都是循环语句,且可以互相替换。2.能替换if语句的语句是______。答案:switch语句。if语句与switch语句都是分支语句,switch语句中的表达式与if语句中的条件表达式不完全相同,switch中表达式的计算结果必须是int类型或char类型的,而if语句中是条件表达式,计算结果是逻辑值。3.switch语句中,表示条件的表达式只能是______类型或______类型。答案:intchar。4.while语句中,while后面的条件必须是______类型的。答案:逻辑/布尔。while语句中,while后面是条件表达式,计算结果是逻辑型的,或称布尔型的。5.流控制语句有3类,对应于顺序流的语句是______。答案:赋值语句。流控制分为3类:顺序流、循环流和分支流。对应于顺序流的是赋值语句。6.循环语句有______语句、______语句和______语句。答案:forwhiledo-while。这3种语句都是循环语句。7.分支语句有______语句和______语句。答案:ifswitch。这两种语句都是分支语句。8.如果想使用其他包中的类,则需要在程序的开头使用______语句。答案:引入/import语句。三、简答题1.请说明switch语句的执行过程。解答:switch语句的语法格式是:switch(表达式){ casec1: 语句组1; break; //break语句可选 casec2: 语句组2; break; //break语句可选 …… caseck: 语句组k; break; //break语句可选 [default: 语句组; break; //break语句可选 ]}switch语句的执行过程是:计算表达式的值,用该值依次和c1、c2、…、ck相比较。如果该值等于其中之一,例如ci,那么执行caseci之后的语句组i,直到遇到break语句跳到switch之后的语句。如果没有相匹配的ci,则执行default之后的语句。2.程序3.1中如果某个break语句不写,则程序执行时的输出是什么?举例说明。解答:如果某个break语句不写,则当前执行的case块执行完毕,会继续执行下一个case块内的语句,直到遇到break语句时结束。举例来说,在程序3.1中,如果第一组case对应的语句块内不写break语句,即不写第一个break语句,则当输入命令行第一个参数的首字符是数字时,比如输入“234”,那么输出内容是:Thefirstcharacterisdigit2及Thefirstcharacterislowercaseletter2。当然,后一条输出是不应该出现的。3.请说明嵌套的if语句中,else语句的对应规则。解答:Java规定else子句属于逻辑上离它最近的if语句,也就是同一块中还没有匹配else的最近的if。4.请简要说明while语句与do-while语句的不同之处。解答:while语句和do-while语句的语法格式是不同的,while中条件表达式写在前面,do-while中条件表达式写在后面。两种语句条件表达式的判断时间也不同。while语句先判断条件表达式的值,然后根据值的真假决定是否执行循环体。do-while语句先执行循环体,再判断条件表达式的值,以决定是否再次执行循环体。两种语句中循环体的执行次数也不同。while中,循环体语句可能一次也不执行,do循环中的循环体至少执行一次。5.请简要说明while语句与for语句的适用情况。解答:for语句中,可以以执行次数来控制循环体的执行,当明确了次数后,可以选用for语句。而有时只知道循环体执行的前提条件,但执行次数并不明确,此时可以使用while语句。6.什么是异常?解释“抛出”和“捕获”的含义。解答:Java语言把程序运行中可能遇到的错误分为两类,其中一类是非致命性的,通过某种修正后程序还能继续执行。这类错误称作异常(Exception)。生成的异常对象传递给Java运行时系统,运行时系统寻找相应的代码来处理这一异常。生成异常对象并把它提交给运行时系统的这一过程称为抛出(throw)一个异常。Java运行时系统从生成对象的代码块开始进行回溯,沿方法的调用栈逐层回溯,寻找相应的处理代码,直到找到包含相应异常处理的方法为止,并把异常对象交给该方法处理。这一过程称为捕获(catch)。7.Java是如何处理异常的?解答:当发生异常时,Java语言提供的异常处理机制,可专门用来处理异常。Java程序中,使用try语句括住可能抛出异常的代码段,用catch语句指明要捕获的异常及相应的处理代码。一般地,当发生异常时,有3种方法可以处理抛出的异常。(1)可以忽略它,这将导致程序中断,并输出一条信息。(2)在发生异常的地方处理它。根据异常所属的类,找到对应的catch语句,然后执行其后的语句序列,完成对异常的处理,恢复程序的执行。(3)Java运行时系统从生成异常对象的代码块开始,沿方法的调用栈逐层回溯,在调用层次中更高层的方法中捕获并处理异常。8.try及catch语句的作用是什么?语法格式如何?解答:对于可能抛出异常的代码段,要使用try语句括住,用catch语句指明要捕获的异常及相应的处理代码。try语句与catch语句的语法格式如下:try{ //此处为抛出具体异常的代码
}catch(异常类型1e){ //抛出异常类型1异常时要执行的代码
}catch(异常类型2e){ //抛出异常类型2异常时要执行的代码
...
}catch(异常类型ke){ //抛出异常类型k异常时要执行的代码
}finally{ //必须执行的代码
}其中,异常类型1、异常类型2、…、异常类型k是产生的异常类型。根据发生异常所属的类,找到对应的catch语句,然后执行其后的语句序列,完成对异常的处理,恢复程序的执行。9.在什么情况下执行try语句中finally后面的代码段?在什么情况下不执行?解答:在执行try语句时,不论是否捕获到异常,都要执行finally后面的语句。try后面大括号({})中的代码称为保护代码。如果在保护代码内执行了System.exit()方法,则程序将退出,此时不执行finally后面的语句,这是不执行finally后面语句的唯一一种情况。10.你能说出Java中常见的几个异常吗?它们表示什么意思?在什么情况下引起这些异常?解答:Java中定义了一些常见异常,这些是系统预定义的,它们的处理由系统自动执行。常见的几个异常有:(1)ArithmeticException算术异常整数除法中,如果除数为0,则发生该类异常。Java虚拟机遇到这样的错误时会自动中止程序的执行流程,并新建一个ArithmeticException类的对象,即抛出一个算术运算异常。例如下面的程序将引发ArithmeticException异常。publicclassTestArithmeticException{ publicstaticvoidmain(Stringargs[]){ intdenominator=0,numerator=20,result=0; result=numerator/denominator; //除数为零,将引发ArithmeticException异常 System.out.println(result); }}(2)NullPointerException空指针异常如果一个对象还没有实例化,那么访问该对象或调用它的方法时将导致NullPointerException异常。因此使用一个变量前,要先检查一下它是否为null。例如:imageim[]=newimage[4];
System.out.println(im[0].toString());第一行创建了有4个元素的数组im,每个元素都是image类型的,系统为其进行初始化,每个元素中的值为null,表明它还没有指向任何实例。第二行要访问im[0],由于访问的是还没有进行实例化的空引用,因此导致NullPointerException异常。(3)NegativeArraySizeException数组元素个数为负异常按常规,数组的元素个数应是一个大于等于0的整数,不应该是一个负数。创建数组时,如果元素个数是个负数,则会引发NegativeArraySizeException异常。(4)ArrayIndexOutOfBoundsException数组下标越界异常Java把数组看作是对象,并用length变量记录数组的大小。访问数组元素时,运行时环境根据length值自动检查下标的大小。如果数组下标越界,则将导致ArrayIndexOutOfBoundsException异常。11.以下语句要打印从7开始不大于7的正奇数,但程序中有错误,请改正,然后写出此循环语句的循环次数。intk=7;do{ System.out.println(k--); k--;}while(k!=0);解答:while语句中的条件语句不正确。程序中,每执行do循环一次,使得k值减小2。当打印完值1后,k值修改为-1,而且后面的执行只会使k值越来越小,永远不会等于0,即(k!=0)永远为true,循环会一直执行下去,进入死循环。程序修改为:intk=7;do{ System.out.println(k--); k--;}while(k>=0);循环次数是4次。四、程序填空题1.某人以年利率r向银行存款m元,一年后存款额为m*(1+r),他想知道存多少年后,存款额会达到原来的k倍。以下方法已知m、r和k,计算至少多少年后存款额大于等于m*k。publicintcalYears(doublem,doubler,intk){ doublemoney;intyears=0; money=m; while(_____①_______){ years=years+1; money*=_________②_________; } returnyears;}解答:①money<=m*k②1+r2.方法voidFibonacci(intm)的功能是输出不大于m的Fibonacci数列中的元素。注:Fibonacci数列的前两个数都是1,从第三个数开始,数列的每个数是其前面两个数之和。voidFibonacci(intm){ intf1=1,f2=1,f3; System.out.println(f1);System.out.println(f2); while(true){ f3=f1+f2; if(f3>m)________①__________; System.out.println(f3); f1=f2;________②__________; }}解答:①return②f2=f3五、程序设计题1.设n为自然数,n!=1×2×3×…×n称为n的阶乘,并且规定0!=1。试编制程序计算2!,4!,6!,8!和10!,并显示计算结果。解答:阶乘函数在数学上的定义为:这是一个递归定义,因为阶乘本身又出现在阶乘的定义中。对于所有的递归定义,一定要有一个递归结束的出口,这既是定义的最基本情况,也是程序执行递归结束的地方。本定义中的第一行即是递归出口。当一个函数使用递归定义的时候,往往直接使用递归方法实现它。阶乘的递归实现如下所示。importjava.util.*;publicclassFactorial{ publicstaticvoidmain(String[]args){ Factorialff=newFactorial(); for(inti=0;i<5;i++){ //共计算5个阶乘结果 ff.setInitVal(2*(i+1)); //计算哪个值的阶乘 ff.result=Factorial(ff.initVal); //计算 ff.print(); //输出结果 } } publicstaticintFactorial(intn){ if(n==0)return1; //递归出口 returnn*Factorial(n-1); //递归计算 } publicvoidprint(){ System.out.println(initVal+"!="+result); } publicvoidsetInitVal(intn){ initVal=n; } privateintresult,initVal;}2.已知变量n,请写出使用for语句计算S=1+1解答:for语句需要明确循环体的执行次数。分析式子可以看出,S是由n项相加得到的。所以循环体的执行次数为n。S的初始值为0,循环变量i从1增大到n,将1/i加到S中,即可得到最终结果。 inti; doubleS=0; for(i=1;i<=n;i++){ S+=1.0/i; }3.已知变量n,请写出使用for语句计算S=1+1解答:for语句需要明确循环体的执行次数。分析式子可以看出,S是由n+1项相加得到的。可以将S的初始值设置为1,即第1项的值。这样,循环体的执行次数为n。循环变量i从1增大到n,将1/(3i)加到S中,即可得到最终结果。inti;doubleS=1.0;for(i=1;i<=n;i++){ S+=1.0/(3*i);}4.编写程序打印下面的图案。*******************************解答:从图中可以看出,该图以中间行为基准,上下对称。首先看看要打印的总行数,如果每行都不同,则需要定制各行的打印内容。如果有重复或是对称内容的话,则可以简化语句的处理。观察本题中要输出的内容,一共要输出7行,以initNum变量来表示。第1行和第7行一样,第2行和第6行一样,第3行和第5行一样,实际上只需要定制4个不同的行即可。从1开始计行号。各行的星号数与行号i的关系为:当i<=(initNum+1)/2,相应行的星号数为:(initNum-2(i-1));当i>(initNum+1)/2,相应行的星号数为:(2i-initNum),两个星号之间有两个空格。再看每行最左侧的空格数与行号的关系:当i<=(initNum+1)/2,相应行的空格个数为:3(i-1);当i>(initNum+1)/2,相应行的空格数为:(21-3i)。另外定义两个函数printaster()和printspace(),分别用来输出空格和星号。在程序实现时,每行先输出空格,后输出星号。程序实现如下:importjava.util.*;publicclassPrintAst{ publicstaticvoidmain(String[]args){ PrintAstpa=newPrintAst(); intinitNum=7; //总共输出7行 for(inti=1;i<=initNum;i++){ if(i<=(initNum+1)/2){ //前半部分 for(intm=1;m<=3*(i-1);m++)pa.printSpace(); //输出空格 for(intk=1;k<=initNum-2*(i-1);k++)pa.printAstar(); //输出星号 } else{ //后半部分 for(intm=21-3*i;m>0;m--)pa.printSpace(); for(intk=1;k<=2*i-initNum;k++)pa.printAstar(); } System.out.print("\n"); } } publicvoidprintAstar(){System.out.print("*");} publicvoidprintSpace(){System.out.print(""); }}5.编写程序打印下面的图案。*******************************************************解答:这个图案比题4的图案简单一些,因为它的变化是一致的,不需要分前后两部分。同样地,需要先判定输出的总行数,本题中是10行。接下来,确定每行输出的星号数及起始位置。从图中看出,起始位置都是从第一列开始。第一行输出10个星号,以后逐行递减一个星号,直到最后一行仅输出一个星号。程序实现如下:publicclassPrintTriag{ publicstaticvoidmain(String[]args){ intinitLine=10; //总共输出10行 intinitNum=10; //一行中最多的星号数 PrintTriagpt=newPrintTriag(); for(inti=0;i<initLine;i++){ for(intj=0;j<initNum-i;j++) pt.printAstar(); System.out.print("\n"); } } publicvoidprintAstar(){System.out.print("*");}}6.编写程序打印乘法口诀表。解答:乘法口诀表是学习算术时入门级的知识,主要内容是10以内的两个数相乘的结果,按行输出。使用循环语句可以完成。输出的格式为:被乘数相同的结果输出在同一行中,乘数相同的结果输出在同一列中。程序实现如下:importjava.util.*;publicclassMultipleTable{ publicstaticvoidmain(String[]args){ MultipleTablemt=newMultipleTable(); intinitNum=9; //输出共9行 intres=0; //计算乘法结果 for(inti=1;i<=initNum;i++){ //行的控制 for(intk=1;k<i;k++){ //每行前面的空格 System.out.print(""); } for(intj=i;j<=initNum;j++){ //列的控制 res=i*j; //乘积 mt.printFormula(i,j,res); } System.out.print("\n"); } } publicvoidprintFormula(inti,intj,intres) { if(res>9){ //对齐 System.out.print(i+"*"+j+"="+res+""); } else{ System.out.print(i+"*"+j+"="+res+""); } }}7.编写程序,要求判断从键盘输入的字符串是否为回文(回文是指自左向右读与自右向左读完全一样的字符串)。解答:如题目中所描述的,回文即是自左向右读与自右向左读完全一样的字符串。那么如何判断一个字符串是回文呢?有很多的方法,下面介绍其中比较简单的两种实现。方法一:从字符串的两头相向比较,第一个字符与最后一个字符比较,第二个字符与倒数第二个字符比较,依此类推,直到字符串的中间位置为止。对中间位置字符的比较分两种情况,一是字符串中含有偶数个符号,此时刚好配对比较完毕。另一种情况是字符串中含有奇数个符号,此时中间位置的符号不需要和任何符号进行比较。如果这些比较均相等,则字符串是回文。方法二:设字符串为w,将字符串全部反转变为w1。例如字符串“abcdefg”反转后的结果是“gfedcba”。将w与w1进行比较,如果相等,则为回文。从键盘输入字符串的方法,将在第七章介绍,本题中读者可以忽略这些内容。因为有标准输入/输出的操作,因此程序中对异常也进行了处理。方法一的实现程序如下:importjava.io.*;publicclassHuiWen{ publicbooleanisHuiWen(charstr[],intn){ intnet=0; //记录已经比较的符号数 inti,j; //需要进行比较的左右标记,i为左侧符号,j为右侧符号 for(i=0,j=n-1;i<n/2;i++,j--){ if(str[i]==str[j])net++; } if(net==(int)(n/2)){ //比较到了中间位置 returntrue; } else{ returnfalse; } } publicstaticvoidmain(String[]args) { HuiWenhw1=newHuiWen(); Stringpm=""; try{ //异常处理 InputStreamReaderreader=newInputStreamReader(System.in); BufferedReaderinput=newBufferedReader(reader); System.out.print("giveyourtestString:\n"); pm=input.readLine(); System.out.println(pm); }catch(IOExceptione){ //IOException是个标准异常 System.out.println("exceptionoccur..."); } booleanbw=hw1.isHuiWen(pm.toCharArray(),pm.length()); if(bw==true){ System.out.println("Itishuiwen!"); } else{ System.out.println("Itisnothuiwen"); } }}第二种方法可以让读者熟悉字符串及字符数组的使用,其实现程序如下:importjava.io.*;publicclassHuiWen2{ publicStringreverse(Stringw1){ Stringw2; char[]str1=w1.toCharArray(); //字符串转成字符数组 intlen=w1.length(); char[]str2=newchar[len]; //分配一个新的字符数组 for(inti=0;i<len;i++){ str2[i]=str1[len-1-i]; //用来保存原字符串的反转 } w2=newString(str2); //返回字符串型 returnw2; } publicstaticvoidmain(String[]args) { HuiWen2hw1=newHuiWen2(); Stringpm=""; try{ InputStreamReaderreader=newInputStreamReader(System.in); BufferedReaderinput=newBufferedReader(reader); System.out.print("giveyourtestString:\n"); pm=input.readLine(); }catch(IOExceptione){ System.out.println("exceptionoccur..."); } Stringw2=hw1.reverse(pm); //字符串反转 if(pareTo(pm)==0){ //字符串比较 System.out.println("ItisaHuiWen!"); } else{ System.out.println("ItisnotaHuiWen!"); } }}8.编写程序,判断用户输入的数是否为素数。素数是指只能被1和自身整除的正整数。解答:素数是只能被1和本身整除的整数。换句话说,除1和本身外,素数没有其他因子。这点可以作为判定素数的规则。对于一个正整数n,如果2~n-1之间的任何一个整数都不能整除n,则n为素数。进一步的分析可知,仅需判定2~之间的任何一个整数都不能整除n,即可判定n为素数。这样可以减少循环的执行次数。据此编写判断程序如下:importjava.io.*;publicclassPrimeNumber{ privateintpm; publicvoidsetPm(intpm){ this.pm=pm; } publicbooleanisPrime(){ //判断素数 booleanbl=true; inti=2; for(i=2;i<=Math.sqrt(pm);){ //循环判定有否因子 if(pm%i==0){ bl=false; break; //如果存在因子,则跳出循环 } else i++; //否则继续 } returnbl; } publicstaticvoidmain(Stringargs[]) { PrimeNumberprim=newPrimeNumber(); intcount=0,i; try{ System.out.print("请输入一个整数:"); InputStreamReaderreader=newInputStreamReader(System.in); BufferedReaderinput=newBufferedReader(reader); i=Integer.valueOf(input.readLine()); prim.setPm(i); booleanbl=prim.isPrime(); if(bl==true)System.out.println(i+"是素数"); elseSystem.out.println(i+"不是素数"); }catch(NumberFormatExceptionfe){ System.out.println("formaterror..."); }catch(IOExceptione){ System.out.println("IOExceptionoccur..."); } }}9.编写程序,将从键盘输入的华氏氏温度转换为摄氏温度。解答:华氏温度和摄氏温度之间的转换关系为:Celsius=(Fahrenheit-32)/95。同样地,因为要处理键盘输入,所以添加了异常处理。转换程序的实现如下:importjava.io.*;publicclassTempConverter{ publicdoublecelsius(doubley){ //转为摄氏温度 return((y-32)/9*5); } publicstaticvoidmain(String[]args) { TempConvertertc=newTempConverter(); doubletmp=0; try{ //定义输入源 InputStreamReaderreader=newInputStreamReader(System.in); BufferedReaderinput=newBufferedReader(reader); System.out.print("giveyourfahrenheittemperature:\n"); //从键盘输入一行 tmp=Double.valueOf(input.readLine()); //将输入转为双精度数 } catch(NumberFormatExceptionfe){ System.out.println("formaterror..."); } catch(IOExceptione){ System.out.println("IoExceptionoccur..."); } System.out.println("thecelsiusoftemperatureis"+tc.celsius(tmp)); }}10.编写程序,读入一个三角形的三条边长,计算这个三角形的面积,并输出结果。提示:设三角形的三条边长分别是a、b、c,则计算其面积的公式为:解答:根据平面几何的理论,当三个数能够满足任意两数之和大于第三个数及任意两数之差小于第三个数时,这三个数才能构成三角形的三条边。由三条边的逻辑关系,当上述条件满足一个时,另外一个也必然满足。因此只需要判定任两边之和大于第三边即可。根据题义,程序中定义了Trigsquare类,该类包括三角形的三条边这三个属性,以及判断是否能构成三角形的isTriangle()方法和求解三角形面积的getArea()方法。程序实现如下:importjava.io.*;publicclassTrigsquare{ doublex; //x、y、z分别为3条边 doubley; doublez; Trigsquare(doublex,doubley,doublez){ this.x=x; this.y=y; this.z=z; } publicbooleanisTriangle(){ booleanbl=false; if(this.x>0&&this.y>0&&this.z>0){ //必须是3个正数,边长不能是负值 if((this.x+this.y)>this.z&& //任意两边之和大于第三边 (this.y+this.z)>this.x&&(this.x+this.z)>this.y) bl=true; //能够构成三角形的三条边 else bl=false; //不能构成三角形的三条边 } returnbl; } publicdoublegetArea(){ doubles=(this.x+this.y+this.z)/2.0; return(Math.sqrt(s*(s-this.x)*(s-this.y)*(s-this.z))); } publicstaticvoidmain(String[]args){ doubles[]=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 妇科护理试题库及答案
- 了解考点分析纺织品设计师证书考试试题及答案
- 2024年纺织行业数字营销的实施案例试题及答案
- 刺猬原理面试题及答案
- 广告设计师考试2024年操作技能试题及答案
- 助理广告师效果监测试题及答案解读
- 2024年国际商业美术设计师考试试题及答案解读
- 宝安美术面试题及答案
- 2024广告设计师考试重点试题及答案
- 2024年纺织品检验员技能提升措施试题及答案
- (广东二模)2025年广东省高三高考模拟测试(二)历史试卷(含答案)
- 做最勇敢的自己
- 护理新技术新业务盆底疼痛
- 2024-2025年江苏专转本英语历年真题(含答案)
- 扫地机器人结构设计说明书
- 2022山东历史高考答题卡word版
- 中医医院儿科建设与管理指南(试行)
- Q∕SY 1143-2008 三维地质建模技术要求
- 大地构造学派及其构造单元汇总
- 丽声北极星分级绘本第二级上Dinner for a Dragon 课件
- 车辆维护保养制度
评论
0/150
提交评论