嵌入式軟件試題_第1頁
嵌入式軟件試題_第2頁
嵌入式軟件試題_第3頁
嵌入式軟件試題_第4頁
嵌入式軟件試題_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、姓名1.C語言的目標程序在運行環(huán)境下的存儲空間大致分為目標代碼區(qū)和數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)又分為全局/靜態(tài)區(qū)域、棧(假設進程棧的最大值為1K)和堆;下圖所示的是目標程序運行時環(huán)境一個簡單和不是很嚴格的示意圖,請舉出程序中分別屬于全局/靜態(tài)區(qū)域、棧區(qū)和堆區(qū)變量的例子;并指出程序中的錯誤;還有要指明main函數(shù)執(zhí)行那個分支(if.else.)(錯誤和答案可以以代碼走查形式直接在程序中標出來,后面的問題相同處理)。constintMAX=1024;int*Sum(intiSumLValue,intiSumRValue)/計算兩個數(shù)的和intiSum;iSum=iSumLValue+iSumRValue;ret

2、urn&iSum;voidSub(intiSubLValue,intiSubRValue)/計算兩個數(shù)的差值staticintiSub;iSub=iSubLValue-iSubRValue;int*Mem()/分配內(nèi)存int*pMen;pMen=malloc(sizeof(int)*MAX+1);*(pMen+MAX)=10;returnpMen;voidmain()intiIndex=0;intiNext=5;intarrMAX;memcpy(arr,Mem(),1+sizeof(int)*MAX);if(0=iNext&iNext=5)for(;iIndex=MAX;iIndex+)int

3、*pSum=Sum(*(arr+iIndex),*(arr+iIndex+1);printf(%dn,*pSum);elsefor(;iIndex=MAX;iIndex+)Sub(*(arr+iIndex),*(arr+iIndex+1);for(iIndex=0;iIndex=MAX;iIndex+)printf(%dn,*(long*)arr+iIndex);2.指出下面程序可能會發(fā)生的錯誤,程序執(zhí)行時候需要輸入兩個參數(shù),其中第1個參數(shù)表示第2個參數(shù)所表示字符串的長度。程序目的是將輸入的字符串放入緩沖區(qū)(buf)中。#include#includeintmain(intargc,char*

4、argv)unsignedshortusLength;intiInput;charbuf0 xFFFF;if(argc0 xFFFF)/*w1*/return-1;memcpy(buf,argv2,iInput);bufusLength=0;return0;3指出下面程序的錯誤,函數(shù)Fun返回成功(SUCCESS)或者失敗(FAILURE);其中else分支沒有任何代碼處理。函數(shù)LoopUp根據(jù)ucInputVar值在內(nèi)存的數(shù)據(jù)結(jié)構(gòu)中查找某種數(shù)據(jù),返回查找成功或者失敗。(BYTE定以為unsignedchar)#defineSUCCESS0#defineFAILURE1BYTEFun(BYTE

5、ucInputVar)BYTEucResult;/*定義函數(shù)返回值變量*/if(SUCCESS=LoopUp(ucInputVar)ucResult=SUCCESS;elsereturnucResult;4指出下面兩段程序有什么樣的區(qū)別。注:a和b都是int類型,而且都是非負數(shù),判斷語句目的是在異常情況下(a+b0)執(zhí)行保護倒換操作;而且該程序運行環(huán)境下的CPU中存在一個寄存器,表示加法計算結(jié)果的狀態(tài),包括“正”,“負”,“零”和“溢出”狀態(tài)。【1】if(a+b0)/執(zhí)行保護倒換操作【2】if(int)(unsigned)a+(unsigned)b)0)/執(zhí)行保護倒換操作指出下面程序的錯誤,修

6、改源程序,增加檢測手段使得能夠預防該問題出現(xiàn)#defineMAX60#defineNUM_SET50#defineSIZE10int*fun()intiSize=SIZE;return&iSize;voidmain()unsignedcharucIndex;unsignedcharaucSetInfoNUM_SET;for(ucIndex=0;ucIndexMAX;ucIndex+)aucSetInfoucIndex=aucSetInfoucIndex+1;for(ucIndex=0;ucIndex*fun();ucIndex+)aucSetInfoucIndex=aucSetInfoucIn

7、dex+1;指出下面程序的錯誤#defineSIZE5structStringchar*pData;voidmain()characValue1SIZE=H,E,L,L,O;characValue2SIZE=W,O,R,L,D;structStringa,b,c;a.pData=malloc(SIZE*sizeof(char);memcpy(a.pData,acValue1,SIZE);b.pData=malloc(SIZE*sizeof(char);memcpy(b.pData,acValue2,SIZE);b=a;free(a.pData);c=b;指出下面程序的錯誤,這樣的錯誤會引起什么

8、后果,并將程序修正。嵌入式軟件試題main()intloop=1;while(loop5)intarr1000;inti=0;for(;i=0;ucCount-)iCount+;9.指出下面程序的錯誤(函數(shù)GetValue返回unsignedchar類型的值)#defineMAXNUM400;unsignedcharucIndex,ucInputVar,aucArrayMAXNUM;for(ucIndex=0;ucIndex(ucInputVar-1);ucIndex+)aucArrayucIndex=aucArrayucIndex*2+1;10指出下面程序的錯誤,其中結(jié)構(gòu)RetSize表示矩

9、形大小,用來表示窗口大小typedefstructRetSizeWORDlength;WORDwidth;voidmain()RetSizeszMin;/*定義最小窗口變量*/SetMinSize(&szMin);/*初始化(設定)最小窗口的長和寬*/SetWindowSize(&szMin);/*將當前窗口大小置為最小值*/科室姓名嵌入式軟件試題11.指出下面程序中可能出現(xiàn)的溢出問題,這樣的錯誤會引起什么樣的后果。#defineMAX0 x40000000intmyfunction(intlen)int*myarray,i;myarray=malloc(len*sizeof(int);/*1

10、*/if(myarray=0)return-1;for(i=0;i0)response=malloc(nresp*sizeof(char*);for(i=0;inresp;i+)packet_get_string(response,i);指出下面程序由于符號問題可能引起的溢出問題,copymem函數(shù)主要完成從堆中拷貝一段內(nèi)存到用戶區(qū)。#defineMAX256char*copymem(intiLength)char*pMem=0;嵌入式軟件試題if(iLengthMAX)/*1*/pMem=malloc(unsignedint)iLength);returnpMem;elsereturn0;v

11、oidmain()char*pMem;pMem=copymem(0 xffffffff);指出下面兩段程序的區(qū)別【1】main()intloop=1;intarr10;inti=0;while(loop5)for(;i=10;i+)arri=1;loop+;【2】main()intarr10;intloop=1;inti=0;while(loop5)for(i=0;i=10;i+)arri=1;loop+;指出下面三個結(jié)構(gòu)分別占用的字節(jié)數(shù)【1】typedefstructunsignedshortwItemOne;unsignedlongdwItemTwo;unsignedcharbItemThree;unsignedcharbItemFour;unsignedcharbItemFive;CPerf1;【2】#pragmapack(1)typedefstructunsignedshortwItemOne;unsignedlongdwItemTwo;unsignedcharbItemThree;unsignedcharbI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論