ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:20.13KB ,
资源ID:17256055      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17256055.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(05级Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

05级Word文档格式.docx

1、并且数组a在内存中的起始地址为0x10000,那么a5的地址是( ) q) 0x10005r) 0x10014s) 0x10016t) 0x100206. 在地址和整数都为32位宽的计算机里,编译器要为下面的代码片段分配多少字节的内存?int a;int * b = &a;u) 4v) 8w) 16x) 327. 在基于IA32的计算机硬件体系中,如果规定结构成员对齐为4Bytes,那么,对于结构体 struct S1 int i;char c;int j; 其在内存中分配的字节数为:y) 3 Byteszz) 5 Bytesaa) 9 Bytesbb) 12 Bytes8. 按照下列声明的顺

2、序,最后一行可以改写为:ptr = a + 5;*ptr+ = x;cc) a6 = x;dd) ptr = x; *ptr+;ee) ptr = ptr + 1; *ptr = x;ff) a5 = x; ptr = ptr + 1;9.对于char *pa10;的描述,( )是正确的gg) pa是一个指向数组的指针,所指向的数组是10个char 型元素hh) pa是一个指向某数组中第10个元素的指针,该指针是char型变量ii) pa5表示某个数组的第5个元素的值jj) pa是一个具有10个元素的指针数组,每一个元素是一个char 型指针10. 下面的程序会( )main() int x=

3、10,y=5,z=5; if(z=x-2*y) printf(“*”); else printf(“#”); kk) 有语法错误不能通过编译 ll) 可以通过编译,但不能通过连接,因而不能运行mm) 输出*nn) 输出#11. 考虑下面的代码: char a100; a99 = *(char *) (int) &a0) + 4) 如果整数为32位宽,下面哪个值等于a99?oo) a0 + 4pp) a3qq) a4rr) the integer stored in the bytes a4, a5, a6 and a712. 考虑一下代码片段: #include int callee(void

4、) int count = 5; printf(%d , (int) &count); return count;int main (int argc, char *argv) int count = 4; count = callee(); return 0; 下面哪项正确地描述了程序输出结果?ss) 两个不同的整数被打印,并且从所给信息无法得知其中的任何一个值tt) 同一个整数被打印两次,并且它的值无法从所给信息中得知uu) 5在同一行被打印两次vv) 5和4按顺序在同一行被打印13. 阅读下列代码,判断下面几句话中哪句关于输出的描述是正确的?( )int * jp = &i;int ma

5、in(int i, char * argv) %d %dni, (int) jp);ww) 两个不同的整型数xx) 两个完全相同的整型数yy) 无结果,因为代码含糊无法编译zzz) 两个值,其中一个是4,另一个比4小14.考虑下面的代码片断:int factorial(int * arg) int n = *arg; if (n = 1) return n; return n * factorial(n - 1);在上面的代码片段执行过程中,变量n被分配到 ( )aaa) 许多地址,并且编译器不知道其中的任何一个地址bbb) 编译器选定的许多地址ccc) 仅一个地址,并且该地址由编译器选定dd

6、d) 仅一个地址,并且编译器不知道该地址15 以下程序的输出结果是 ( ) func1(int a, int b) return (a+b); func2(int a, int b) return (a-b); func3(int (*t)(), int x, int y) return (*t)(x,y); main() int x, (*p)(int,int); p=func1; x=func3(p,9,3); x+=func3(func2,8,3); printf(“%dn”,x);eee) 3fff) 9ggg) 17hhh) 27 16.下面哪一个负责数据从CPU寄存器到缓存的传输?

7、iii) 硬件jjj) 操作系统kkk) 寄存器lll) 编译器 17.假设你的计算机是32位,具有128个32字节的直接映射缓存线。在下面的代码中,编译器在地址0x800000处分配数组a,在地址0x801000处分配数组b。在该代码执行前,假设a和b从未被使用,因此它们不会在缓存中。请问,在执行这段代码时,a和b数组能够从内存读入缓存的最小字节分别是多少?int b1024;int a1024;for (i = 0; i 17; sum += ai + bi, i+);mmm) 17nnn) 68ooo) 96ppp) 1088 18.通过调用以下的函数,关于缓存的哪些事实能够判定?int

