全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
判断下列表述的正误:「Java 的跨平台性意味着同一份 JVM 可以在 Windows、Linux、macOS 等不同操作系统上通用;正因为 JVM 本身跨平台,编译后的字节码才能实现一次编译、到处运行。」
登录后查看答案
判断题:Java 具有自动垃圾回收机制,因此程序员即使在程序中打开了文件却忘记关闭,垃圾回收器也会自动释放该文件资源,不会造成资源泄漏。
某类 Base 中定义了 void show(Base b),子类 Derived 中定义了 void show(Derived d)。学生甲说:由于 Derived 的 show 方法名与 Base 的相同但参数类型不同,且存在继承关系,这构成了方法重写。学生乙说:这个 show(Derived d) 相对于父类的 show(Base b) 构成重载,调用时会按参数的静态类型在编译期完成绑定。请判断:甲的说法是否正确。
判断:对于语句 String[] names = new String[3]; 与 int[] nums = new int[3];,数组 names 的三个元素默认值均为 "",可以直接调用 names[0].length() 而不会报错;而 nums 的三个元素默认值均为 0,遍历前无需赋值即可安全读取并求最值。
判断:在 Java 中,方法 void f(int[] a){ a = new int[]{9}; } 执行后,调用处的数组首元素一定会被改为 9。
判断:设有定义 int a[6] = {1,3,5,7,9,11}, *p = a;,int 类型占 4 个字节。若依次执行语句 p += 3; 和 p--;,则此时 *(p+1) 的值与数组元素 a[3] 的值相等;且若把第一条语句改为 a += 3;,程序同样能正确编译运行。
判断:设主调函数中有定义 int m=5, n=12; 并调用函数 modify(&m, &n),其原型为 void modify(int *p, int *q)。若 modify 的函数体只写了 int *tmp; tmp=p; p=q; q=tmp; 那么调用结束后主调函数中 m 和 n 的值发生了交换。
判断:某学生编写的递归函数 int f(int n){ if(n==0) return 1; return n*f(n-1); } 在 main 中以 n=5 调用后能正常返回 120;他又声称,若把终止条件 if(n==0) 删去而其余不变,程序仍会正确返回 120,只是多递归几次而已。
判断:某学生编写了如下递归函数用于计算 n!:long fact(int n){ return n*fact(n-1); } 并在 main 中调用 fact(5)。由于每次调用都使参数 n 减 1、不断向更小值逼近,因此该递归是合法的,程序能正常输出 5! 的值 120。
判断下列说法的正误:在 C 语言中,若将二维数组作为函数形参,形参可以写成 int a[][4] 或 int a[3][4] 的形式,但绝不能写成 int a[3][] 的形式,因为编译器必须依据列数才能确定每一行的字节长度,从而按行优先规则正确寻址元素 a[i][j]。
有以下程序段: int i = 1, s = 0; while (i <= 10) { if (i % 3 == 0) continue; s += i; i++; } 有同学分析认为:该程序段会跳过所有 3 的倍数,把 1 到 10 中其余各数累加到 s,循环正常结束后 s 的值为 37。请判断这一说法是否正确。
判断:用辗转相除法求 gcd(a,b)(a>b≥1)的 while 循环中,循环体执行 r=a%b; a=b; b=r;,当 b 变为 0 时循环结束,此时 a 即为最大公约数;该算法的总迭代次数与 a、b 的具体数值有关,但对任意输入都必然在有限步内终止。
某同学定义了两个 short 型变量:short s1 = 300; short s2 = 500; 然后编写赋值语句 short s3 = s1 * s2; 该同学认为:由于 s1 与 s2 的乘积为 150000,仍在 int 的表示范围内,而 short 到 int 是小容量到大容量的自动转换,因此这行代码可以正常编译通过,不需要任何强制转换。请判断该同学的结论是否正确。
判断下列说法的正误:Java 的八种基本数据类型中,byte、short、int、long 四种整数类型所占的字节依次为 1、2、4、8;boolean 类型可以与 int 类型通过强制转换相互赋值,例如 (int)true 是合法的表达式。
某同学在学习 Java 跨平台机制后作出如下表述:「Java 程序经编译后生成的字节码文件可以在不同操作系统上运行,这是因为各操作系统使用的是同一个通用的 JVM;也就是说,只要装了 Java 程序,字节码本身就能在 Windows、Linux、macOS 上直接运行,无需任何中间环节。」请判断该同学的表述是否正确。
判断:设有定义 int a = 6; int *p; 执行 *p = &a; 后,再执行 *p = *p * 2;,则变量 a 的值一定被修改为 12。
设有定义 int a[5] = {2,4,6,8,10}; int *p = a;,请判断下列说法的正误:语句 p++; 执行后,指针 p 指向数组元素 a[1];而语句 a++; 也能使数组名 a 指向 a[1],因此两种写法完全等价。
判断:某学生编写了一个 C 程序,函数 change 的定义写在 main 函数之后,其功能是把形参 x 减去 1,函数体为 void change(int x) { x = x - 1; },且在 main 中未书写任何函数声明。该学生认为:只要在 main 中先定义实参变量并传值调用 change,程序就能正确编译运行,并且调用结束后 main 中实参变量的值减 1。
判断:对一个含有 8 个元素的整型一维数组用选择排序按升序排列时,每轮从未排序部分选出最小值放到其正确位置,因此共需进行 8 轮选择才能保证数组完全有序。
设有定义 int a = -6, b = 4; 判断:求值表达式 (a / b == -1) && (a % b == -2) || (b & 3) 时,由于 -6/4 向零取整得 -1,-6%4 的余数符号与被除数相同得 -2,前两个关系表达式均为真,逻辑与结果为真后短路,整个表达式的值为 1,且 b & 3 不会被求值。