第一章单选题
1.2.0_60_1 hello.c在( b )阶段在编译过程中生成hello.o
A. 预处理阶段 B.编译阶段 C.汇编阶段 D.链接阶段 1.2.0_60_2 hello.c在编译过程中通过编译器(ccl)翻译为文本文件 ( b )
A. hello.o B. hello.s C. hello.i D. hello.c
1.4.1_60_3 处理器执行程序时,用( a )来存放程序和程序处理的数据 A. 主存 B. 寄存器 C. 磁盘 D. 网盘
1.4.1_60_4 处理器在指令的要求下将一个字节从主存复制到寄存器的操作是 ( b ) A. 存储 B. 加载 C. 操作 D. 跳转 1.4.1_60_5 利用( b )技术,数据可以不通过处理器直接从磁盘到达主存。
A. 随机存储器 B. 高速缓存存储器 C. 物理存储器 D. 直接存储器
1.4.1_60_6 代码和数据被加载到( d )处理器就开始执行main程序中的机器语言指令。 A. 寄存器 B. 主存 C. 磁盘 D. 程序计数器 1.6.0_60_7 位于存储器层次结构中的最顶部的是( a )。
A. 寄存器 B. 主存 C. 磁盘 D. 高速缓存 1.7.1_60_8 下面( a )是对处理器、主存和I/O设备的抽象表示。
A. 进程 B. 虚拟存储器 C. 文件 D. 虚拟机
1.7.3_60_9 当系统从主存将一串字节复制到网络适配器时,数据流经过网络到达( c )。 A. 本地寄存器 B. 另一台主机 C. 本地磁盘 D. 网盘
1.8.0_60_10 当调用malloc这样的C标准库函数时,( a )可以在运行时动态的扩展和收缩。 A. 栈 B. 堆 C. 共享库 D. 内核虚拟存储器
第二章单选题
2.1.2_60_1(a)是计算机中表示信息的最小单位。 A) 位 B) 字 C) 字节 D) 字长
2.1.4_60_2计算机在内存中存储数据时使用了大、小端模式,请分别写出A=0X123456在不同情况下的首字节是?大端模式?小端模式? x86结构的计算机使用 ( a)模式。 A.0X12 0X56 小端 B.0X56 0X12 大端 C.0X56 0X12 小端 D.0X12 0X56 大端
2.1.9_60_3已知 a=48, b=0, ch = 'a' 则表达式(a>=b && ch<'b' && !b)的值是(b 。 A.0 B.1 C.真 D.非 0
2.2.4_60_4设 unsigned int a; int b= -1;a = b; printf(\输出结果( a A.1 B.-1 C.0 D.65535
2.2.5_60_5 当一个有符号数和一个无符号数执行运算后的结果是(b ) A.有符号数 B.无符号数 C.不一定
2.3.1_60_6在无符号加法中发生了溢出的是( d A.x+y=x B. x+y=y C. x+y>x D. x+y 2.3.2_60_7在补码加法中发生了负溢出的是( c A.x+y=x+y-2w B. x+y=-2w C. x+y=x+y+2w D. x+y 2.3.5_60_8 int x,y; unsigned ux=x; unsigned uy=y;下列表达式为真的是(c) A.(x>0)||(x-1<0) B. x*~y+uy*ux==-x C. x>0|| -x>=0 D. (x*x)>=0 2.4.2_60_9 有一个8位的规格化浮点数,有k=4位阶码为位,指数e=7,f=0则其位表示为() A.00110111 B.00110110 C.01101110 D.00111010 2.4.5_60_10 变量x、f、d分别为int,float,double类型的,除了f和d不能等于无穷大和NAN以外值可以任意选取,下面表达式为真的是(c) A.x==(int)(double)x B.x==(int)(float)x C.d==(double)(float)d D.(f+d)-f==d 第三章单选题 3.2.1_60_1在程序执行过程中,IP寄存器中始终保存的是( b A.上一条指令的首地址 B.下一条指令的首地址 C.正在执行指令的首地址 D.需计算有效地址后才能确定地址 3.2.1_60_2 8086CPU在基址加变址的寻址方式中,变址寄存器可以为(c) A.BX或CX B.CX或SI C.DX或SI D.SI或DI 3.2.3_60_3 下面关于intel汇编代码格式说法错误的是 (a A.带有指示大小的后缀 B.省略了寄存器名字前缀‘%’ C.可以用[ebp+8]描述存储器中的位置 D.和ATT格式列出的操作数顺序相反 3.5.1_60_4在下列指令中,______指令的执行会影响条件码中的CF位。(c) A.JMP NEXT B.JE NEXT C.INC BX D.SHL AX,1 3.5.1_60_5已知(AX)=1234H,执行下述三条指令后,(AX)=(d) MOV BX,AX NEG BX ADD AX,BX A.1234H B.0EDCCH C.6DCCH D.0000H 3.5.5_60_6将DX的内容除以2,正确的指令是(c) A.DIV 2 B.DIV DX,2 C.SAR DX,1 D.SHL DX,1 3.6.3_60_7 条件转移指令JNE的测试条件为(a) A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 3.7.1_60_8 设一个栈的输入序列为A,B,C,D,则所得到的输出序列不可能是(c) a. A,B,C,D b. D,C,B,A c. A,C,D,B d. D,A,B,C 3.10.0_60_9 在说明语句:int *f();中,标识符f代表的是 (d) A. 一个用于指向整型数据的指针变量 B. 一个用于指向一维数组的行指针 C. 一个用于指向函数的指针变量 D. 一个返回值为指针型的函数名 3.10.0_60_10若有定义:int x,*pb; 则以下正确的赋值表达式是(a ) A. pb=&x B. pb=x C. *pb=&x D. *pb=*x 第五章单选题 5.1.0_60_1 在某些极端要求性能的场合,我们需要对程序进行优化,关天优化,以下说法正确的是(d) A. 将程序整个用汇编语言改写会大大提高程序性能 B. 在优化前,可以先确定哪部分代码最费时,然后对这部份代码用汇编改写,使用汇编的语句越少,程序运行的越快。 C. 使用汇编语句虽然可以提高程序的性能,但会降低程序的可移植性,所以应该绝对避免 D. 适当调整汇编指令的顺序,可以缩短程序的运行时间 5.1.0_60_2下列关于编程优化的说法正确的是(d) A. 使用编译器的优化选项后程序性能一定会获得提高 B. 循环展开得越多越彻底,程序的性能越好 C. 寄存器分配能够解决程序中的数据依赖问题 D. 现代主流C/C++编译器可以对简单的小函数进行自动Iinline 5.2.0_60_3下列不能表示程序性能的方式有(c) A. 每元素的周期数(Cycles Per Element, CPE) B. 运行一次该程序需要的时间 C. 运行一次改程序需要的内存 D. 运行一次该程序占用的CPU指令周期 5.4.0_60_4关于消除循环的低效率,下列说法不正确的是(c) A. 多重循环中,应当将最短的循环放在最内层,最长的循环放在最外层,以减少CPU跨循环层执行的次数 B. 如果在循环体内,存在逻辑判断,并且循环次数很大,应将逻辑判断移到循环体的外面 C. 优化循环的结构时,还需要考虑到数据结构本身的效率 D. 优化循环的结构时,最重要是需要优化循环内部的代码 5.4.0_60_5 x=2,y=100,在下面的for循环中,min(),max(),inc()各会被执行多少次(c) for(i=min(x,y);i Int t=t+I; } A. 1,99,98 B. 99,99,99 C. 1,99,99 D. 1,100,100 5.5.0_60_6关于减少过程调用,下列说法不正确的是() A. 减少过程调用将优化程序模块性 B. 为了减少时间开销,如果在类体中定义的成员函数中不包括循环等控制结构,C++系统会自动将它们作为内置(inline)函数来处理。 C. inline函数其实是把函数代码嵌入程序的调用点中 D. inline函数可以减少程序执行过程中对CPU的中断次数 5.6.0_60_7关于消除不必要的存储器引用,下列说法不正确的是(d) A. 可以将迭代计算的值累计放入一个临时变量中,计算完成时再写入内存 B. 消除不必要的存储器引主要减少的是对存储器的写操作 C. 消除循环内不必要的存储器引用可以显著的提高程序性,且存储器系统的结构无关 D. 编译器无法做出类似消除不必要的存储器引用优化 5.7.0_60_68关于现代处理器,下列说法正确的是(b) A. 程序性能的优化没有终极限制 B. 在实际的现代处理器中,是可以同时对多条指令进行求值 C. 任何指令之间均可以进行并行执行 D. 使用更多的变量进行流水线并行计算可以提高程序的性能 5.8.0_60_9关于循环展开,下列说法不正确的是(d) A. 循环展开能够能减少一些不必要的循环索引计算和条件分支 B. 循环展开需要确保第一次循环不会超出数组的界限 C. 循环展开只能改进整数加法和成分的性能