全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
已定义 int a[5];。判断:表达式 a 与 &a 虽都对应数组首地址,但类型相同。
登录后查看答案
判断:在 C 语言中,一个共用体(union)类型的变量所占用的存储空间,其大小足以容纳该共用体所有成员中占空间最大的那个成员,且在同一时刻只能保存其中一个成员的值。
有如下 C 语言函数定义: int r(int n) { if (n % 2 == 0) return n / 2; else return 3 * n + 1; } int s(int n) { return r(r(r(n))); } 在主函数中执行语句 int t = s(5); 后,变量 t 的值为____。
判断:有以下程序: #include <stdio.h> void swap(int x, int y) { int t = x; x = y; y = t; } int main() { int a = 3, b = 7; swap(a, b); printf("%d,%d", a, b); return 0; } 程序输出为 3,7,原因是 swap 的形参是普通整型变量,实参向形参单向传值,函数内部交换只作用于形参副本,main 中的 a、b 未受影响。
已包含头文件 <string.h>。定义 char s[] = "rhythm!"; 执行 size_t n = strcspn(s, "aeiou"); 后,n 的值为 ____。
判断:定义函数 void set(int a[4]),并以 int v[4] 调用时,形参 a 按 int * 处理;调用会把数组 v 的全部元素复制到独立的形参数组中,因此函数内修改 a[0] 不会改变 v[0]。
设有语法制导翻译方案:E→E₁−E₂ 时生成新临时变量 t 并输出 t:=E₁.place−E₂.place,令 E.place=t;E→T 时令 E.place=T.place;T→T₁/F 时生成新临时变量 t 并输出 t:=T₁.place/F.place,令 T.place=t;T→F 时令 T.place=F.place;F→(E) 时令 F.place=E.place;F→id 时令 F.place=id。按该方案对表达式 x−y/(u+v) 自左向右进行语法制导翻译,生成的三地址代码中最后一条四元式是( ) A. t3:=x−t2 B. t3:=x−y C. t1:=u+v D. t2:=y/t1
有以下程序: #include <stdio.h> void mod(int a, int *b) { a = a * 2; *b = a + 10; b = &a; *b = 7; } int main() { int x = 3, y = 4; mod(x, &y); printf("%d,%d", x, y); return 0; } 程序运行后的输出结果是( ) A. 3,7 B. 3,16 C. 6,7 D. 6,16
判断:已声明 int a[3][4] = {{5, 1, 9, 2}, {6, 0, 8, 3}, {7, 4, 10, 11}};,若使用嵌套循环 for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) printf("%d ", a[i][j]); } 遍历该数组,可以完整且不越界地输出全部 12 个元素。
设命题 p、q、r、s 满足前提:(1) p∨q;(2) p→r;(3) r→s;(4) ¬s。仅使用命题逻辑推理规则,最终可确定 q 的真值为____。
在 GCC 中,命令 `gcc -Wall -E demo.c -o demo.i` 会只执行预处理并将结果写入 `demo.i`;其中 `-Wall` 会开启编译器的全部警告,因此无须再加 `-Wextra`。判断该表述是否正确。
#include <stdio.h> void f(int x, int *y) { x = *y + 1; *y = x + 1; } int main() { int a = 2, b = 5; f(b, &a); printf("%d %d", a, b); return 0; } 程序输出是: A. 4 5 B. 5 4 C. 3 6 D. 4 6
使用 GCC 编译时,希望启用一组常见警告,但不要求启用通常由 -Wextra 补充的警告。应在命令中加入选项 ____。
某源文件包含以下条件编译代码,且 TRACE、RELEASE 均已定义: #if defined(TRACE) int mode = 1; #elif defined(RELEASE) int mode = 2; #else int mode = 3; #endif 预处理后,哪项声明会被保留? A. 仅 int mode = 1; B. 仅 int mode = 2; C. 仅 int mode = 3; D. int mode = 1; 和 int mode = 2; 均保留
阅读代码:#define LIMIT 8 #define COPY LIMIT int value = COPY; 预处理后,变量定义中的初始化表达式为 ____。
在 C 语言中,文件指针变量本身存储的是地址值。设程序中有如下声明与语句: FILE *fp, *gq; fp = fopen("data.txt", "r"); gq = fp; 若 fopen 调用成功,且执行 gq = fp; 后不再对 fp、gq 重新赋值,则表达式 (fp == gq) 的值为 ____(填 0 或 1)。
关于 C 语言条件编译的格式与作用,以下说法正确的是哪一项? A. 用 #if、#else、#endif 等指令按条件决定哪些源代码参与编译 B. 用 #if、#else、#endif 等指令在程序运行时决定执行哪条语句 C. 用 #if、#else、#endif 等指令定义函数的参数类型 D. 用 #if、#else、#endif 等指令自动创建被包含的头文件
某二进制文件已成功以 "rb" 模式打开,且文件长度足够,初始文件位置不作限定。程序依次成功执行 fseek(fp, 7L, SEEK_SET) 和 fseek(fp, -3L, SEEK_CUR),随后调用 long p = ftell(fp);。变量 p 的值为____。
判断:在 C 语言中,fp 是指向 FILE 类型的指针,执行 fp = fopen("data.txt", "r"); 后,fp 的值就是文件 data.txt 中当前读写位置上的那个字符,若打开失败则 fp 等于 EOF。
在 C 语言程序中,已定义 struct Student stu; 并用 FILE *fp = fopen("data.txt", "rb"); 打开文件。若要通过 fp 完成读写操作,下列关于文件指针的说法正确的是:A. fp 是指向 struct Student 类型的指针,存放一条学生记录的地址 B. fp 是指向 FILE 类型的指针,指向系统为该文件维护的文件信息区,读写函数须通过它引用文件 C. fp 本身就是文件在磁盘上的存储地址,读写时直接按该地址访问磁盘 D. 一个文件指针 fp 在关闭前可以重新指向另一个已打开文件,但不能再次赋值改变指向