全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
在一个集成开发环境中,某项目由 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. 只重新链接,不重新编译任何文件
登录后查看答案
在 C 语言中定义共用体类型:union Data { int i; char c; double d; }; 则 sizeof(union Data) 等于各成员所占字节数的____,即 8 字节;而共用体变量在同一时刻只能____其中一个成员的值。
设 `int a[6] = {14, 27, 35, 48, 62, 79}; int *p = &a[2];`。判断:表达式 `*(p+1)` 访问的是 `a[2]`,因为指针加一只移动一个字节。
在 C 程序开发过程中,源程序从编写到运行需经历编辑、预处理、编译、链接、运行等环节。若某环节未能成功完成,则其后续产物将不会产生。已知某开发者在编译 hello.c 时,链接阶段报告找不到被调用的函数定义,链接失败。此时程序的可执行文件____(填「已生成」或「未生成」),因此该程序____(填「能」或「不能」)被装入内存运行。
判断以下命题的正误。 设有如下 C 语言代码: void addOne(int *p) { (*p)++; } void addTwo(int *p) { int x = *p; x += 2; p = &x; } int main(void) { int a = 10, b = 10; addOne(&a); addTwo(&b); return 0; } 命题:程序执行完毕后,a 的值变为 11,b 的值变为 12,因为 addTwo 通过指针参数使得 b 被增加了 2。
若有定义 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 a = 5, b = 8; int *p, *q; 依次执行以下语句:① p = &a; ② q = p; ③ *q = b; ④ p = &b; 则执行完上述语句后,变量 a 的值为 ____,变量 b 的值为 ____,此时 *p 的值为 ____。
有如下 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
阅读以下C程序,写出运行后的输出结果(用空格分隔各整数): ```c #include <stdio.h> int g = 10; int f(int a) { static int s = 0; int g = 3; s = s + a + g; g = s * 2; return g; } int main() { int a = 1; printf("%d ", f(a)); printf("%d ", f(a)); printf("%d ", g); printf("%d", a); return 0; } ``` 输出结果为 ___。
C 语言中,若某函数定义在主调函数之后,则必须在主调函数之前对该函数进行____(填写“声明”或“定义”)。若函数不需要返回任何值,其返回值类型应写为____。
阅读以下 C 语言程序片段,判断说法是否正确: int level = 12; void revise(void) { int level = 20; { int level = 31; level = 44; } level = 25; } 调用 revise() 后,全局变量 level 的值为 25。
已声明并初始化 `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]);`
阅读下列 C 语言代码片段: int k = 3; int b[k]; int c[] = {2, 5, 8}; int d[5] = {1, 2}; 下列关于上述一维数组定义与初始化的判断中,正确的是____(填写序号:①/②/③/④/⑤,若有多项正确则按从小到大顺序连写,如①④)。 ① 语句 int b[k]; 合法,因为 k 是已初始化的整型变量,属于 C99 变长数组; ② 数组 c 的长度为 3,其元素依次为 c[0]=2、c[1]=5、c[2]=8; ③ 数组 d 的长度为 5,只有 d[0]、d[1] 被显式初始化,其余元素的值均为 0; ④ 语句 int c[];合法,编译器会自动确定数组长度为 0; ⑤ 数组 d 中 d[2] 未显式赋值,其值是不确定的随机值,不能保证为 0。
已包含头文件 <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. 程序出错
已包含头文件 <string.h>,若有 char x[] = "app"; char y[] = "apple"; 则执行 int r = strcmp(x, y); 后,r ___ 0(填 >、< 或 =)。
判断:在 C 语言中,若函数形参为普通变量(如 int x),调用时实参把值复制给形参,因此在函数体内修改形参 x 的值,不会影响调用处对应实参变量的值。
判断:执行声明 char a[] = "oak"; char b[3] = {'o', 'a', 'k'}; 后,a 和 b 都是以空字符结尾的字符串,因此调用 strcmp(a, b) 可定义地比较这两个字符串。
判断下列说法的正误:设有定义 int a[3][4];,则 a[1][2] 与 a[2][1] 引用的是同一个数组元素。
阅读以下程序,执行结束后输出的 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. 程序不会结束