第一周 实验与开发环境的安装和使用

第一周测验

1、单选题:
​在安装Linux系统时,必须创建的供Linux系统使用的磁盘分区是(    )‎
选项:
A: 交换(swap)分区
B: home分区
C: 根分区
D: boot分区
答案: 【 根分区

2、单选题:
​下列任务的执行中不需要root管理员权限的是(    )‌
选项:
A: 安装和删除系统软件包
B: 运行reboot命令重启系统
C: 使用gcc工具从C源文件编译系统软件程序
D: 使用mkdir命令在根目录中创建新的子目录
答案: 【 使用gcc工具从C源文件编译系统软件程序

3、单选题:
‏下列选项中,不属于objdump程序的功能的是(    )‌
选项:
A: 反汇编二进制程序中的机器指令
B: 显示输出二进制程序中的符号表、源程序语句等调试信息
C: 跟踪、调试二进制程序的运行
D: 显示输出二进制程序中指定节的内容
答案: 【 跟踪、调试二进制程序的运行

4、单选题:
​使用gdb工具跟踪一个从C源文件编译生成并包含调试信息的可执行程序时,si命令的功能是(    )‌
选项:
A: 执行一条C语句;如是过程调用语句,则停止在目标过程中的第一条C语句
B: 执行一条C语句;如是过程调用语句,则停止在目标过程返回后的第一条C语句
C: 执行一条机器指令,如是过程调用指令,则停止在目标过程中的第一条机器指令
D: 执行一条机器指令,如是过程调用指令,则停止在目标过程返回后的第一条机器指令
答案: 【 执行一条机器指令,如是过程调用指令,则停止在目标过程中的第一条机器指令

5、单选题:
​使用gdb工具跟踪一个从C源文件编译生成并包含调试信息的可执行程序时,s命令的功能是(    )‌
选项:
A: 执行一条C语句;如是过程调用语句,则停止在目标过程中的第一条C语句
B: 执行一条C语句;如是过程调用语句,则停止在目标过程返回后的第一条C语句
C: 执行一条机器指令,如是过程调用指令,则停止在目标过程中的第一条机器指令
D: 执行一条机器指令,如是过程调用指令,则停止在目标过程返回后的第一条机器指令
答案: 【 执行一条C语句;如是过程调用语句,则停止在目标过程中的第一条C语句

6、单选题:
‌计算机系统采用层次化结构,从最上面的应用层到最下面的硬件层,其层次化构成为(    )‌
选项:
A: 高级语言虚拟机-操作系统虚拟机-汇编语言虚拟机-机器语言机器
B: 高级语言虚拟机-汇编语言虚拟机-机器语言机器-操作系统虚拟机
C: 高级语言虚拟机-汇编语言虚拟机-操作系统虚拟机-机器语言机器
D: 操作系统虚拟机-高级语言虚拟机-汇编语言虚拟机-机器语言机器
答案: 【 高级语言虚拟机-汇编语言虚拟机-操作系统虚拟机-机器语言机器

7、单选题:
‍以下有关程序编写和执行方面的叙述中,错误的是(    )‍
选项:
A: 可用高级语言和低级语言编写出功能等价的程序
B: 高级语言和汇编语言源程序都不能在机器上直接执行
C: 编译程序员必须了解机器结构和指令系统
D: 汇编语言是一种与机器结构无关的编程语言
答案: 【 汇编语言是一种与机器结构无关的编程语言

8、单选题:
​在gcc命令行上单独使用下列哪个选项,可将一个C源程序文件转换为对应的汇编源程序文件? (    )‍
选项:
A: -c
B: -o
C: -S
D: -E
答案: 【 -S

9、单选题:
‌一个C源程序文件p1.c的内容如下:​‌extern int s;​‌int foo( int n )  {​‌    return n*s;​‌}​‌另一C源程序文件p2.c的内容如下:​int foo( int );​int main()  {​    return foo(-1);​}​执行命令”gcc -o test p1.c p2.c“后将产生下列哪个结果? (    )​‌​
选项:
A: 编译生成名为”test“的可执行程序
B: 编译生成名为”test.s“的汇编源程序文件
C: 启动test程序开始跟踪和调试
D: 输出错误信息
答案: 【 输出错误信息

10、单选题:
​下列选项中,不能作为gdb调试工具的break命令的断点目标的是 (    )‍
选项:
A: C源程序文件中的行号
B: C源程序文件中的函数/过程名
C: 可执行程序的代码段中的地址
D: C源程序文件中的变量名
答案: 【 C源程序文件中的变量名

11、单选题:
​假定一个C源程序文件test.c的内容如下:‏​#include <stdio.h>‏​int main()  {‏​    printf("Hello, world!")‏​    return 0;‏​}‏​现运行命令”gcc -o test test.c 2> output.txt“,则文件output.txt中的内容是(    )‏
选项:
A: gcc编译生成的test可执行程序的内容
B: gcc编译生成的test.o模块文件的内容
C: test可执行程序运行时的输出
D: gcc编译过程中的输出
答案: 【 gcc编译过程中的输出

12、单选题:
假设tect.c是一个c语言源程序,现依次执行命令"gcc -O0 -m32 -g test.c -o test"和“objdump -S test>test.txt”。下列选项中,不属于test.txt中的内容的是(    )‎
选项:
A: test.c的源代码
B: test.c的源代码对应的机器指令
C: 机器指令反汇编后的汇编指令
D: 机器指令存储的内存地址
答案: 【 机器指令存储的内存地址

第二周 C语言编程实践

