《程序设计基础(C语言)》练习题(2)

一. 单选题(共30 题,60.0分)

  1. (单选题,2.0分)若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是( )。
    A. 1
    B. 2
    C. 3
    D. 4
    我的答案:C 正确答案: C
    答案解析:
    2.0分
  2. (单选题,2.0分)C语言源程序名的后缀是( )。
    A. .C
    B. .cpp
    C. .obj
    D. .exe
    我的答案:A 正确答案: A
    答案解析:
    2.0分
  3. (单选题,2.0分)在一个函数的形参表列中定义的变量,其作用域为( )。
    A. 所在文件的全部范围
    B. 所在程序的全部范围
    C. 所在函数的全部范围
    D. 所在模块的全部范围
    我的答案:C 正确答案: C
    答案解析:
    2.0分
  4. (单选题,2.0分)C语言中计算a的立方正确的表达式是( )。
    A. pow(a,3)
    B. power(a,3)
    C. a^3
    D. a**3
    我的答案:B 正确答案: A
    答案解析:
    0.0分
  5. (单选题,2.0分)表达式 10==9的值是( )。
    A. TRUE
    B. 非零值
    C. 0
    D. 1
    我的答案:C 正确答案: C
    答案解析:
    2.0分
  6. (单选题,2.0分)若函数能被其它编译单位引用,那么函数定义时的存储类型应选用( )。
    A. auto
    B. extern
    C. static
    D. register
    我的答案:B 正确答案: B
    答案解析:
    2.0分
  7. (单选题,2.0分)在C语言中,函数返回值的类型最终取决于( )。
    A. return语句中表达式值的类型
    B. 函数定义时在函数首部所说明的函数类型
    C. 函数定义时形参的类型
    D. 调用函数时主调函数所传递的实参类型
    我的答案:A 正确答案: B
    答案解析:
    0.0分
  8. (单选题,2.0分)以下选项中可作为C语言合法常量的是( )。
    A. -80.0e
    B. -080
    C. -80
    D. -8e1.0
    我的答案:C 正确答案: C
    答案解析:
    2.0分
  9. (单选题,2.0分)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为
    A. 0
    B. 1
    C. -1
    D. 一个非0值
    我的答案:A 正确答案: A
    答案解析:
    2.0分
  10. (单选题,2.0分)设有如下说明 typedef struct ST { long a; int b; char c[2];} NEW; 则下面叙述中正确的是( )。
    A. 以上的说明形式非法
    B. NEW是一个结构体类型
    C. ST是一个结构体类型
    D. NEW是一个结构体变量
    我的答案:B 正确答案: B
    答案解析:
    2.0分
  11. (单选题,2.0分)以下数组定义中错误的是( )。
    A. int x[][3]={0};
    B. int x[2][3]={{1,2},{3,4},{5,6;
    C. int x[2][3]={1,2,3,4,5,6};
    D. int x[][3]={{1,2,3},{4,5,6;
    我的答案:B 正确答案: B
    答案解析:
    2.0分
  12. (单选题,2.0分)设int a[2][3]={{1},{2,3}};,则元素a[1][0]的值是( )。
    A. 0
    B. 1
    C. 2
    D. 3
    我的答案:B 正确答案: C
    答案解析:
    0.0分
  13. (单选题,2.0分)若局部变量与复合语句中的变量同名,则( )。
    A. 允许
    B. 变量作用域不确定
    C. 视为同一个变量
    D. 全局变量优先
    我的答案:A 正确答案: A
    答案解析:
    2.0分
  14. (单选题,2.0分)已有定义:int i,a[10],*p;,则合法的赋值语句是( )。
    A. p=100;
    B. p=a[2]+2;
    C. p=a[5];
    D. p=a+2;
    我的答案:D 正确答案: D
    答案解析:
    2.0分
  15. (单选题,2.0分)在C语言程序中,主函数的摆放位置( )。
    A. 必须置于所有函数之尾
    B. 任意
    C. 必须置于所有函数之首
    D. 不得置于所有函数之尾
    我的答案:B 正确答案: B
    答案解析:
    2.0分
  16. (单选题,2.0分)已知:char c=‘A’; 则printf(“%c”,c+32); 的输出结果是( )。
    A. a
    B. y
    C. Z
    D. c-32
    我的答案:A 正确答案: A
    答案解析:
    2.0分
  17. (单选题,2.0分)设宏定义#define PI 3.1415926,用宏名PI替换的是( )。
    A. 字符串
    B. 算术表达式
    C. 单精度实型数
    D. 双精度实型数
    我的答案:C 正确答案: A
    答案解析:
    0.0分
  18. (单选题,2.0分)对于while语句,错误的说法是( )。
    A. 循环体中可以包含若干条语句
    B. 循环体有可能一次也不执行
    C. 循环体至少要执行一次
    D. 用条件控制循环体的执行次数
    我的答案:C 正确答案: C
    答案解析:
    2.0分
  19. (单选题,2.0分)读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是( )。
    A. 一个文件指针,指向待读取的文件
    B. 一个整型变量,代表待读取的数据的字节数
    C. 一个内存块的字节数
    D. 一个内存块的首地址,代表读入数据存放的地址
    我的答案:D 正确答案: D
    答案解析:
    2.0分
  20. (单选题,2.0分)以下属于C语言保留字的是( )。
    A. get
    B. fopen
    C. unsigned
    D. include
    我的答案:C 正确答案: C
    答案解析:
    2.0分
  21. (单选题,2.0分)在一个C源程序文件中所定义的全局变量,其作用域为( )。
    A. 所在函数的全部范围
    B. 所在程序的全部范围
    C. 由具体定义位置和extern说明来决定范围
    D. 所在文件的全部范围
    我的答案:B 正确答案: C
    答案解析:
    0.0分
  22. (单选题,2.0分)设int a[10];则对a数组元素的错误引用是( )。
    A. *(a+1)
    B. a(5)
    C. a[5]
    D. a[10-10]
    我的答案:B 正确答案: B
    答案解析:
    2.0分
  23. (单选题,2.0分)在循环体中用来强制退出循环的语句是( )。
    A. return
    B. continue
    C. exit
    D. break
    我的答案:D 正确答案: D
    答案解析:
    2.0分
  24. (单选题,2.0分)C语言中,正确的一组用户标识符是( )。
    A. as_b3,_123
    B. 2c,do
    C. void,define
    D. for,-abc
    我的答案:A 正确答案: A
    答案解析:
    2.0分
  25. (单选题,2.0分)C语言中的sizeof是( )。
    A. 类型名
    B. 变量名
    C. 函数名
    D. 运算符
    我的答案:A 正确答案: D
    答案解析:
    0.0分
  26. (单选题,2.0分)下列选项中正确的语句组是( )。
    A. char *s; s=“Beijing”;
    B. char s[8]; s={“Beijing”};
    C. char s[8]; s=“Beijing”;
    D. char *s; s={“Beijing”};
    我的答案:C 正确答案: A
    答案解析:
    0.0分
  27. (单选题,2.0分)下列定义枚举类型变量,正确的是( )。
    A. enum t{a,b}x;
    B. enum t{1,2}x;
    C. anum {′+′,′-′}x;
    D. anum t={a,b}x;
    我的答案:A 正确答案: A
    答案解析:
    2.0分
  28. (单选题,2.0分)设int b[ ][5]={1,2,3,4,5,6,7};,则元素b[1][2]的值是( )。
    A. 0
    B. 2
    C. 6
    D. 7
    我的答案:B 正确答案: A
    答案解析:
    0.0分
  29. (单选题,2.0分)下列叙述中正确的是( )。
    A. break语句只能用于switch语句
    B. 在switch语句中必须使用default
    C. break语句必须与switch语句中的case配对使用
    D. 在switch语句中,不一定使用break语句
    我的答案:D 正确答案: D
    答案解析:
    2.0分
  30. (单选题,2.0分)已定义c为字符型变量,则下列语句中正确的是( )。
    A. c=“a”;
    B. c=“97”;
    C. c=‘97’;
    D. c=97;
    我的答案:D 正确答案: D
    答案解析:
    2.0分
    二. 多选题(共10 题,20.0分)
  31. (多选题,2.0分)下列属于条件编译的命令是( )。
    A. #endif
    B. #else
    C. #define N 25
    D. #include “stdio.h”
    我的答案:AB 正确答案: AB
    答案解析:
    2.0分
  32. (多选题,2.0分)以下选项中,值为1的表达式是( )。
    A. 1 - ‘\0’
    B. ‘1’ - ‘0’
    C. ‘\0’ - ‘0’
    D. 1 –‘0’
    我的答案:AD 正确答案: AB
    答案解析:
    0.0分
  33. (多选题,2.0分)以下的叙述正确的有( )。
    A. 表达式3&&5的值是false
    B. 若对一个非空文本文件进行读取,则在fopen中的“使用方式”应是r
    C. 设int a[]={1,2,3,4,5,6,7,8,9,10},p=a+5; 则p的值是6
    D. 设int a=3,则表达式a<<2的值是12
    我的答案:BC 正确答案: BCD
    答案解析:
    1.0分
  34. (多选题,2.0分)可以输出字符’A’的语句有( )。
    A. printf(“%c”,65);
    B. putchar(65);
    C. putchar(‘A’);
    D. printf(“%d”,‘A’);
    我的答案:CD 正确答案: ABC
    答案解析:
    0.0分
  35. (多选题,2.0分)以下叙述中正确的是( )。
    A. 预处理命令行都以“#”开头
    B. 预处理可以实现宏定义和条件编译的功能
    C. 预处理命令行必须位于C源程序的起始位置
    D. 每个C程序必须在开头包含预处理命令行:#include
    我的答案:BC 正确答案: AB
    答案解析:
    0.0分
  36. (多选题,2.0分)以下说法中正确的是( )。
    A. default必须和switch配合
    B. break必须和for配合
    C. else必须和if配合
    D. continue必须和while配合
    我的答案:CD 正确答案: AC
    答案解析:
    0.0分
  37. (多选题,2.0分)C语言中的数据文件包括( )。
    A. 目标文件
    B. 可执行文件
    C. 文本文件
    D. 二进制文件
    我的答案:ABC 正确答案: CD
    答案解析:
    0.0分
  38. (多选题,2.0分)跳出整个循环可以使用的语句有( )。
    A. goto
    B. break
    C. continue
    D. case
    我的答案:AB 正确答案: AB
    答案解析:
    2.0分
  39. (多选题,2.0分)以下叙述中,错误的是( )。
    A. 函数的递归调用是指系统函数调用主函数
    B. 构成一个程序的是一个主函数和最多一个非主函数
    C. typedef只是将已存在的类型用一个新的名字来代表
    D. 结构体类型的变量占用内存的字节数是第一个成员占用的内存字节数
    我的答案:CD 正确答案: ABD
    0.0分
  40. (多选题,2.0分)配合起来构成分支语句的有( )。
    A. switch
    B. default
    C. case
    D. return
    我的答案:ABC 正确答案: ABC
    答案解析:
    2.0分
    三. 判断题(共20 题,20.0分)
  41. (判断题,1.0分)连接符不能出现在标识符中。
    A. 对
    B. 错
    我的答案: 错 正确答案: 对
    答案解析:
    0.0分
  42. (判断题,1.0分)在算术运算符中,只能在两个整数之间进行的是除法。
    A. 对
    B. 错
    我的答案: 错 正确答案: 错
    答案解析:
    1.0分
  43. (判断题,1.0分)调用系统函数strcpy时,应使用的文件包含命令是#include “math.h”。
    A. 对
    B. 错
    我的答案: 对 正确答案: 错
    答案解析:
    0.0分
  44. (判断题,1.0分)\0101’和’\x41’都可以表示字母A。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  45. (判断题,1.0分)break语句只能用在循环体内和switch语句体内。
    A. 对
    B. 错
    我的答案: 错 正确答案: 对
    答案解析:
    0.0分
  46. (判断题,1.0分)do-while循环语句的循环体至少执行一次。
    A. 对
    B. 错
    我的答案: 错 正确答案: 对
    答案解析:
    0.0分
  47. (判断题,1.0分)do-while语句循环体至少要执行一次。
    A. 对
    B. 错
    我的答案: 错 正确答案: 对
    答案解析:
    0.0分
  48. (判断题,1.0分)结构化程序由顺序、分支、循环三种基本结构组成。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  49. (判断题,1.0分)每个函数都可以被单独编译。
    A. 对
    B. 错
    我的答案: 错 正确答案: 对
    答案解析:
    0.0分
  50. (判断题,1.0分)C语言是一种结构化程序设计语言。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  51. (判断题,1.0分)C程序中,j++;是赋值语句。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  52. (判断题,1.0分)一个程序中可以出现一个以上的主函数。
    A. 对
    B. 错
    我的答案: 对 正确答案: 错
    答案解析:
    0.0分
  53. (判断题,1.0分)C语言程序的基本组成单位是函数。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  54. (判断题,1.0分)在执行循环结构时,能够立即退出该结构的语句是break 。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  55. (判断题,1.0分)若函数调用时的实参为变量时,函数的形参和实参分别占用不同的存储单元。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  56. (判断题,1.0分)使用putchar函数时, 必须在之前包含头文件stdio.h。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  57. (判断题,1.0分)在执行switch结构时,能够立即退出该结构的语句是continue。
    A. 对
    B. 错
    我的答案: 错 正确答案: 错
    答案解析:
    1.0分
  58. (判断题,1.0分)数组名作为函数调用时的实参,则实际上传递给形参的是数组元素的个数。
    A. 对
    B. 错
    我的答案: 对 正确答案: 错
    答案解析:
    0.0分
  59. (判断题,1.0分)C程序中的变量,必须先定义声明,才能使用。
    A. 对
    B. 错
    我的答案: 对 正确答案: 对
    答案解析:
    1.0分
  60. (判断题,1.0分)在某文件中,若全局变量与局部变量同名,则变量作用域不确定。
    A. 对
    B. 错
    我的答案: 错 正确答案: 错
一、选择题(每题1分,共30分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。 1.下列语句序列执行后,k 的值是( )。 int m=3, n=6, k=0; while( (m++) < ( -- n) ) ++k; A) 0 B) 1 C) 2 D) 3 2.设 i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是( )。 A) i = i + 2 B) a[0] = 7; C) i++ - --j; D) a(0) = 66; 3.Java语言的类间的继承关系是( )。 A) 多重的 B) 单重的 C) 线程的 D) 不能继承 4.设有定义 int i = 6 ;,则执行以下语句后,i 的值为( )。 i += i - 1; A) 10 B) 121 C) 11 D) 100 5.下列选项中,用于在定义子类时声明父类名的关键字是( )。 A)interface B) package C) extends D) class 6.若已定义 byte[ ] x= {11,22,33,-66} ; 其中0≤k≤3,则对x数组元素错误的引用是( )。 A) x[5-3] B) x[k] C) x[k+5] D) x[0] 7.下列语句序列执行后,ch1 的值是( )。 char ch1='A',ch2='W'; if(ch1 + 2 < ch2 ) ++ch1; A) ‘A' B) ‘B' C) ‘C' D) B 8.下列语句序列执行后,i 的值是( )。 int i=8, j=16; if( i-1 > j ) i--; else j--; A) 15 B) 16 C) 7 D) 8 9.下列语句序列执行后,k 的值是( )。 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) 31 B) 32 C) 2 D) 33 10.下面语句执行后,i 的值是( )。 for( int i=0, j=1; j < 5; j+=3 ) i=i+j; A) 4 B) 5 C) 6 D) 7 11.设有定义 float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是( )。 A) x > y || x > z B) x != y C) z > ( y + x ) D) x < y & ! ( x < z ) 12.下列语句序列执行后,i的值是( )。 int i=16; do { i/=2; } while( i > 3 ); A) 16 B) 8 C) 4 D) 2 13.以下由 for 语句构成的循环执行的次数是( )。 for ( int i = 0; true ; i++) ; A) 有语法错,不能执行 B) 无限次 C) 执行1次 D) 一次也不执行 14.定义类头时能使用的修饰符是( )。 A) private B) static C) abstract D) protected 15.设int 型变量 a、b,float 型变量 x、y,char 型变量 ch 均已正确定义并赋值, 正确的switch语句是( )。 A) switch (x + y) B) switch ( ch + 1 ) { ...... } { ...... } C) switch ch D) switch ( a + b ); { ...... } { ...... } 16. 下列最终属性 i 的定义中,正确的是( )。 A) static final int i=100; B) final int i=1.2; C) final i='w'; D) final char i; 17. 下列类定义中,不正确的是( )。 A) class x { .... } B) class x extends y { .... } C) static class x implements y1,y2 { .... } D) public class x extends Applet { .... } 18. 设 x、 y为已定义的类名,下列声明x类的对象x1的语句中正确的是( )。 A) static x x1; B) public x x1=new x(int 123); C) y x1; D) x x1=x( ); 19. 设 i、j、k 为类 x 中定义的 int 型变量名,下列类 x 的构造函数中不正确的是( )。 A) x( int m){ ... } B) void x( int m){ ... } C) x( int m, int n){ ... } D) x( int h,int m,int n){ ... } 20. 下列方法定义中,正确的是( )。 A) int x( ){ char ch='a'; return (int)ch; } B) void x( ){ ...return true; } C) int x( ){ ...return true; } D) int x( int a, b){ return a+b; } 21. 用于定义类成员的访问控制权的一组关键字是( )。 A) class, float, double, public B) float, boolean, int, long C) char, extends, float, double D) public, private, protected 22. 不能构成循环的语句是( )。 A) for 语句 B) while 语句 C) switch 语句 D) do__while 语句 23. 下列程序段执行后 b3 的结果是( )。 boolean b1=true, b2, b3; b3= b1 ? b1 : b2; A) 0 B) 1 C) true D) false 24. 下面数据结构中,属于非线性的是( )。 A) 线性表 B) 树 C) 队列 D) 堆栈 25. 设有定义 int i=123; long j=456; 下面赋值不正确的语句是( )。 A) j=i; B) j=(long)i; C) i=(int)j; D) i=j; 26. 现有一整型数组a[4],它的所有数组元素是( )。 A) a0, a1, a2, a3 B) a[0], a[1], a[2], a[3] C) a[1], a[2], a[2], a[4] D) a[0], a[1], a[2], a[3], a[4] 27. 定义 Java Applet程序时,必须有的 import语句是( )。 A) import java.applet.Applet; B) import java.io.*; C) import java.awt.event; D) import java.lang.*; 28.现有两个类A、B,以下描述中表示B继承自A的是( )。 A) class A extends B B) class B implements A C) class A implements B D) class B extends A 29. 下列算法中,不能用来排序的算法是( )。 A) 冒泡法 B) 插入排序 C) 选择排序 D) 对分法 30. 堆栈操作的原则是( )。 A) 先进先出 B) 后进先出 C) 只能进 D) 只能出 二、填空题(每空1分,共15分) 请将正确答案填写在答题纸相应位置上,答在试卷上不得分。 1. 构造函数______有返回值。 2. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float和 __________两种具体类型。 3. 创建类对象的运算符是___________。 4. 当整型变量n的值不能被13除尽时,其值为 false 的Java语言表达式是_____________ 。 5. 在Java语言中,所有的数组都有一个lenght属性,这个属性存储了该数组的__________。 6. 定义类就是定义一种抽象的____________,它是所有具有一定共性的对象的抽象描述。 7. 在Java语言中,使用_____、______等技术,实现软件重用。 8. Java的复合数据类型有 : 类、数组和_______等。 9. 表达式3/6 * 5的计算结果是________ 。 10.定义初值为10的10次方的长整型变量 lvar 的语句是:__________________________。 11. 顺序结构、分支结构(或称选择结构)、____________是结构化程序设计的三种基本流程控制结构。 12. 以下方法 m 的功能是求两参数之积的整数部分。 int m ( float x, float y ) { __________________; } 13. Java 源程序文件编译后产生的文件称为________文件,其扩展名为 ___________ 。 三、判断题( 每小题1分,共15分 ) 下列各题中,你认为正确的就在其题干后的括号内打"√",错误的打"×"。 1.Java 和 c++都是面向对象的程序设计语言。( ) 2.字符串 "\'a\'" 的长度是5。( ) 3. 同一个类中定义多个参数列表不同的同名方法,叫做方法的重载。( ) 4. 一个类的定义包括定义类头和定义类体两个部分。( ) 5.一个程序里可以有多个父类,也可以有多个主类。( ) 6. 一个子类可以重新定义从父类那里继承来的同名方法,而且允许它们有不同的返回值。( ) 7.抽象方法只能存在于抽象类中。( ) 8. 在父类中声明为 final 的方法,也可以在其子类中被重新定义(覆盖)。( ) 9. 接口中所有方法均为抽象方法。( ) 10. False 是合法的 Java 标识符。( ) 11. 子类的类成员变量不能与其父类的类成员变量同名。( ) 12. static 变量不能是 private 变量。( ) 13. 保留字 this 代表当前对象。( ) 14. 类的构造函数名必须和类名相同。( ) 15. 子类的对象能直接向其父类对象赋值。( ) 四、程序填空( 每空2分,共20分 ) 阅读程序,根据程序功能,在指定的空白处填上适当的语句或语法成分,使程序完整。 1.下面是一个类的定义: public class ____________ { int x, y; Myclass ( int i, _______) // 构造函数 { x=i; y=j; } } 2.下面是用户程序对 Applet 类中方法 paint( ) 的重新定义。 public void paint(Graphics ____ ) { int i=689; a.drawString ( ________+ i ,20,60); } 3.下面是一个Java Application 的主类的定义,其功能是输出所有命令行参数。 import java.io.*; public class MyClass { public static void main(String args[ ]) { if( args.length !=___) for(int i=0; i < args.length; i++) System.out.println(___________); else System.out.println("没有命令行参数"); } } 4.下面是一个小程序的主类myprogram的定义, 其中A、B是该主类所在源程序中已定义的另两个类的类名: import java awt.*; import java applet.*; public class myprogram extends Applet//定义小程序的主类 { A a; B b; public ________ init( ) { a=new A( ); b=_____ B( ); } } 5.下面程序的功能是输出数组各元素的和。 import java.awt.Graphics; import java.applet.Applet; public class SumArray extends Applet { float[] a; a= new _______[6]; float sum=0.0f; public void init( ) { for ( int j = 0; j < a.length; j++ ) a[j] = j+1; for ( int i = 0 ; i < a.length; i++ ) sum+= a[i]; } public void paint( Graphics g ) { g.drawString( "Total of array elements: " + ________ , 25, 25 ); } } 五、简答题( 每1问2分,共20分 ) 阅读程序(或程序片段)并回答问题 。 1. import java.awt.*; import java.applet.*; public class Test51` extends Applet { float[ ] x = {1.2, 3.4, 5.6, 7.8}; public void paint(Graphics g) { int s=0; for( int i = 0; i < x.length; i++ ) s += (int)x[i]; g.drawString(" " + s, 30, 60); } } 问题: 1)程序的输出结果是什么? 2)方法paint()中的循环体 s += (int)x[i]; 能写为 s +=x[i]; 吗? 为什么? 2. public class Test52 { String str1="Hello, Java world! \t"; String str2="Hello, students! "; public static void main(String args[]) { System.out.print(str1); System.out.println(str2); } } 问题:1)这是哪种形式的 Java 程序 ? 2)程序的输出是什么?输出的结果在 Applet 窗口中吗? 3. 设ch1, ch2是 char 型变量: if ( ch1 == ‘a' ) { if ( ch2 == ‘b' ) System.out.print(" ch1=\'a\' , ch2=\'b\' "); } else System.out.print(" ch1!=\'a\' "); System.out.println(" end "); 问题: 1)若执行前 ch1 的值为 ‘a', ch2 的值为 'c' 该程序段输出是什么? 2)若执行前 ch1 的值为 'w', ch2 的值为 'b' 该程序段输出是什么? 3)若执行前 ch1 的值为 'a', ch2 的值为 'b' 该程序段输出是什么? 4.有如下源程序: import java.awt.*; import java.applet.*; public class Test54 extends Applet { B b; public void init( ) { b=new B( 'f', 87.6f, 69.1f); } public void paint(Graphics g) { g.drawString("序号 "+"性别 "+"成绩1 " +"成绩2 ",20,50); b.Print(g); } } class A { static int n=100; char ch; A( ) { n++; } A( char c){ this( ); ch=c; } void Print(Graphics g) { g.drawString(" "+n+" "+ch,20,70); } } class B extends A { float s1, s2; B(float r1,float r2){ s1=r1; s2=r2; } B( char c, float r1, float r2) { super(c); s1=r1; s2=r2; } void Print(Graphics g) { super.Print(g); g.drawString(" "+s1+" "+s2,40,70); } } 问题: 该程序的输出是什么? 5.已知菲波那契数列的数学表达式为: fibonacci(n)=n, n=0,1; fibonacci(n)=fibonacci(n-1)+fibonacci(n-2), n≥2; 设 m 是 long 型变量,下面是用递归算法求菲波那契数列的方法: long fibonacci(long n) { if(n==0||n==1) return n; else return (fibonacci(n-1)+fibonacci(n-2)); } 问题: 当语句 m=fibonacci(3); 执行时,方法 fibonacci( )被调用了几次? 6. 下面是一个排序的程序: import java.io.*; public class Test56_Sort { public static void main(String args[ ]) { int[] a={42,99,5,63,95,36,2,69,200,96}; System.out.println("排序前的数据序列:"); ShowArray(a); Sort(a); System.out.println("排序后的数据序列:"); ShowArray(a); } public static void Sort(int[] x) { int w; for(int i=1; i<x.length; i++) { for(int j=0; j<x.length-1; j++) if(x[j]>x[j+1]) { w=x[j]; x[j]=x[j+1]; x[j+1]=w; } /* if(i==1||i==2) ShowArray(x); if(i==2) break; */ } } public static void ShowArray(int b[]) { for(int i=0; i<b.length; i++) System.out.print(" "+b[i]); System.out.println(" "); } } 问题: 如果将方法Sort( )中的一对注释符(/* */)去掉,程序输出的结果是什么?
一、单选题(30分) 1.Java语言是( )。 A.面向问题的解释型高级编程语言 B.面向机器的低级编程语言 C.面向过程的编译型高级编程语言 D.面向对象的解释型高级编程语言 2.下列的变量定义中,错误的是( )。 A) int i; B) int i=Integer.MAX_VALUE; C) static int i=100; D) int 123_$; 3.以下的变量定义语句中,合法的是( )。 A) float $_*5= 3.4F; B) byte b1= 15678; C) double a =Double. MAX_VALUE; D) int _abc_ = 3721L; 4.以下字符常量中不合法的是( )。 A) '|' B) '\'' C) "\n" D) '我' 5.若以下变量均已正确定义并赋值,下面符合Java语言语法的语句是( )。 A) b = a!=7 ; B) a = 7 + b + c=9; C) i=12.3* % 4; D) a = a + 7 = c + b; 6.下列程序段执行后t5的结果是( )。 int t1 = 9, t2 = 11, t3=8; int t4,t5; t4 = t1 > t2 ? t1 : t2+ t1; t5 = t4 > t3 ? t4 : t3; A) 8 B) 20 C) 11 D) 9 7.设 a, b, c, d 均为 int 型的变量,并已赋值,下列表达式的结果属于非逻辑值的 是( )。 A) a!=b & c%d < a B) a++ = =a+b+c+d C) ++a*b--+d D) a+b>=c+d 8.执行下列程序段后,b, x, y的值分别是( )。 int x=6,y=8; boolean b; b=x>y&&++x==--y; A) true , 6, 8 B) false , 7, 7 C) true, 7, 7 D) false, 6, 8 9.以下由do-while语句构成的循环执行的次数是( )。 int k = 0; do { ++k; }while ( k < 1 ); A) 一次也不执行 B) 执行1次 C) 无限次 D) 有语法错,不能执行 10.下列语句序列执行后,x 的值是( )。 int a=3, b=4, x=5; if( ++a==b ) x=++a*x; A) 35 B) 25 C) 20 D) 5 11.下列语句序列执行后,k 的值是( )。 int i=6,j=8,k=10,m=7; if(i>j||m<k--) k++; else k--; A) 12 B)11 C) 10 D) 9 12.下列语句序列执行后,k的值是( )。 int j=8, k=15; for( int i=2; i!=j; i++ ) { j-=2; k++; } A) 18 B) 15 C) 16 D) 17 13.下列语句序列执行后,j 的值是( )。 int j=3, i=2; while( --i!=i/j ) j=j+2; A) 2 B) 4 C) 6 D) 5 14.下列语句序列执行后,k 的值是( )。 int x=6, y=10, k=5; switch( x%y ) { case 0: k=x*y; case 6: k=x/y; case 12: k=x-y; default: k=x*y-x; } A) 60 B) 5 C) 0 D) 54 15.下列语句序列执行后,a的值是( )。 int a=13; a%=a/5; A) 3 B) 13 C) 169 D) 1 16. 既能作为类的修饰符, 也能作为类成员的修饰符的是( )。 A) public B) extends C) Float D) static 17.下列选项中,用于定义接口的关键字是( )。 A)import B) implements C) interface D) protected 18.下列类头定义中,错误的是( )。 A) class x { .... } B) public x extends y { .... } C) public class x extends y { .... } D) class x extends y implements y1 { .... } 19.下列选项中,用于在定义类头时声明父类名的关键字是( )。 A)return B) interface C) extends D) class 20.设 i,j 为类 x 中定义的 double 型变量名,下列 x 类的构造函数中不正确的是( )。 A) double x(double k ){ i=k; return i; } B) x(double m, double n ){ i=m; j=n; } C) x( ){i=0;j=0 } D) x(double k ){ i=k; } 21.下列方法定义中,不正确的是( )。 A) public int x( ){ ... } B) public static int x( double y ){ ... } C) void x( double d ) { ... } D) public static x( double a ){ ... } 22.能从循环语句的循环体中跳出的语句是( )。 A) for 语句 B) break 语句 C) while 语句 D) continue语句 23. 若有循环: int x=5,y=20; do{ y-=x; x++; }while(++x<--y);则循环体将被执行( )。 A.0次 B.1次 C.2次 D.3次 24. 定义类头时,不可能用到的关键字是( )。 A) private B)class C)extends D)implements 25.在一个应用程序中有如下定义:int a[]={1,2,3,4,5,6,7,8,9,10};,为了打印输出数组a的最后一个元素,下面正确的代码是( )。 A) System.out.println(a[10]); B) System.out.println(a[9]); C) System.out.println(a[a.length]); D) System.out.println(a(8)); 26.若一个类中对某个方法进行了重载,能够区分这些重载方法的手段是 ( )。 A)它们的返回值类型的不同 B)它们的名称的不同 C) 它们的参数表的不同 D) 它们的修饰符不同 27.下面是有关子类继承父类构造函数的描述,其中正确的是( )。 A) 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。 B) 子类无条件地继承父类不含参数的构造函数。 C) 子类必须通过super关键字调用父类的构造函数。 D) 子类无法继承父类的构造函数。 28.下面说法正确的是( )。 A) final 可修饰类、属性、方法。 B) abstract可修饰类、属性、方法。 C) 定义抽象方法需有方法的返回类型、名称、参数列表和方法体。 D) 用final修饰的变量,在程序中可对这个变量的值进行更改。 29.选择排序的思想是,将数据序列划分为两个子列,一个子列是排好序的,另一个是尚未排序的。现若想将数据序列由小到大排序,则每次放到有序子列尾部位置的元素,应从无序序列中选择( )。 A)最大的 B)最小的 C)任意的 D)头上的 30.若想将数据序列使用插入排序算法由小到大排序,则每次放到有序子列合适位置上的元素,应从无序序列中选择( )。 A) 固定位置的 B)最小的 C)任意的 D) 最大的 二、填空题(每小题1.5分,共15分) 。 1.声明并创建类MyClass的一个对象,其名称为obj,可通过以下语句实现:________________。 2..设 x, y,max,min 均为 int 型变量, x、y 已赋值。用三目条件运算符,求变量 x 、y的最大值和最小值,并分别赋给变量 max 和min, 这两个赋值语句分别是 _________和________。 3.结构化程序设计的三种基本流程控制结构是:_____________、 _____________、__________。 4. 若a,b为int型变量且已分别赋值为2,4。表达式!(++a!=b--)的值是_________ 。 5.在Java语言中,将后缀名为_____的源代码编译后形成后缀名为______的字节码文件。 6.设有整型数组的定义:int a[]=new int[8]; ,则a.length的值为_____。 7.栈是一种先进____________的线性数据结构,而队列是先进_________的线性数据结构。 8.如果子类中的某个方法的________、___________和___________与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。 9.若a,b为int型变量且已分别赋值为2,6。表达式(a++)+(++b) +a*b的值是________ 。 10.定义数组,需要完成以下三个步骤,即:___________、________和_____________ 。 三、判断题( 每小题1分,共15分 ) 1.类头定义包含的四个部分分别为:访问控制修饰符、类名说明、父类名说明和接口名的说明,它们中的任何一个都是不能缺少的。 2.在 Applet 的坐标系中,(0,0) 代表输出窗口左上角的象素点。 3.应用程序一定要有main()方法,小程序一定要继承于Applet 类。 4.java语言中的逻辑变量可以和整型变量相互强制转换。 5.面向对象的软件开发方法用类把数据和基于数据的操作封装在一起,并且类之间可以存在继承关系。 6.方法可以没有返回值,或有一个返回值,也可以有多个返回值。 7.一个类中用private 修饰符修饰的属性成员,可被该类的方法和它的子类的方法访问。 8.构造函数能继承,也能被重载。 9.Java 源程序的文件名必须和公共类的类名相同。 10.双精度数强制转换成单精度数后,其数值精度会提高。 11. 队列、链表、堆栈和树都是线性数据结构。 12.属性的隐藏是指子类重新定义从父类继承来的同名变量。 13.用static修饰的方法称为静态方法,它不属于类的一个具体对象,而是整个类的类方法。 14.java语言中的接口可以继承,一个接口通过关键字extends可以继承另一个接口。 15.声明为final的方法不能在子类中重载。 四、程序填空( 每空2分,共20分 ) 1.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个英文字母,其中每个字母相隔一个制表符,请完成程序。 public _____ Class1 { public static void main( String args[] ) { char c='a'; for (int i=1;i<=26;i++) { System.out.print(______); } } } 2.下面程序的功能为计算数组各元素的和,请完成程序。 import java.awt.Graphics; import java.applet.Applet; public class SumOfArray _______ Applet { public void paint( Graphics g ) { int a[] = { 1, 3, 5, 7, 9, 10 }; int total=0; for ( int i = 0; i < a.length; i++ ) total+=_____________; g.drawString( "Total of array elements: " + total, 25, 25 ); } } 3. 下面的java小应用程序实现的功能是从文本域中输入你的名字"***",回车后在 Applet中显示"***,你好!" ,请完成程序。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { Label aa; TextField t1; String s=" "; public void init() { aa=new Label("请输入你的名字:"); add(aa); t1=___________; add(t1); t1.addActionListener(this); } public void paint(Graphics g) { g.drawString(s,20,100); } public void actionPerformed(ActionEvent e) { s=_________; repaint(); } } 4. 下面是求阶乘的递归算法,方法的返回值类型为long, 请完成程序。 ______ Factorial(long n) { if(n<=1) return 1; else ___________; } 5.下面程序的功能是通过调用方法max()求给定的三个数的最大值,请将程序补充完 整。 import java.io.*; public class Class1 { public static void main( String args[] ) { int i1=1234,i2=456,i3=-987; int MaxValue; MaxValue=____________; System.out.println("三个数的最大值:"+MaxValue); } public ______ int max(int x,int y,int z) { int temp1,max_value; temp1=x>y?x:y; max_value=temp1>z?temp1:z; return max_value; } } 五、简答题( 每1问2分,共20分 ) 1.阅读下面的程序,回答以下问题.(6分) import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { Label aa; TextField t1; int i=0; public void init() { aa=new Label("请输入一个整数:"); add(aa); t1=new TextField(10); add(t1); t1.addActionListener(this); } public void paint(Graphics g) { g.drawString("a="+( ++i*--i),20,60); g.drawString("i="+( i),20,80); } public void actionPerformed(ActionEvent e) { i=Integer.parseInt(t1.getText());//转化为整数 repaint(); } } 问题: 1)程序开头的 import java.applet.* ; 的含义是什么? 2)ActionListener是类还是接口? 程序中哪个方法是ActionListener中的方法,其功能为何? 3)若在文本域中输入6并回车,程序输出什么? 2.阅读程序,回答以下问题.(6分) public class InheritTest1 { public static void main (String[] args) { A aa; B bb; aa=new A( ); bb=new B( ); aa.show( ); bb.show(); } } //A.java public class A { int a=1; double d=2.0; void show( ) { System.out.println("Class A: "+"\ta="+a +"\td="+d); } } //B.java public class B extends A { float a=3.0f; String d="Java program."; int b=4; void show( ) { System.out.println("Class A: "+"\ta="+super.a +"\td="+super.d); super.show( ); System.out.println("Class B: "+"\ta="+a +"\td="+d+"\tb="+b); } } 问题: 1) 这是哪一类java程序? 2) 类A和类B是什么关系? 3) 按程序输出的格式写出程序运行后的结果. 3.阅读下面的程序段,回答以下问题.(4分) if ( x < 5 ) System.out.print(" one "); else { if ( y < 5 ) System.out.print(" two "); else System.out.println(" three "); } 问题: 1)若执行前 x=6, y=8,该程序段输出是什么? 2)若执行前 x=1, y=8,该程序段输出是什么? 4.现有一数据序列为:50 88 6 93 24 18 1 128 87 66 ,请写出使用选择排 序方法进行升序排序的第2趟和第5趟的结果序列。(4分)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值