企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Java 基础语法测试 > 考试说明:本次测试卷一共25道测试题,共计100分。考试时间120分钟。 ## 一、选择题(每题2分) 1. 下列属于合法的 Java 标识符是(A) ~~~ A. _cat B. 5books C. static D. -3.14 ~~~ 2. 下列哪一个选项不是 Java 的关键字(C) ~~~ A. class B. package C. Void D. static ~~~ 3. 已知如下代码,哪个选项中填写到(1)(2)位置处,能满足需求(C) ~~~ public static void main(String[] args) { // 求数组中偶数的和 (1) for (int i = 0; i < a.length; i++) { (2) sum = sum + a[i]; } } } ~~~ ~~~ A. (1) int sum; (2) if (a[i] % 2 == 0) { B. (1) int sum; (2) if (a[i] % 2 != 0) { C. (1) int sum = 0; (2) if (a[i] % 2 == 0) { D. (1) int sum = 0; (2) if (a[i] % 2 != 0) { ~~~ 4. 下面代码的输出结果为(D) ~~~ System.out.println(14 % 5); ~~~ ~~~ A. 14 B. 2.8 C. 2 D. 4 ~~~ 5. 执行下面语句后,b,x,y 的值分别是(B) ~~~ int x = 6, y = 8; boolean b = x > y && ++x == --y ~~~ ~~~ A. true, 6, 8 B. false, 6, 8 C. true, 7, 7 D. fasle 7, 7 ~~~ 6. 若 `a = 10`,`b = 20`,表示 x 在 a,b 之间的表达式为(A) ~~~ A. x >= a && x <= b B. x >= a || x <= b C. a <= x && x <= b D. a <= x <= b ~~~ 7. 若所用变量都已正确定义,以下选项中,非法的表达式是(C) ~~~ A. a != 4 || b == 1 B. 'a' % 5 C. 'a' = 2 / 5 D. 'C' + 35 ~~~ 8. 以下哪个不是合法的`int`类型字面量的表达方式(D) ~~~ A. 0x34 B. 026 C. 1000 D. 0x23dfL ~~~ 9. 关于变量的定义的说法正确的是(B) ~~~ A. n = 3; 表示 n 和 3 相等。 B. int n = 3; 该语句表示定义变量的同时进行初始化。 C. Java 中的变量可以不定义就直接赋值。 D. int 3 = n; 该语句合法。 ~~~ 10. 关于字符类型,以下说法正确的是(D) ~~~ A. 字符类型常量使用双引号引起来,如 "D" B. ASCII 码可以表示中文 C. 可以将任意整数赋值给字符变量而报错 D. '@' 是一个字符型字面量的正确表示方式 ~~~ 11. 关于常量的说法错误的是(D) ~~~ A. final 是定义常量的关键字 B. 常量一旦定义就不可以改变 C. 常量名中的字母一般都大写 D. final A = 4; 定义了一个常量 A ~~~ 12. 下列哪个不是程序的流程控制结构(B) ~~~ A. 顺序结构 B. 嵌套结构 C. 选择结构 D. 循环结构 ~~~ 13. 关于选择结构下列哪个说法是正确的(B) ~~~ A. if 语句和 else 语句必须成对出现 B. if 语句可以没有 else 语句对应 C. switch 结构中每个 case 语句中必须用 break 语句 D. switch 结构中必须有 default 语句 ~~~ 14. 已知如下代码,当`n`为何值时,程序段将只输出字符串`second`(BC) ~~~ switch (n) { case 0: { System.out.println("first"); } case 1: {} case 2: { System.out.println("scecond"); break; } defalut: { System.out.println("end"); } } ~~~ ~~~ A. 0 B. 1 C. 2 D. 以上都可以 ~~~ 15. 已知如下代码,则方法调用错误的是(D) ~~~ public class Test { public static int sum(int a, int b) { return a + b; } public static void main(String[] args) { int m = 5, n = 4; // 方法调用 } } ~~~ ~~~ A. sum(6, 8); B. sum(m, n); C. sum(0x12, 0x34); D. sum(10L, 30L); ~~~ ## 二、代码阅读题(每题4分) 1. 以下代码的输出结果是(s = 180) ~~~ public static void main(String[] args) { int s = 0; int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90}; for (int i = 0; i < arr.length; i++) { if (arr[i] % 3 == 0) { s += arr[i]; } } System.out.println("s = " + s); } ~~~ 2. 以下代码的输出结果是(80,2) ~~~ public static void main(String[] args) { int a = 80; System.out.println(a++); int b = (a / 3) % 5; System.out.println(b); } ~~~ 3. 以下代码的输出结果是(i = 5) ~~~ public static void main(String[] args) { int i = 1; int j = i++; if (i == ++j && i++ == j) { i += j; } System.out.println("i = " + i); } ~~~ 4. 以下代码的输出结果是(35) ~~~ public static int calc(int temp) { if (temp > 0) { return temp * 2; } return -1; } public static void main(String[] args) { System.out.println(calc(10) + calc(8) + calc(-10)); } ~~~ 5. 以下代码的输出结果是(2500) ~~~ public static void main(String[] args) { int sum = 0; for (int i = 0; i < 100; i++) { if (i % 2 == 0) { continue; } sum += i; } System.out.println(sum); } ~~~ ## 三、编程题(每题10分) 1. 控制台输入0~100之间的整数,当输入`90~100`时,输出`A`;输入`80~90`时,输出`B`;输入`70~80`时,输出`C`;输入`60~70`时,输出`D`;输入`0~60`时,输出`E`。 ~~~ public static void main(String[] args) { System.out.println("请输入一个0~100之间的数"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); if (num < 0 || num > 100) { System.out.println("输入数字超出范围"); } else if (num >= 90) { System.out.println("A"); } else if (num >= 80) { System.out.println("B"); } else if (num >= 70) { System.out.println("C"); } else if (num >= 60) { System.out.println("D"); } else { System.out.println("E"); } } ~~~ 2. 控制台输入两个大于0的整数,输出两个整数之间的所有质数。 ~~~ public static boolean prime(int m) { boolean flag = true; for (int i = 2; i < m / 2; i++) { if (m % i == 0) { flag = false; break; } } return flag; } public static void judge(int begin, int end) { for (int i = begin; i <= end; i++) { if (prime(i)) { System.out.println(i); } } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个的数"); int first = scanner.nextInt(); System.out.println("请输入第二个的数"); int second = scanner.nextInt(); if (first > second) { judge(second, first); } else { judge(first, second); } } ~~~ 3. 略 4. 已知一个数组(数据类型可自定),将这个逆转数组。 ~~~ public static void reverse(int[] arr) { for (int i = 0; i < arr.length / 2; i++) { int temp = arr[i]; arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; } } ~~~ 5. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 ~~~ public static void main(String[] args) { for (int i = 100; i <= 999; i++) { int x = i % 10; int y = i / 10 % 10; int z = i / 10 / 10 % 10; int num = x * x * x + y * y * y + z * z * z; if (num == i) { System.out.println(i); } } } ~~~