第 2 次作业 · 指针、结构与文件

客观题来自课程保存的答案 PDF。编程题只保存了提交代码与少量输入输出文件,独立题面缺失,故不补写未能确认的格式要求。

选择题

1. 与 int *q[5]; 等价的定义是什么?

展开答案

int *(q[5]);,对应 C;q 是含 5 个 int * 的数组。

2. int (*ptr)[M]; 中的 ptr 是什么?

展开答案

指向含 MM 个整型元素的一维数组的指针,对应 C。

3. 题给指针表达式中,哪一项的数值不为 3?

展开答案

p1=x+2, *(p1++),对应 C。

4. 哪个指针数组说明语句正确?

展开答案

int a[5], *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};,对应 B。

5. 已知 int a,*p=&a;,哪个 printf 调用错误?

展开答案

printf("%d",p);,对应 D;%d 与指针类型不匹配。

6. fscanf 的正确调用形式是什么?

展开答案

fscanf(文件指针, 格式字符串, 输入表列),对应 D。

7. 结构变量按值传入函数并在函数内改形参,主程序输出什么?

展开答案

仍输出 20041 703,对应 D;被修改的是结构形参副本。

8. 题给结构指针表达式中,哪个值为 11?

展开答案

++pt->x,对应 C。

9. typedef struct node {...} OLD; 中,OLD 是什么?

展开答案

结构类型别名,对应 C。

10. 题给结构数组与指针中,哪个表达式值为 2?

展开答案

*(++p)->m,对应 D。

11. 怎样把嵌套结构中的生日设为 1988 年 5 月 10 日?

展开答案

依次给 s.birth.year、s.birth.month、s.birth.day 赋值,对应 D。

12. 题给结构数组中,哪个表达式得到第二个结点的 age 字段 1002?

展开答案

源答案为 (*++p).age,对应 D。

13. 哪种匿名结构与变量定义方式错误?

展开答案

先定义匿名结构变量 student,随后再写 struct student std1; 的方式错误,对应 D;前一步没有声明结构标记 student。

14. 对 struct strutype {...} var;,哪项叙述错误?

展开答案

“var 是用户定义的结构类型名”错误,对应 C;var 是结构变量。

15. 已知结构指针 p=&std,哪种成员引用不正确?

展开答案

*p.age 不正确,对应 D;应写 p->age 或 (*p).age。

填空题

1. 三次调用 sub(x,y,&z),函数执行 *z=y-x,最终输出什么?

展开答案

-5,-12,-7。

2. swap(int *p,int *q) 只交换局部指针变量,主程序中的 a、b 是否交换?

展开答案

没有,输出 a=10,b=20。

3. p=&a[2] 后依次输出 ++*p 和 *--p,结果是什么?

展开答案

4 2。

4. 手写字符串连接函数的循环赋值处填什么?

展开答案

源答案为 *t。每次把当前源字符赋给目标尾部,并在复制到 \0 后结束。

5. 结构数组指针执行 printf("%c",*(++p)->y); 输出什么?

展开答案

输出 c。

编程题提交

五子棋危险判断

查看提交实现

提交在二维棋盘上枚举起点,分别检查水平、竖直和两个对角方向连续四个同色棋子,并判断线段前后是否至少有一个空位,从而返回存在威胁的一方。

加密文件

查看提交实现

源目录保存 encrypt.txt、output.txt 和提交代码。实现逐字符读文件,按提交中规定的字符变换写出结果;独立题面与密钥规则未保存,因此这里不把代码中的规则扩写成教师原题。

通讯录整理

查看提交实现

提交从文件读取记录,按姓名比较并整理输出。它与“加密文件”保存在同一子目录,但代码任务彼此独立,故在本次作业中分别记录。

字符串替换(新)

查看提交实现

提交读取 filein.txt,查找目标字符串并生成替换后的 fileout.txt。源中同时有根目录 .cpp 和子目录 .c 版本;它们属于同一任务,这里去重为一项。

小型图书馆管理系统

查看提交实现

提交从 books.txt 读取图书记录,用结构数组保存并按关键字段排序,将整理结果写入 ordered.txt。任务展示了结构、文件与排序的组合使用。

评论