8、 data1 20;void callee(int x) int i, result; for (i = 0; (1 20); i += x) result += datai;I. 缓存线大小II. 缓存大小III. 缓存速度qqq) 只有Irrr) I和IIsss) I和IIIttt) I、II和III19 下面哪个对存储层次结构(memory hierarchy)的描述正确? ( )uuu) 存储层次结构使得代码执行变慢,但是允许它们规模增加vvv) 存储层次结构既利用了SRAM的速度,又考虑了磁盘的空间www) 存储层次结构是一种决定内存分配策略的方法xxx) 存储层次结构限制了程序的大

9、小,但是允许它们执行得更快 20 阅读下面C代码片段: char q=do not overflow char r= memory char s24; strcpy(s,q); strcat(s,r); int len=strlen(s);问:当该代码片段执行完毕时,变量len的值是( ) yyy) 21zzzz) 22aaaa) 23bbbb) 24 二、 改错题。请指出下面代码的错误之处,给出正确代码,并说明错误的原因。(1-6题每题2分,7-10题每题3分,共24分)示例: y = x*300.0f -2000.0 (缺少结束符“;”) 正确代码:y = x*300.0f -2000.0

10、;1、 程序员意图:由用户输入变量i和d的值,然后由系统输出。(2分)double d;scanf(%d %g, i, d);printf(2、 程序员意图:数组动态分配,并给某一数组成员赋值。#define ARRAY_SIZE 100int *a = (int *) malloc(ARRAY_SIZE);a99 = 0;3、 程序员意图:如果指针a指向的值大于0,则使该值减去1。void dec_positive(int *a) *a-; / decrement the integer if (*a 0) *a = 0; / make sure a is positive4、 程序员意图:

11、动态分配一个Amn的数组,并充分考虑代码在不同硬件上的通用性。int *makeArray1(int n, int m) int i; int *A = (int *)Malloc(n * sizeof (int); for (i=0; iname = (char *) malloc(M);address = (char *) malloc(N); free(p);9、 程序员意图:搜索一个符合条件的指针。int *search(int *p, int val) while (*p & *p != val) p += sizeof(int); return p;10、 程序员意图:将array

12、数组初始化为从0到9的10个数。#define ARRAY_SIZE 10void natural_numbers (void) int arrayARRAY_SIZE; i = 1; while (i = ARRAY_SIZE) arrayi = i - 1; i = i + 1;三、 简答与计算题(36分)1. 解释静态分配与动态分配的概念及它们的不同点,并说明它们的用途。(6分)静态分配在全局中声明变量,或在函数体中用static,在声明时若没被赋初值则赋为0,放置于栈的最低层中,生命周期是整个程序的生命周期。在编译阶段决定。动态分配通过在函数调用中声明局部变量实现,生命周期是此函数的生

13、命周期,动态分配有堆分配与栈分配2种方式。2. 简述使用堆栈进行函数调用的过程。第一步:压参,由右至左入栈第二步:压入函数返回地址。第三步:压入Frame Pointer。第四步:压入声明的变量第五步:执行函数的代码第六步:将返回值压入寄存器中。第七步:将SP设定至为Frame Pointer第八步:弹出栈顶元素(Frame Pointer)第九步:弹出栈顶元素(Return Address)并返回函数简要解释80/20原理和Amdahl定律。说明对代码进行性能定量量测可以采用哪些方法,这些方法各自具有哪些优点,又具有哪些缺点。直意为80%时间是由20%的代码耗费的,也就是每个程序都存在性能提

14、升的瓶颈,只要克服了这个瓶颈,性能就会大大提升。Amdahl定律为(公式),揭示了被优化的代码在被优化后与优化前的时间对比。3. 请画出计算机中内存层次结构的金字塔结构,并说明内存缓存(cache)的优点。4. 3M决定在白纸上印黄方格,做成小贴纸。这个过程中,他们需要设置方格中每个点的CMYK(蓝色,红色,黄色,黑色)值。3M雇佣你判定下面算法在一个2048字节、直接映射、块大小为32字节的数据高速缓存上的有效性。有如下定义:struct point_color int c; int m; int y; int k;struct point_color square1616;int i, j;有如下假设: sizeof(int) = 4; square起始于存储器地址0; 高速缓存起始为空; 惟一的存储器是对于square数组中的元素。变量i和j被存放在寄存器中。a. 确定下列代码的高速缓存性能: 16; i+) for (j = 0; j j+) squareij.y = 1; squareij.c = 0; squareij.m = 0; squareij.k = 0;写总数是多少?在高速缓存中命中的写总数是多少?命中率是多少?b. 要提高a小题中代码的缓存命中率,可以采取什么方法?(即怎样改写代码?)写出改写后的代码,并计算出你改写后的代码的命中率,以证明代码确实已改良。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1