全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
#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
登录后查看答案
某源文件包含以下条件编译代码,且 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; 均保留
关于 C 语言条件编译的格式与作用,以下说法正确的是哪一项? A. 用 #if、#else、#endif 等指令按条件决定哪些源代码参与编译 B. 用 #if、#else、#endif 等指令在程序运行时决定执行哪条语句 C. 用 #if、#else、#endif 等指令定义函数的参数类型 D. 用 #if、#else、#endif 等指令自动创建被包含的头文件
在 C 语言程序中,已定义 struct Student stu; 并用 FILE *fp = fopen("data.txt", "rb"); 打开文件。若要通过 fp 完成读写操作,下列关于文件指针的说法正确的是:A. fp 是指向 struct Student 类型的指针,存放一条学生记录的地址 B. fp 是指向 FILE 类型的指针,指向系统为该文件维护的文件信息区,读写函数须通过它引用文件 C. fp 本身就是文件在磁盘上的存储地址,读写时直接按该地址访问磁盘 D. 一个文件指针 fp 在关闭前可以重新指向另一个已打开文件,但不能再次赋值改变指向
设有如下定义:union Data { int i; char c[4]; float f; }; union Data d; 在 32 位系统中,下列关于该共用体的叙述正确的是 A. 变量 d 的所有成员共用同一段起始地址相同的存储空间,d 占用的存储单元数是其最大成员 float 所需的 4 字节 B. 变量 d 占用成员所需空间之和,即 int、char[4]、float 共 12 字节 C. 变量 d 的三个成员各自占用独立的存储空间,修改 d.i 不影响 d.c D. 变量 d 的存储空间由编译器动态分配,每次只能同时保存所有成员的值
在一个集成开发环境中,某项目由 main.c 和 util.c 两个源文件组成,main.c 调用 util.c 中定义的函数 f,函数 f 的声明在 util.h 中且接口不变。此前所有文件已成功构建。现仅修改 util.c 中函数 f 的函数体,保存后执行“构建(Build)”命令。若该 IDE 支持增量构建,关于本次构建过程,下列说法正确的是: A. 重新编译 main.c 和 util.c,然后链接 B. 只重新编译 util.c,但不重新链接 C. 只重新编译 util.c,然后重新链接 D. 只重新链接,不重新编译任何文件
若有定义 struct student { char name[20]; int age; };,下列哪条语句能正确定义并初始化一个结构体变量 s,使 name 为 "Li"、age 为 18? A. struct student s = {"Li", 18}; B. struct student s = ("Li", 18); C. struct s = {"Li", 18}; D. student s = {"Li", 18};
有如下 C 程序(假设头文件包含、函数相互调用关系如下):文件开头仅有声明 int f(double x); main 函数中调用语句为 printf("%d", f(3.5)); 而文件末尾给出的定义首部为 double f(double x) { return (int)x; } 若程序编译,下列说法正确的是: A. 编译无错误,因为声明与定义中形参类型一致 B. 编译报错:函数 f 的声明类型与定义类型(返回值类型)不一致 C. 编译报错:实参 3.5 与形参 double x 类型不匹配 D. 编译无错误,且输出结果一定是 3
已声明并初始化 `int b[2][3] = {{17, 4, 29}, {8, 35, 12}};`。若要按列优先顺序遍历全部元素,使输出依次为 `17 8 4 35 29 12`,应选哪段代码? A. `for (int j=0;j<3;j++) for (int i=0;i<2;i++) printf("%d ",b[i][j]);` B. `for (int i=0;i<2;i++) for (int j=0;j<3;j++) printf("%d ",b[i][j]);` C. `for (int j=0;j<3;j++) for (int i=0;i<2;i++) printf("%d ",b[j][i]);` D. `for (int i=1;i>=0;i--) for (int j=0;j<3;j++) printf("%d ",b[i][j]);`
已包含头文件 <string.h>。设字符数组 s[] = "planet",执行语句 strcpy(s + 2, "X"); 后,s 中存储的字符串是()。 A. plX B. plXet C. planetX D. Xplanet
有以下程序: #include <stdio.h> void change(int x) { x = 20; } int main() { int a = 5; change(a); printf("%d", a); return 0; } 程序运行后的输出结果是? A. 5 B. 20 C. 0 D. 程序出错
阅读以下程序,执行结束后输出的 result 是多少? int active = 1, stage = 0, result = 0; while (active) { if (stage == 0) { stage = 1; continue; } result = 6; active = 0; } printf("%d", result); A. 0 B. 1 C. 6 D. 程序不会结束
阅读以下 C 语言循环片段: for (int i = 1; i <= 6; i++) { if (i == 2) continue; if (i == 5) break; printf("%d ", i); } 程序输出是什么? A. 1 3 4 B. 1 3 4 6 C. 1 2 3 4 D. 1 3 4 5
阅读以下程序段,判断最终输出的字符。 ```c int battery = 20, reserve = 6; if (battery >= 20) { if (reserve > 6) printf("X"); else printf("Y"); } else if (battery > 15) { printf("Z"); } else { printf("W"); } ``` A. X B. Y C. Z D. W
设有如下C程序片段: int x = 5; int f() { int x = 1; x = x + 1; return x; } int g() { x = x + 2; return x; } 主函数中依次执行:printf("%d", f()); printf("%d", g()); printf("%d", x); 三条语句的输出依次为: A. 2 7 7 B. 2 7 5 C. 2 9 5 D. 6 8 5
某运行时采用标记-清扫式垃圾回收,堆容量为 300 个单位,地址从 0 到 299。对象按地址递增连续分配:A 占 [0,39],B 占 [40,69],C 占 [70,119],D 占 [120,159],E 占 [160,199],F 占 [200,239],G 占 [240,299]。根集合仅含 A、E;引用关系为 A→B,B→C,E→F。回收后,不可达对象所占区域成为空闲块,相邻空闲块合并,空闲块按地址递增组成空闲链表,采用首次适应分配。现请求分配一个大小为 45 个单位的新对象,其起始地址是? A. 120 B. 160 C. 240 D. 分配失败
已定义 int a; float x; char c;,键盘依次输入:42␣3.14y(空格分隔,y 紧跟其后,无空格),执行语句 scanf("%d %f %c", &a, &x, &c); 后,变量 c 中存储的字符是什么? A. 空格字符 B. y C. 3 D. 未定义
在某嵌入式项目的 C 源码中,有以下变量定义与初始化片段(假设位于函数体内):int m = 5, n = m + 2; double x = n / 2; char c = 'A' + 2; 下列关于该片段的判断,正确的是:A. n 的初值为 7,x 的初值为 3.5,c 的初值为 'C' B. n 的初值为 7,x 的初值为 3.0,c 的初值为 'C' C. n 的初值为 7,x 的初值为 3.0,c 的初值为 'A' D. 该片段不合法,因为定义 n 时不能用含变量 m 的表达式初始化
在符合标准的 C 语言中,设 int a = 13; float f = 2.75f; 表达式 (int)(a / 5 + f) + (double)(a % 5) / 2 的值是多少? A. 5.0 B. 5.5 C. 6.0 D. 6.5
符合 C11 标准的任意实现中,short int 至少保证能够表示下列哪个范围? A. −32767 至 32767 B. −32768 至 32767 C. 0 至 65535 D. −2147483647 至 2147483647