全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
判断题:在 C 语言中,使用 fopen 函数以 "r" 方式打开一个不存在的文件时,fopen 会自动创建该文件并返回其指针。
登录后查看答案
判断:语句 struct Student { char name[20]; int age; struct Student next; }; 能正确定义一个可用的结构体类型。
某班 6 名学生的信息用结构体数组 s 存储,每个元素含成员 name、score、age。已知各元素的 score 依次为 78、92、85、92、67、92,age 依次为 20、19、21、19、22、19。执行以下代码后,变量 cnt 的值为 ____。 int cnt = 0; for (int i = 0; i < 6; i++) { int j = 0; for (int k = 0; k < i; k++) if (s[k].score == s[i].score && s[k].age == s[i].age) { j = 1; break; } if (!j && s[i].score > 80) cnt++; }
设有如下定义: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. 只重新链接,不重新编译任何文件
在 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(填 >、< 或 =)。