版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 、19、#defineMAX_LEN254unsignedcharArrayMAX_LEN;intmain(intargc,char*argv)inti;for(i=0;i=MAX_LEN;i+)Arrayi=i;return;程序的错误为():A、B、A、B、C、D、i=MAX_LEN时,赋值溢出return无返回值20、#defineBUFFER_SIZE256voidGetMemory(char*ppszBuf)if(NULL=ppszBuf)ASSERT(0);return;*ppszBuf=(char*)malloc(BUFFER_SIZE);return;voidTest(voi
2、d)char*pszBuf=NULL;GetMemory(&pszBuf);strcpy(pszBuf,helloworldrn);printf(%s,pszBuf);free(pszBuf);return;下面说法正确的是():A、pszBuf的值永远为NULL;B、malloc内存后没有判断是否成功;C、strcpy拷贝越界;D、GetMemory无法将申请的内存地址传递给pszBuf;21、如下程序用于把blue字符串打印出来:voidPrintBLUE()charpcBlue=b,l,u,e;printf(%s,pcBlue);return;下面描述正确的是():A、pcBlue数组初
3、始化时没有字符串结束符;B、数组pcBlue定义时必须指明长度;22、请指出下面这段代码中的错误:unsignedlongFUNC_B(unsignedlongulCount)unsignedlongulSum=0;while(024,(ulLocIpAddr16)&0 xff,(ulLocIpAddr8)&0 xff,ulLocIpAddr&0 xff);returnszIpAddr;下面描述正确的是():A、数组szIpAddr空间不够;B、函数返回局部数组szIpAddr变量地址;C、输出的IP地址次序颠倒;24、如下程序用于把blue字符串返回:char*GetBLUE(void)ch
4、ar*pcColor;char*pcNewColor;pcColor=blue;pcNewColor=(char*)malloc(strlen(pColor);if(NULL=pcNewColor)returnNULL;strcpy(pcNewColor,pcColor);returnpcNewColor;下面描述正确的是:A、字符串“blue”存放在栈内;B、函数GetBLUE返回局部变量地址;C、内存空间分配长度不够,strcpy函数拷贝越界;25、如下代码实现中,FUNC_A为每毫秒定时执行的函数,在该函数中,需要实现每TIME_INTERVAL毫秒执行一次DO_Something()的
5、操作。请指出段代码中的错误:#defineULONGunsignedlong#defineTIME_INTERVAL200voidDO_Something(void)/*/return;voidFUNC_A()staticULONGulPreCall=0;ULONGulNowInMsHigh=0;ULONGulNowInMsLow=0;(VOID)VOS_Tm_Now(&ulNowInMsHigh,&ulNowInMsLow);/*获取当前的时间,以毫秒为单位,用64bits表示,ulNowInMsHigh为高32位,ulNowInMsLow为低32位*/if(0=ulPreCall)|(ul
6、NowInMsLow=(ulPreCall+TIME_INTERVAL)ulPreCall=ulNowInMsLow;elsereturn;DO_Something();return;A、函数FUNC_A第一次被调用时,不执行Do_Something()操作;B、函数FUNC_A功能在一段时间后失效,因为ulNowInMsLow溢出翻转;C、ulPreCall不应该定义为静态变量;26、下面的代码中,函数Test执行完毕后,希望输出1。请指出错误:voidVarInit(unsignedchar*pucArg)*pucArg=1;return;voidTest()unsignedlongulG
7、lobal;VarInit(&ulGlobal);printf(%lu,ulGlobal);return;下面描述正确的是:()给VarInit()函数传递的参数类型错误printf()输出格式错误传给VarInit()中参数pucArg的值为空指针TOC o 1-5 h z27、#defineOK0#defineERR1#defineERROR(-1)#defineBUFFER_SIZE256char*GetMemory(unsignedlongulSize)char*pcBuf=NULL;pcBuf=(char*)malloc(ulSize);if(NULL=pcBuf)returnERR
8、OR;returnpcBuf;voidTest(void)char*pszBuf=NULL;pszBuf=GetMemory(BUFFER_SIZE);if(NULL!=pszBuf)strcpy(pszBuf,HelloWorld!rn);printf(pszBuf);free(pszBuf);return;如下描述正确的是:A、pszBuf指向的内存不能超过255B、GetMemory函数的异常分支返回了-1,是一个非法地址C、GetMemory中异常分支没有释放空间;D、pcBuf为局部指针,指向的内存将在GetMemory被调用后释放28、voidAddFunc(unsignedint
9、a,unsignedintb,unsignedint*c)*c=a+b;voidmain(void)unsignedchare=200;unsignedcharf=100;unsignedcharg=0;AddFunc(unsignedint)e,(unsignedint)f,(unsignedint*)&g);printf(%d,g);下面说法正确的是():A对g进行类型转换导致函数调用时写内存越界;B对e、f进行类型转换导致函数调用时写内存越界;C函数调用时不能改变g的值。29、#defineNULL0#defineMEM_OK0#defineMEM_ERR1enumENUM_STAT_I
10、TEMSTAT_ITEM0,STAT_ITEM1,STAT_ITEM_BUTT;typedefstructtag_PERM_COUNT_STAT_INFOunsignedshortstat_item;unsignedshrotnumber;_SPermCountStatInfo;_SPermCountStatInfopcsiSTAT_ITEM_BUTT=STAT_ITEM0,16000,STAT_ITEM1,50000,unsignedlong*pulStatDataBuffer=NULL;unsignedshortAllocPermMemory(void)unsignedshortusBuf
11、ferSize=0;unsignedshortusLoop=0;for(usLoop=0;usLoopSTAT_ITEM_BUTT;usLoop+)usBufferSize+=pcsiusLoop.number;pulStatDataBuffer=(unsignedlong*)malloc(sizeof(unsignedlong)*usBufferSize);if(NULL=pulStatDataBuffer)returnMEM_ERR;returnMEM_OK;下面说法正确的是():Aunsignedshort类型不能表示循环体中将16000与50000相加的和66000B数组pcsi的nu
12、mber域是unsignedshort类型,不能表示50000这么大的数字C循环条件应该改为usLoopv=STAT_ITEM_BUTT30、设有如下定义:BOOLgstatusA=FALSE;BOOLgstatusB=TRUE;intgvarA=100;intgvarB=100;则执行main函数后后gvarA和gvarB的值分别为()BOOLCheckA()if(gstatusA)gvarA+;elsegvarA-;returngstatusA;BOOLCheckB()if(gstatusB)gvarB+;elsegvarB-;returngstatusB;intmain(intargc,
13、char*argv)if(CheckA()&CheckB()printf(“StatusOK”);return0;99和10099和10199和99101和9931、请问下面函数中1、2、3应该填入什么语句才合理?()A、不添,不添,不添B、free(pMsg);,free(ptmpMsg);,不添C、free(pMsg);,free(ptmpMsg);,free(ptmpMsg);D、不添,free(pMsg);,free(ptmpMsg);E、free(pMsg);,free(pMsg);,free(ptmpMsg);F、不添,不添,free(ptmpMsg);#defineCOMM_MS
14、G_LEN100char*get_message_buffer(intmalloc_len)char*ptr=NULL;ptr=(char*)malloc(malloc_len)returnptr;intfunc_test(void)intmalloc_len=COMM_MSG_LEN;char*pMsg=NULL;char*ptmpMsg=NULL;pMsg=get_message_buffer(malloc_len);if(NULL=pMsg)1_returnERROR;fillMessage(pMsg);sendMessage(pMsg);ptmpMsg=get_message_buff
15、er(malloc_len);if(NULL=ptmpMsg)2_returnERROR;fillMessage(ptmpMsg);sendMessage(ptmpMsg);free(pMsg);3_returnOK;32、请问下面题目中a,b,c输出值为多少?()A、10,210,30B、100,210,300C、110,210,310D、100,210,30E、110,200,30#include#definefunc(A)A+;A*=10;intmain(intargc,char*argv)inta=10;intb=20;intc=30;if(a10)func(a);if(b=20)fu
16、nc(b);if(c30)func(c);printf(a=%d,b=%d,c=%drn,a,b,c);return0;33、#defineMAX_MEM_SIZE100intGetMem(intiLen,void*ppMem)if(NULL=ppMem)return-1;if(iLen=0)return0;elseif(iLenMAX_MEM_SIZE)*ppMem=malloc(iLen);returniLen;else*ppMem=malloc(MAX_MEM_SIZE);returnMAX_MEM_SIZE;voidtest()char*pMyMem;inti;intj;i=GetMe
17、m(i,(void*)&pMyMem);if(NULL!=pMyMem)for(j=0;ji;j+)pMyMemj=0;下面说法正确的有;()A、因为pMyMem未初始化,test函数中的GetMem可能会返回一1;B、因为i未初始化,test函数中GetMem可能会返回比MAX_MEM_SIZE大的值;C、因为pMyMem未初始化,for循环内的赋值操作可能会导致写内存异常;D、无论pMyMem,i,j为何值时,test函数内都不会出现写内存异常;34、#defineMAX_MEM_SIZE100intGetMem(intiLen,void*ppMem)if(iLen0)return-1;e
18、lseif(0=iLen)return0;elseif(iLen0)for(k=0;k0)改为if(0vj)&(jv=MAX_MEM_SIZE),可以避免出现for循环内写内存异常;C、虽然i和pMyMem均未初始化,只要将test函数内的for循环比较由kvi改为kvj,可以避免出现for循环内写内存异常;D、上面三种说法都不对。35、#defineBUF_LEN2048structAAAULONGulLen;指示buf中实际占用字节数CHARbufBUF_LEN;/存储缓冲区;函数PrintBufLen的作用是打印出结构体中的buf的实际占用长度,有下面两种实现方法:方法一:VOIDPri
19、ntBufLen(structAAA*pBuf)if(NULL=pBuf)printf(Error,pBufisNull.n);return;printf(len=%un,pBuf-ulLen);return;方法二:VOIDPrintBufLen(structAAABuf)printf(len=%un,Buf.ulLen);return;以下说法只有一个正确的是:()A:优选方法一,原因是以指针作为入参,减少函数参数压栈的系统开销。B:优选方法二,原因是可以不做入参合法性判断,不容易出错。C:两种方法差不多,可以任意选择。D:以上说法都不对。36、voidmain(void)unsigned
20、chara=200;unsignedcharb=100;unsignedcharc=0;c=a+b;printf(%d%d,a+b,c);下列程序的执行结果为(C)A300300B4444C30044D4430037、有如下宏定义和结构定义#defineMAX_SIZEA+Bstruct_Record_StructunsignedcharEnv_Alarm_ID:4;unsignedcharPara1:2;unsignedcharstate;unsignedcharavail:1;*Env_Alarm_Record;pointer=(struct_Record_Struct*)malloc(s
21、izeof(struct_Record_Struct)*MAX_SIZE);当A=2,B=3时pointer分配()个字节的空间。注意:机器是按照4字节对齐20B)15C)11D)938、在X86,VC+6.0环境下,有下列程序#includeintmain()charc;unsignedcharuc;unsignedshortus;c=128;uc=128;us=c+uc;printf(0 x%x,us);us=c+(short)uc;printf(0 x%x,us);us=(unsignedchar)c+uc;printf(0 x%x,us);us=c+(char)uc;printf(0
22、x%x,us);return0;输出结果是()A)0 x00 x00 x1000 xff000 x00 x1000 x1000 xff000 x00 x1000 x1000 x00 x00 x00 x1000 x039、#includestdio.hunsignedshort*sum(unsignedchara,unsignedcharb)unsignedshorts=0;s=a+b;return&s;intmain()unsignedshort*p=NULL;unsignedchara=1,b=2;p=sum(a,b);printf(%u+%u,a,b);printf(=%un,*p);return0;程序执行结果是()l+2=0B.l+2=3C.1+2=NULLD.不可预测二、多选题40、voidGetMemory(char*ppcChar,intiLength)if(NULL=ppcChar)return;*ppcChar=(char*)malloc(iLength);return;voidmain()char*szStr=NULL;Get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年胸腺瘤靶向评估实操指引
- 跟骨骨折术后护理要点
- 输液反应患者的一般护理
- 2026 增肌期黑巧搭配课件
- 2026 增肌期训练后饮食课件
- 2026 增肌期茶水搭配优化课件
- 智能按摩枕酒店合作分销合同合同三篇
- 肝栓塞患者呼吸道护理
- 2026 塑型维持期肉干课件
- 肺外结核患者的营养支持护理
- 2018年四川省绵阳市中考地理试卷(解析版)
- 住院患者身体约束护理团标精神科保护性约束实施及解除专家共识
- 如何成为一个合格的面试官课件
- 小学五年级家长会语文老师的课件
- AI在药物研发中的应用
- 新人教版七至九年级英语单词表
- 关键施工技术、工艺与工程项目实施的重点、难点和解决方案
- 2023年环境卫生(正高)考试历年难点与易错点考核试题3答案解析
- 50套普通话测试题与答案
- GB/T 4325.23-2013钼化学分析方法第23部分:氧量和氮量的测定惰气熔融红外吸收法-热导法
- GB/T 2970-2016厚钢板超声检测方法
评论
0/150
提交评论