收藏 分销(赏)

《面向对象程序设计JAVA语言程序设计》复习试题及答案.docx

上传人:快乐****生活 文档编号:4569293 上传时间:2024-09-30 格式:DOCX 页数:32 大小:47.60KB
下载 相关 举报
《面向对象程序设计JAVA语言程序设计》复习试题及答案.docx_第1页
第1页 / 共32页
《面向对象程序设计JAVA语言程序设计》复习试题及答案.docx_第2页
第2页 / 共32页
点击查看更多>>
资源描述
C. i++ ——j; D. a(0) = 66; C.线程的 D.不能继承 C.2 D.33 7. 设有定义float x=3.5f, y=4.6f, z=5.7f; 则以下的表达式中,值为true的是C A. x > y || x > z B. z > ) C.x != y D. x < y & ! ( x 《面向对象程序设计JAVA语言程序设计》期末复习试题及部分答案 一、单选题 1. 在下列概念中,Java语言只保留了 D A. 运算符重载 B.结构和联合 C.指针D.方法重载 2. 下列类定义中,不正确的是B A. class x { .... }B. static class x implements y1,y2 { .... } C. public class x extends Applet { .... } D. class x extends y { .... } 3. 下列语句序列执行后,k的值是B int m=3, n=6, k=0; while( (m++) < (n) ) ++k; i++ 先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i自增1作为i的值。 如i=1,则表达式(i++)的值等于1,而i的值变为2。 ++i 1先自增1,再把自增后的值赋给表达式(++i)。 如i=1,则表达式(++i)的值等于2,i的值也为2, A. 0B.1C.2D.3 4. 设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是A A. a[0] = 7;B. i = i + 2 5. Java语言的类间的继承关系是B A.多重的B.单重的 6. 下列语句序列执行后,k的值是C int i=10, j=18, k=30; switch( j - i ) { case 8 : k++; case 9 : k+=2; case 10: k+=3; default : k/=j; } A.31B.3 < z ) 8. 下列修饰符中,定义类头时能使用的修饰符是C A. private B. static C. abstract D. protected 9. 设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是B A. x( int m)( ... } C. x( int m, int n)( ... } B. void x( int m)( ... } D. x( int h,int m,int n)( ... } 10. 下列对封装性的描述中,错误的是D A•封装体包含了属性和行为 B. 封装使得抽象的数据类型提高了可重用性 C. 被封装的某些信息在封装体外是不可见的 D. 封装体中的属性和行为的访问权限是相同的 11. 下列关于包的描述中,错误的是B A.包是若干个类的集合B.包是一种特殊的类型 C. 包是使用package语句创建的 D.包有有名包和无名包两种 12. 下列关于Applet程序的描述中,错误的是 C A. Applet程序的主类必须是Applet类得子类 B. Applet不是完整的独立程序 C. Applet程序的主类中应有一个main ()方法 D. Applet的字节码文件必须嵌套在一个HTML文件中 13. 下列界面元素中,不是容器的是 C A. Dialog B. FrameC. ListD. Panel 14. 下列关于异常处理的描述中,错误的是D A. 程序运行时异常由Java虚拟机自动进行处理 B. 使用try-catch-finally语句捕获异常 C. 使用throw语句抛出异常 D. 捕获到的异常只能在当前方法中处理,不能在其他方法中处理 15. 以下方法不属于迭代器(Iterator)接所定义的方法的是D A. hasNext () B. next ()C. remove ()D. nextElement () 16. 主线程属于(C ) A.守护线程B. Thread线程C.用户线程 D. Runnable线程 、填空题 1. 三目运算符的3个操作数中,第一个操作数的类型必须是逻辑.犁的。 2. 在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2字 节内存空间,这样,无论是中文字符还是英文字符,都是占用—字节内存空间。 3. 假设x=13, y=4,则表达式x%y != 0的值是true,其数据类型是布尔型。 4. Java语言中,多态性主要表现在两个方面:方法重载和成员覆盖。 5. 定义类的关键字是.class,定义接的关键字是interface。 6. 在Java语言中,通过类的定义只能实现单 重继承,但通过接的定义可以实现 多重继承关系。 7. 在Java中字符串包括字符串常量和字符串变量,分别由类String和类StringBuffer来 创建对象。 8. Java源程序文件编译后产生的文件称为• class文件,其扩展.名为• java。 9. 在多线程程序设计中,若要启动一个线程需要调用的函数是start。 10. 在Java语言中,系统规定:表示当前类的构诰方法用this,表示直接父类的构诰方法 用 super。 17. Java语言规定标识符是由字母、下划线、数字和 美元符号组成的字符序列,长 度不限;又规定第一个字符不能是数字,并区分字母的大小写。 18. Java中实现多线程一般使用两种方法,一是Thread,二是Runnable。 19. Java中变量有三要素: 类型、 变量名 和变量值。 20. Java语言中,说明或声明数组时 内存大小,创建数组时 内存大小。 21. 集合框架提供的Map接的实现类中,在Map中插入、删除和定位元素,使用HasMap是 最好的选择;需要按顺序遍历键,需选择ThereMap。 22. Outputstream类和 Inputstream类是所有字节流输入输出类的父类。 23. 导入my.package包中的所类的命令是import。 24. 构造方法是一种特殊的成员方法,构造方法名与 相同,并且此方法无 有返 回值。 25. 图形用户界面的设计中有事件处理模型处理事件,在该模型中主要包括事件源、 事件对象和事件监听者。 三、判断题 1. Java语言具有较好的安全性和可移植性及与平台无关等特性。T 2. Java语言的基本数据类型有4种:整型、浮点型、字符型和布尔型。T 3. 组成Java Application的若干类中,有且仅有一个主类,只有主类中含有主方法main。T 4. 数据由高类型转换到低类型时候,采用强制转换,数据精度要受到损失。T 5. 子类所继承父类的成员都可以在子类中访问。 6. 静态方法只能处理静态变量。T 7. 抽象方法是一种只有说明而无具体实现的方法。 8. Java语言规定在嵌套的程序块中不允许定义同名的成员变量。 9. Throwable类有两个子类:Error类和Exception类。前者由系统保留,后者供应用程序 使用。 10. 运行Applet程序是使用AppletViewer命令运行嵌入了字节码文件的html文件,从而获 得运行结果。 11. 成员方法的重载和覆盖是同一回事。 12. 集合Set是通过键-值对的方式来存储对象的。 13. Java语言是一种强类型语言,数据类型转换有两种:隐含转换和强制转换。 14. Java语言中,数组在静态和动态赋值时都判越界。 15. Frame容器是有边框的容器,它也是一种独立窗,只能作为最外层容器。 16. 死锁的产生是因为多个线程间存在资源竞争。 1. 组成Java Application的若干类中,有且仅有一个主类,只有主类中含有主方法main。() 2. 数据由高类型转换到低类型时候,采用强制转换,数据精度要受到损失。() 3. 成员方法的重载和覆盖是同一回事。() 4. 抽象方法是一种只有说明而无具体实现的方法。() 5. Java2的事件处理方法是采用委托事件处理模型。() 6. Throwable类有两个子类:Error类和Exception类。前者由系统保留,后者供应用程序使用。 ( ) 7. 运行Applet程序是使用AppletViewer命令运行嵌入了字节码文件的html文件,从而获得运 行结果。 8. Java语言具有较好的安全性和可移植性及与平台无关等特性。() 9. Java语言的基本数据类型有4种:整型、浮点型、字符型和布尔型。() 10. 子类所继承父类的成员都可以在子类中访问。() 11. Java语言规定在嵌套的程序块中不允许定义同名的成员变量。() 12. Java语言采用16位颜色标准。Java的调色板保证128色。 13. 静态方法只能处理静态变量。() 14. 画布(Canvas)是一种可容纳多个组件的容器。() 15. Java语言是一种强类型语言,数据类型转换有两种:隐含转换和强制转换。() 16. Java语言中,数组在静态和动态赋值时都判越界。() 17. Frame容器是有边框的容器,它也是一种独立窗,只能作为最外层容器。 () 18. 集合Set是通过键-值对的方式来存储对象的。 19. 异常处理是在编译时进行的。() 20. 死锁的产生是因为多个线程间存在资源竞争。() 四、阅读下列程序,请写出程序的输出结果 1. class B { int b; B(int x) { b = x; System. out.println("b=" + b); } } class A extends B { int a; A(int x, int y) { super(x); a = y; System.out.println("b=" + b + ",a=" + a); } } public class Test { public static void main(String[] args) { A obj = new A(13, 23); } } 答案 b=13 b=13,a=23 2. public class Testi { public static void main(String[] agrs) { AB s = new AB("Hello!", "I love JAVA."); System. out.println(s.toString()); } } class AB { String si; String s2; AB(String stri, String str2) { si = stri; s2 = str2; } public String toString() { return si + s2; } } 答案 Hello!I love JAVA. 3. public class Test { public static void main(String[] args) { int[][] numi = new int[2][3]; num1[0][0] = 3; numi[0][1] = 9; num1[0][2] = 60; numi[I][0] = 78; numi[i][i] = 79; for (int i = 0; i <= i; i++) { for (int j = 0; j < numi[i].length; j++) System. out.print(numi[i][j] + "\t"); System.out.println(); 答案 3960 78 79 0 4. public class Test { public static void main(String[] agrs) { int i, s = 0; int a[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 }; for (i = 0; i < a.length; i++) if (a[i] % 3 == 0) { s += a[i]; System. out.println(ns=" + s); } } } 答案 s=30 s=90 s=180 5. public class Test3 { public static void main(String[] agrs) { A a = new A(2);A b = new A(3); System. out.println(a.isEqualTo(b)); } } class A { private int privateVar; public A(int -privateVar) {privateVar = -privateVar; } boolean isEqualTo(A anotherA) { if (this.privateVar == anotherA.privateVar)return true; elsereturn false; } 答案 false 6. public class Test { public static void main(String[] args) { int[][] num1 = new int[2][3]; num1[0][0] = 3; num1[0][1] = 9; num1[0][2] = 45; num1[1][0] = 78; num1[1][1] = 79; for (int i = 0; i <= 1; i++) { for (int j = 0; j < num1[i].length; j++) System. out.print(num1[i][j] + "\t"); System.out.println(); } int[][] num2 = new int[][] { { 1, 2, 3 }, { 7, 8 } ,{ 9 } }; for (int i = 0; i <num2.length; i++) { for (int j = 0; j < num2[i].length; j++) System. out.print(num2[i][j] + "\t"); System.out.println(); 答案 79 45 0 3 3 78 1 7 9 7. public class Test2 public static void main(String[] agrs) int i, s = 0; int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (i = 0; i < a.length; i++) if (a[i] % 3 == 0) { s += a[i]; System. out.println(ns=" + s); } } } 答案 s=3 s=9 s=18 8. class B { int b; B(int x) { b = x; System. out.println(nb=" + b); } } class A extends B { int a; A(int x, int y) { super(x); a = y; System. out.println(nb=" + b + ", a=" + a); } } public class Test { public static void main(String[] args) { A obj = new A(5, 10); } } 答案 b=5 b=5, a=10 9. public class Test4 { public static void main(String[] agrs) { try { method(); } catch (Exception e) { System. out.println("A"); } finally { System. out.println("B"); } } static void method() { try { wrench(); System. out.println("C"); } catch (ArithmeticException e) { System. out.println("D"); } finally { System. out.println("E"); } System. out.println("F"); } static void wrench() { throw new NullPointerException(); } } 答案 E A B 五、程序设计题 1. 设计一个Calculator类,并完成下列的各方法的程序设计并测试: (1) 定义add ()方法,用来计算两数(a,b)之和。 (2) 定义sub ()方法,用来计算两数(a,b)之差。 (3) 定义mul()方法,用来计算两数(a,b)之积。 (4) 定义div ()方法,用来计算a/b。 public class kk { int a, b int add() { return (a + b); } int sub() { return (a - b); } int mul() { return (a * b); } int div() { if (b != 0) return (a / b); else return 0; } public kk static void main(String[] args) { rect = new kk(); rect.a = 10; rect. b = 6; System. out.println("add=" System. out.println("sub=" System. out.println("mul=" System. out.println("div=" + + + + rect.add()); rect.sub()); rect.mul()); rect.div()); } } 2. 定义一个ArrayList集合对象, 往其中添加随机产生的0-10之间的float类型数据,共添 加10个,并打印输出该集合对象中每个元素的值。 import java.util.ArrayList; import java.util.Iterator; public class Test { public static void main(String[] args) { ArrayList list = new ArrayList(); for (int i = 0; i < 10; i++) list.add(i, (float) Math.random()*10); for(int j=0;j<list.size();j++) System.out.println(list.get(j)); Iterator it=list.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } } 3.试利用do while循环,计算10!。 public class Sum { public static void main(String[] args) { int s = 1; for (int i=1;i<=10;i++) { s*=i; } System. out.println(s); } } 其他问题: 1、用输入流读、并统计用户输入信息中的字母、数字 import java.io.*; public class Test11 { public static void main(String[] args) throws IOException { int nDig=0,nChar=0,nOther=0; InputStreamReader in=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(in); System.out.println("请输入:"); String str=br.readLine(); for(int i=0;i<str.length();i++){ if(str.charAt(i)>='0'&&str.charAt(i)<='9'){ nDig++; }else if(str.charAt(i)>='a'&&str.charAt(i)<='z'||str.charAt(i)>='A'&&str.charAt(i)<='Z'){ nChar++; }else nOther++; } System.out.println("字母:"+nChar); System.out.println("数字:"+nDig); System.out.println("其它字符:"+nOther); } } 2、循环语句的使用 《C语言程序设计》模拟试卷A-带答案 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的是(D) A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是(C)。 A) MAINB) _HJC) 2ongD) LINE1 3、以下能正确定义一维数组的是(C)。 A) int a[5] = {0,1,2,3,4,5}; B) int a[5] =” 012345”; C) char a[ ]=” 012345”;D) char a[5] = {0, 1, 2, 3, 4, 5}; 4、执行下列程序段后输出的结果是(C)。 x = 9; while (x > 7) { printf(“*” ); x; } A) **** B) ***C) **D) * 5、设 char str1[10] = "ABCDE”, str2[10] = "xyz”; 则执行语句printf("%d”,strlen (strcpy (str1, str2)));后的输出结果是 (D)。 解析: strcpy(str1,str2后;,str1[]里是"XYZ", Z后面有字符串结束符 strcpy(str1,str2执行后,函数返回的是str1, 因为str1[]里是新值"XYZ",而 strlen(strcpy(str1,st 就是 strlen(st的新值),所以得 3。 strlen统计到字符串结束符以前,即,不计入字符串结束符。 A) 9 B) 8C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的是(A)。 A)数组的首地址B)数组第一个元素的值 C)数组中全部元素的值D)数组元素的个数 7、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为(C)。 A)voidB)double C)int D)char 8、下面不能正确进行字符串赋值操作的语句是(C)。 A) char s[5] = {"ABCD"};B) char s[5]; s="ABCD"; C) char *s; s="ABCDEF";D) char *s="ABCD"; 解析:这样理论上的没错的把s指针指向字符串可以改变s指针但不能改变其指向的值正确的应该是这样 char s[] = "ABCDEF"; 或 char s[8];strcpy(s, "ABCDEF"); 9、设有说明int s[5] = {1,3,5,7,9}; int *p=s;则下列表达式中值为3的是(C)。 A)++pB)++(*p) C) *(++p) D) *(p+=2) 解析: A是把p得地址后移一个int单位长度,即使p指向数组的第二个元素。 B是取得p当前指向的元素值然后加1,即1+1=2 ; C是先移动p,使其指向第二个元素,然后取得当前指针指向的元素值,即3. D是先使p指向数组的第三个元素,然后去的当前指针指向的元素的值,即5。 10、下面程序的输出结果是(B)。 int m=13; int fun( int x, int y) { int m=3; return( x*y-m); } main() { int a=7,b=5; printf(“%d\n”,fun(a,b)/m); } A) 1B) 2C) 3D) 10 二、填空题。(每空2分,共30分) 1. 设有变量说明语句: int x=1,y=2; 则执行下述printf语句的输出结果是__1. _ printf ("%f\n", 1. 0+x/y); 2. 执行下述程序: #include <stdio.h> main() { int x, y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入: 12345671 则程序的输出结果是__17__。 解析:x,y为int类型,x的长度为2,y的长度为1,即x为12,y为5,故x+y=17 3. 以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入 负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include <stdio.h> main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while (x>0) { if (x>amax) amax=x; else if (x<amin) amin=x; scanf("%f',&x); } printf("\namax=%f\namin=%f\n",amax,amin); } 4. 设n是整型变量,且已具有某正整数值。根据下述数学式 1111111 — —— —— 2 2 3 3 4n n 1 求s的值并输出。可编写如下之程序段来实现。请填空。 int k; double s,d; s=0.0; d=1.0; k=0; do { s=s+d; __k++_; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5. 执行下述程序的输出结果是——4 0 4 4 3- #include <stdio.h> main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 解析:(i>3)为真时值为1,反之为0, 6. 执行下述程序的输出结果是一一一6___。 #include <stdio.h> main() { int a[] = {2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)<x)?*(ptr+y):x; printf("%d\n",z); } 7. 执行下述程序的输出结果是60… #include <stdio.h> main() { int a[][2] = {10,20,30,40,50,60},(*p)[2]; p=a; printf("%d\n",*(*(p+2)+1)); } 8. 执行以下程序的输出结果是__其_。 #include <stdio.h> main() { int s,i,sum(); for (i=1;i<=10;i++) s=sum(i); printf("s=%d\n”,s); } sum(int k) { int x=0; return (x+=k); } 9. 下述函数定义用来求出两个整数之各,并通过函数的模拟传地址调用,传回两整 数相加之和值,请填空。 void add(int x,int y,—int *z—) { *z=x+y; } 10. 函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一 位存入由整型指针b所指向的一维数组a,最低位存放于a[0]中,次低位存放于a[1] 中,依此类推。请填空。 void func(int x,int *b) int r; do { r=x%2; 二=r; x/=2; } while (x); } 11. 以下程序中函数invert实现将数组内所有数组元素的值逆置。比如,执行本程 序将输出: 10987654321 请填空。 #include <stdio.h> main() { int a[10] = {1,2,3,4,5,6,7,8,9,10},i,n=10; invert(a,n-1); for (i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); } invert(int *s,int num) { int *t,k; t=s+num; while (—t>s) { k=*s; *s=*t; *t=k; s++; t--; } } 12. 若有以下定义和说明,则结构体变量w在内存中所占的字节数是 union aa { float x; float y; char c[6]; }; struct st { union aa v; float w[5]; double ave; } w; 13. 执行下述程序的输出结果是——-。 #include <stdio.h> struct str { float x; char *y; } *m; struct str group[3] = { 95.0,"Li”, 82.5, "Wang”, 73.5, "Sun” }; main() { m=group; printf("%.lf,%s\n",m->x,m->y); } 14. 下面的程序用来统计某文件中字符的个数。请填空。 #include <stdio.h> #include <stdlib.h> main() { FILE *fp; long num=0; if ((fp=fopen("fnam.dat","r"))==NULL) { printf("Can't open this file!\n"); exit(0); while (― ) { fgetc(fp); num++; } printf("num=%d\n",num); fclose(fp); } 15. 执行下述程序后,输出结果为。 #include <stdio.h> #define FUN1(a,b) a+b #define FUN2(a,b) a-b #define CAL(a,b) a*b+a+3 main() { printf("%d\n”,CAL(FUN1(3,5),FUN2(4,5))); } 三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句写在程序 之后的横线上。每小题5分,共10分) I. 下列给定程序的功能是:读入一个整数(2<=k< = 1),打印它的所有质因 子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、 II。 #include <conio.h> #include <stdio.h> IsPrime(int n); { int i,m; m=1; for ( i=2; i<n; i++) if !(n%i) { m=0; continue; } return (m); } main() { int j,k; printf(“\nPlease enter an integer number between 2 and 1:”);scanf("%d”,k); printf(“\nThe prime factor(s) of %d is (are):”,k); for (j=2;j<=k;j++) if ((!(k%j))&(IsPrime(j)) printf("\n%4d”,j); printf("\n”); } 2. 下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中 的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。 例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为: aBcdeFgh。 #include <stdio.h> #include <string.h> void fun(char *p,char *q,char *c); { int k=1; while(*p!=*q) { if (*p<*q) c[k]=*q; else c[k]=*p; if (*p) p++; if (*q) q++; k++; } main() { char a[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80] = {"”}; fun(a,b,c); printf(“The string a:”); puts(a); printf(“The string b:”); puts (b); printf(“The result:”); puts(c); } 四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。 (每小题5分,共20分) 1. #include <stdio.h> void main() { char ch; int k=0; for(ch=’ A’ ;ch<’ H’ ; ch++, k++) if (k%2==0) printf(“%c”,ch); printf("\n” ); } 输出结果: 2. #include <stdio.h> void main( ) { int k=0; char c=’A’; do { switch (c++) (case ‘A’: k++; break; case‘B’:k--; case‘C’:k+=2;break; case‘D’:k=k%2;break; case‘E’:k=k*10;break; default: k=k/3; } k++; } while(c<’G’); printf( "k=%d\n”, k); } 输出结果: 3. #include <stdio.h> voi
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服