第二周测验

1、单选题:
‍假定两种浮点数表示格式的位数都是32位,但格式1的阶码长、尾数短,而格式2的阶码短、尾数长,其他所有规定都相同。则它们可表示的数的精度和范围为(    )‌
选项:
A: 两者可表示的数的范围和精度均相同
B: 格式1可表示的数的范围更小,但精度更高
C: 格式2可表示的数的范围更小,但精度更高
D: 格式1可表示的数的范围更大,且精度更高
答案: 【 格式2可表示的数的范围更小,但精度更高

2、单选题:
‍假定某数采用IEEE 754单精度浮点数格式表示为4510 0000H,则该数的值是(    )​
选项:
A:
B:
C:
D:
答案: 【 

3、单选题:
‏假设x和y是某C语言程序中的两个char型变量,x=0x5F和y=0xA0,根据C语言中的按位运算和逻辑运算的定义,x^y、x&y、x|y、~x|~y的结果是(    )‏
选项:
A: 0xFF,0x0F,0xFF,0xFF
B: 0xFF,0x00,0xFF,0xFF
C: 0xFF,0x00,0x0F,0xFF
D: 0xFF,0x00,0xFF,0x0F
答案: 【 0xFF,0x00,0xFF,0xFF

4、单选题:
​对于一个n(n≥8)位的变量x,请根据C语言中按位运算的定义,给出C语言表达式使得x的最高有效字节不变,其余各位全变为0 ——(    )​
选项:
A: (x>>(n-8))<<(n-8)
B: x & 0xFF
C: ((x^ ~0xFF) >>8 )<< 8
D: x | 0xFF
答案: 【 (x>>(n-8))<<(n-8)

5、单选题:
‍对于一个n(n≥8)位的变量x,根据C语言中按位运算的定义,表达式((x^ ~0xFF) >>8 )<< 8的功能是(    )‍
选项:
A: x的最高有效字节不变,其余各位全变为0
B: x的最低有效字节不变,其余各位全变为0
C: x的最低有效字节全变为0,其余各位取反
D: x的最低有效字节全变1,其余各位不变
答案: 【 x的最低有效字节全变为0,其余各位取反

6、单选题:
‌若f为某IEEE754单精度浮点数的机器表示,f的真值为a,则以下代码实现的功能是(    )‎‌unsigned int float_neg(unsigned int f)‎‌{‎‌    unsigned exp=f>>23&0xFF;‎‌    unsigned frac=f&0x7FFFFF;‎‌    if (exp==0xFF)&&(frac!=0)‎‌        return f;‎‌    else‎‌        return f ^ 0x80000000;‎‌}‎‌‎
选项:
A: 令f的真值为2a
B: 令f的真值为|a|
C: 令f的真值为-a
D: 令f的真值为0.5a
答案: 【 令f的真值为-a

7、单选题:
‍以下哪一种情况能很好地发挥cache的作用? —— (    )‎
选项:
A: 程序中不含有过多的I/O操作
B: 程序的大小不超过实际的内存容量
C: 程序具有较好的访问局部性
D: 程序的指令间相关度不高
答案: 【 程序具有较好的访问局部性

8、单选题:
‌在存储器分层体系结构中,存储器从容量最大到最小的排列顺序是(    )‏
选项:
A: 主存-辅存-cache-寄存器
B: 辅存-cache-主存-寄存器
C: 辅存-主存-cache-寄存器
D: 辅存-主存-寄存器-cache
答案: 【 辅存-主存-cache-寄存器

9、单选题:
​在主存和CPU之间增加cache的目的是(    )‏
选项:
A: 增加内存容量
B: 提高内存可靠性
C: 加快信息访问速度
D: 增加内存容量,同时加快访问速度
答案: 【 加快信息访问速度

10、单选题:
‌以下关于IA-32/Linux异常处理和中断处理的叙述中,错误的是(    )‏
选项:
A: Linux需要针对IA-32的256个中断设置IDT对应表项的内容,即进行IDT的初始化
B: Linux对大多数异常的处理方式是发送相应信号给用户进程以尽快结束异常处理过程
C: Linux中异常处理的C函数名由do_前缀和处理程序名组成,与相应信号处理程序名相同
D: Linux中对中断的处理不采用发送信号给用户进程的方式,而是对相应中断进行具体处理
答案: 【 Linux中异常处理的C函数名由do_前缀和处理程序名组成,与相应信号处理程序名相同

11、单选题:
‎以下关于IA-32/Linux信号机制的叙述中,错误的是(    )‏
选项:
A: Linux总是采用向发生异常的进程发送信号的机制实现异常处理
B: 向进程发送信号的机制实现异常处理,可以尽快完成在内核态的异常处理过程
C: 用户可以自定义信号处理函数,并将其注册为某个信号的处理函数
D: 采用信号处理机制,是为了尽量避免嵌套执行异常或中断
答案: 【 Linux总是采用向发生异常的进程发送信号的机制实现异常处理

第三周 程序调试与实践数据的存储与运算

第三周测验

1、单选题:
‍考虑以下C语言代码:​‍short si= -8192;​‍unsigned short usi=si;​‍执行上述程序段后,usi的值是(    )​‍​
选项:
A: -8192
B: 8192
C: 57343
D: 57344
答案: 【 57344

2、单选题:
​8位补码定点整数1001 0101右移一位后的值为(    )‍
选项:
A: 0100 1010
B: 0100 1011
C: 1000 1010
D: 1100 1010
答案: 【 1100 1010

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注