全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
在基于图着色的寄存器分配中,设可用物理寄存器数为 k,干涉图中某变量 x 的度数(相邻冲突变量个数)为 d。有同学断言:若 d ≥ k,则该干涉图必定不能用 k 种颜色完成着色,即 x 及其相邻变量必无法在 k 个寄存器内完成分配。试判断该说法的正误。
登录后查看答案
某语言规定值-结果传递在调用时按形参顺序分别复制实参初值,返回时也按形参顺序依次将形参值写回实参。过程 P(a,b) 的执行体依次为 a:=14;b:=27。调用前 z=8,执行 P(z,z)。判断:调用返回后 z=14。
某过程采用栈式存储分配并递归调用自身。外层调用尚未返回时,内层调用开始执行。有人据此断言:两个尚未结束的调用共用同一份活动记录。判断该断言是否正确。
判断下列说法的正误:采用标记-清扫式垃圾回收时,回收过程会把所有可达对象移动到堆的一端紧凑存放,从而消除内存碎片。
给定语法及翻译规则:E→E₁+T,生成新临时变量 t,输出 t=E₁.place+T.place,并令 E.place=t;E→T 时令 E.place=T.place;T→id 时令 T.place=id.lexeme。按自底向上归约翻译 a+b+c,所得三地址代码为 t₁=b+c;t₂=a+t₁。判断该表述是否正确。
判断:对产生式 A → X Y,若语义规则规定 Y.i = X.s,其中 Y.i 是 Y 的属性、X.s 是 X 的综合属性,那么 Y.i 应归类为综合属性,因为它的值由子结点属性计算得到。
判断:已声明 int a[5] = {2, 4, 6, 8, 10};,若将遍历循环写成 for (int i = 1; i <= 5; i++) printf("%d ", a[i]);,则程序能按声明顺序完整输出数组的全部 5 个元素。
判断:设有嵌套循环 for(i=1;i<=3;i++){ for(j=1;j<=3;j++){ if(j==2) continue; printf("*"); } },该程序共输出 3 个星号。
在C语言中,若有double型变量d,执行语句 scanf("%f", &d); 可以正确从键盘读入一个实数并存入d。判断正误。
已声明变量 int n; 后,执行 scanf("%d", n); 可以将输入的十进制整数存入 n。判断该说法是否正确。
阅读程序: #include <stdio.h> int main(void) { int code = 4; switch (code) { case 4: printf("甲"); case 7: printf("乙"); break; default: printf("丙"); } return 0; } 判断:程序运行后只输出“甲”。
判断:在符合 C11 标准且 CHAR_BIT 为 8 的实现中,signed char 的取值范围必定是 −128 至 127。
判断:在 C 语言中,0123 是一个以八进制形式表示的整型常量,其值大于十进制常量 100 的值。
某目标机仅支持指令 LD R,M(将内存单元 M 的值装入寄存器 R)、ADD R₁,R₂(令 R₁←R₁+R₂)和 ST M,R(将寄存器 R 的值写入内存单元 M)。三地址码为 t₁:=u+v;t₂:=t₁+w;q:=t₂,其中 t₁、t₂ 是仅在该片段内部使用的临时变量。生成代码为 LD R0,u;LD R1,v;ADD R0,R1;LD R1,w;ADD R0,R1;ST q,R0。判断:该代码正确实现了上述三地址码,即使没有将 t₁、t₂ 写回内存。
设子类型关系满足:Cat <: Animal <: Living。函数类型写作 D -> R。在类型检查中,函数子类型规则为:D1 -> R1 是 D2 -> R2 的子类型,当且仅当 D2 <: D1 且 R1 <: R2。现有函数 h 的类型为 Animal -> Cat,变量 k 声明为 Cat -> Animal。判断:根据该规则,h 不能赋值给 k,因为函数返回类型必须按逆变处理。
某语言采用值-结果传递:调用时按形参顺序分别复制实参初值,过程结束时再按形参顺序将形参值写回对应实参。过程 R(a,b) 的执行体依次为 a:=17;b:=29。初始 z=3,调用 R(z,z)。判断:调用结束后 z=29。
判断题:设某 DFA 的所有状态都是从初态可达的(即不存在不可达状态),则该 DFA 一定是最小化的 DFA。
判断:某编译器在语法分析阶段完成了语法树的构建,并据此进行了类型检查;随后直接由语法树生成目标代码。因此可以断定:该编译器中类型检查属于语法分析阶段的功能,而目标代码生成之前必须经过独立的中间代码生成阶段,缺一不可。
某程序在寄存器分配阶段可用物理寄存器数为 3。其干涉图中变量 v 的度数为 4,即 v 与另外 4 个变量相邻。有观点认为:既然 v 的度数 4 大于可用寄存器数 3,则 v 必须溢出到内存。判断该观点正误。
在整数运算中,除数为0会使程序陷入异常。循环 `for (i=0; i<n; i++) { y = 10/x; }` 中,假设 `n` 可为0、`x` 在循环内不变且 `x=0`。有人认为 `10/x` 是循环不变表达式,因此可安全地移到循环前计算。判断该说法是否正确。