版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式軟件筆試<2#<{><2#<1><1><2#f<J>V <Jw叫? ?卜<|>Vr3w VChapterl語(yǔ)法類(lèi)<2# <i><2# <i><i#<2# <1><t><2#frjwrjwrjwrywrjw<J>rjwrjwrjwrjwrjwrjwrjwrjwrjwrjw rjwrjwg1.volatile作用?應(yīng)用場(chǎng)合舉3例volatile修飾的變量表示這個(gè)變量町能會(huì)被意想不到的改變,對(duì)該變量的操作將不作優(yōu)化,用到該變量時(shí)都從這個(gè)變量的原始地址讀取,而不是用保存在寄存器里的備份。Volatile常用在:.硬件寄存器(如:狀態(tài)寄存器)。.中斷程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-autoniaticvariables)o.多線程應(yīng)用中幾個(gè)任務(wù)共享的變量2.一個(gè)參數(shù)既可以是const還可以是volatile嗎?解釋為什么?是的。比如只讀的狀態(tài)寄存器。它是volatile因?yàn)樗赡鼙灰庀氩坏降馗淖?。它是const因?yàn)槌绦虿粦?yīng)該試圖去修改它。3?—個(gè)指針可以是volatile嗎?解釋為什么。是的。比如一個(gè)中斷服務(wù)子程序修該一個(gè)指向一個(gè)buffer的指針時(shí)。4.用變量a給出下面的定義a)—個(gè)整型數(shù)b)—個(gè)指向整型數(shù)的指針c)一個(gè)指向指針的指針,它指向的指針是指向一個(gè)整型數(shù)d)一個(gè)有10個(gè)整型數(shù)的數(shù)組e)一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的f)一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針g)—個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)h)—個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)inta;//Anintegerint*a;//Apointertoanintegerint**a;//Apointertoapointertoanintegerinta[10];//Anarrayof10integersint*(a[10]);//Anarrayof10pointerstointegersint(*a)[10];//Apointertoanarrayof10integersint(*a)(int);//Apointertoafunctionathattakesanintegerargumentandreturnsanintegerint(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger5?什么是存儲(chǔ)機(jī)制里的大、小端模式?試舉例說(shuō)明人端模式(big-edian):MSE存放在最低端的地址上。舉例,雙字節(jié)數(shù)0x1234以big-endian的方式存在起始地址0x00002000中:|data|<—address|0xl2|<-0x00002000|0x34|<-0x00002001在Big-Endian中,對(duì)于bit序列中的序號(hào)編排方式如下(以雙字節(jié)數(shù)0x8B8A為例):bit|01234567|89101112131415MSB LSBval|10001011|10001010|=0x8B8A小端模式(little-endian):LSE存放在最低端的地址上。舉例,雙字節(jié)數(shù)0x1234以httle-enduui的方式存在起始地址0x00002000中:|data|<—address|0x34|<-0x00002000|0xl2|<-0x00002001在Little-Endian中,對(duì)于bit序列中的序號(hào)編排和Big-Endiaii剛好相反,其方式如下(以雙字節(jié)數(shù)Ox8B8A為例):bit|15141312111098|76543210MSB LSBval|10001011|10001010|=0x8B8A寫(xiě)一段用來(lái)判斷內(nèi)存存儲(chǔ)方式是大端還是小段的代碼。聯(lián)合體union的存放順序是所有成員都從低地址開(kāi)始存放,利用該特性就可以輕松地獲得了CPU對(duì)內(nèi)存采用Little-endiaii還是Big-endian模式讀寫(xiě)。代碼如下:mtcheckCPUendianQ{union{unsignedmta;unsignedcharb;}c;c.a=1;return(c.b==1);/*iemin1:little-endian,returnO:big-endian*/定義一個(gè)返回值是指向函數(shù)的指針且有一個(gè)指向函數(shù)的指針作參數(shù)的函數(shù)。通用形式如下:typedefint(*P)(); // 定義一個(gè)函數(shù)指針P類(lèi)型Pftinction(mt(*p)()); //定義一個(gè)函數(shù)返回值P類(lèi)型,且定義一個(gè)指向函數(shù)的指針p作參數(shù)用預(yù)處理指^define聲明一個(gè)常數(shù),用以表明1年中有多少秒(忽略閏年問(wèn)題)幷defineSECONDS_PER_YEAR(60*60*24*365)UL//UL怎么個(gè)用法?你暫不要加寫(xiě)一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。存defineMIN(A.B)((A)<=(B)?(A):(E))關(guān)鍵字static的作用是什么??jī)蓚€(gè)作用:局部變量被聲明為static則這一函數(shù)調(diào)用結(jié)束后該變量值保持不變。外部變量被聲明為static表明它是一個(gè)本地全局變量。該變量只能在該文件內(nèi)被訪問(wèn),不能被其它文件訪問(wèn)。關(guān)鍵字const有什么含意?聲明一個(gè)變量為只讀。下面的聲明都是什么意思?1)constmta;2)mtconsta;3)constiiit*a;4)mt*consta;5)mtconst*consta;1,2—樣a為只讀整形變量;3指向一個(gè)只讀整形變量的指針;4指向整形的只讀指針;5指向只讀整形的只讀指針。C語(yǔ)言實(shí)現(xiàn)設(shè)置一絕對(duì)地址為0x1234的整型變量的值為0xaa55°int*p;p=(iiit*)0x1234;//把整型數(shù)0x1234強(qiáng)制轉(zhuǎn)換(typecast〉為一指針*p=Oxaa55;找出下面一段ISR的問(wèn)題?!猧iitenuptdoublecompute_area(doubleradius){doublearea=PI*radius*radius;printf(H\iiArea=%f\area);returnaiea;}1)ISR不能傳遞參數(shù)。)ISR不能有返回值。)ISR應(yīng)該短且有效率,在ISR中做浮點(diǎn)運(yùn)算不明智。.下面的代碼輸出是什么?為什么?voidfdo(void){unsignedinta=6;intb=-20;(a+b>6)?puts(H>6H):puts(H<=6”);}輸出>6,原因是當(dāng)表達(dá)式中存在有符號(hào)類(lèi)型和無(wú)符號(hào)類(lèi)型時(shí)所有的操作數(shù)都自動(dòng)轉(zhuǎn)換為無(wú)符號(hào)類(lèi)型。-20成了一個(gè)非常人的正數(shù)?!ù祟}的輸出確實(shí)是這樣,但單純輸出a+b時(shí)結(jié)果又是-14很怪異迷惑 !16.評(píng)價(jià)下面的代碼片斷:unsignedintzero=0;unsignedintcompzero=OxFFFF;如杲碰巧mt型是16位則上述代碼沒(méi)有問(wèn)題,否則上面的代碼不正確。應(yīng)寫(xiě)成:unsignedmtcompzeio=~0;17?下面代碼執(zhí)行后a,b,c的值各是多少?inta=5,b=7,c;c=a+-H-b; //c= (a++)+ba=6,b=7,c=12. //吾已試,結(jié)果確如此Typedef和#(^門(mén)皿的區(qū)別define在預(yù)編譯的時(shí)候處理作機(jī)械的字符替換。Typedef在編譯的時(shí)候處理,并不是作簡(jiǎn)單的字符替換。而是如同定義變量一樣聲明一個(gè)類(lèi)型。然后用它去定義這種類(lèi)型的變量。比如下面的例子:存definedPSstnicts*typedefstnicts*tPS;以上兩句都是定義dPS和tPS為一個(gè)指向結(jié)構(gòu)s的指針。typedef更好。比如:dPSpl,p2;tPSp3,p4;第一句擴(kuò)展為structs*pl,p2;這條代碼定義pl為指向結(jié)構(gòu)的指針,p2為一個(gè)實(shí)際的結(jié)構(gòu)體。第二句定義p3和p4為指向結(jié)構(gòu)體s的指針。/>V r4wV r4w ?,、叫?Chapter2編程類(lèi)<£>/rjwrjwrfwrywrjwrjwrjwrjwrfwrjwrjwrjwrjwrjwrjw rjwrjw/在字符串中找出所有與給定字符相同字符的位置。Sinclude<stdio?h>chars[6]=〃hello";voidsearch_char(chargiven){inti二0,j二0;while(s[i]\-\0?){if(s[i]==given){printf("location=%d\n",i);j++;}i++;}if(j==O)printf(^No%cfound\n,,?given);}intmain(void){search_char('o');return0;/* E */將一個(gè)字符串自身逆序.Sinclude<stdio?h>SdefineLEX12intmain(void){intm,i;chartemp;chars[LEM]二〃hellotiger";m二(LENT)/2;printf(^%s\n/z,s);for(i=0;i<m;i++){temp二s[i];s[i]二s[LEN-2-i];s[LEN-2-i]二temp;printf(“$s\n",s);return0;/* E */鏈表的基本操作及鏈表自身逆序。/* chainoperatefromDataStrueture */Sinclude<malloc?h>Sinclude<stdio?h>Sinclude<stdlib?h>typedefintDataType;typedefstruetNode{DataTypedata;struet Node*next;}SLNode;// initiatevoidListInitiate(SLNode**head){exit(l);if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)elseprintf(〃0K\n〃);exit(l);(*head)-〉next二NULL;}// lengthcalintListL^ngth(SLNode*head){SLNode*p=head;intsize=0;while(p->next!二NULL){p二p_>next;size++;}returnsize;}// insertanodeintListlnsert(SLNode*head,inti,DataTypex){SLNode*p,*q;intj;p=head;j二T;while((p->next!二NULL)&&(j〈(i-l))){p=p~>next;j++;}辻(j!二(i-l)) {printf("Positionerror\nz,);return0;辻((q二(SLNode*)malloc(sizeof(SLNode)))二二NULL)exit(1);q->data=x;q一>next二p~>next;p_>next二q;return1;}// deleteanodeintListD^lete(SLNod己*head,inti,DataType*x){SLNode*p,*s;intj;p二head;j二T;while((p~>next!=NULL)&&(p->next->next!二NULL)&& ){p二p_>next;j++;}if(j!=i-l){printf(z,Positionerror\n,z);return0;}s=p->next;*x=s~>data;p->next=p">next一>next;free(s);:return1;}// datagetintListG^t(SLNode*head,inti,DataType*x){SLNode*p;intj;p二head;j=-l;while((p~>next!=NULL)&&(j〈i)){p二p_>next;j++;}辻(j!二i){printf("Positionerror\n,z);return0;}*x=p->data;:return1;}// D^stroyachainvoidDestroy(SLNode**head){SLNode*p,*pl;p二*head;while(p!=NULL){pl=P;p二p_>next;free(pl);}*head二NULL;}// converseachainvoidconverse(SLNode*head)SLNode*p,*q;p=head~>next;head一>n己xt二NULL;while(p!=NULL){q二P;p=p~>next;q~>next二head">next;head">next二q;// compositeoperationintmain(void){SLNode*head;inti,x;Listlnitiate(&head);for(i=0;i<10;i++){if(Listlnsert(h^ad,i,i)二二0){printf("Error\n,z);return1;}if(ListD己lete(head,0,&x)二二0) //chain,position,dataaddress{printf("Error\nz,);return1;}if(Listinsert(head,0,100)=0){printf("Error\nz,);return1;}converse(head);for(i=0;i<ListLength(head);i++) {if(ListGet(head,i,&x)二二0) //chain,position,dataaddress{printf("Error'n");return1;}elseprintf(〃玄d",x);}printfC\n*);Destroy(&head);return0;}/* e ?/寫(xiě)一個(gè)二分査找算法。Sinclude<stdio?h>#definesize10intg[size]={0,1,2,3,4,5,6,7,8,9};intsearch(intx){intlow=0;inthigh二sizeT;intmid;while(low<=high){mid=(low+high)/2;if(g[mid]==x)returnmid;elseif(g[mid]<x)low=mid+l;elseif(g[mid]>x)high二mid-1;}return一1;}//——intmain(void){printf(z,%d\n,z,search(7));:return0;}/* E */計(jì)算一個(gè)字節(jié)里(byte)里面有多少bit被置1.Sinclude<stdio?h>intcal_bit(chara){inti,j二0;for(i=0;i<8;i++){if(G&OxOl)=0x01)j++;a=a?l;}returnj;//_intmain(void){printf(z,%d\n/z,cal_bit(255));return0;}/* E */6.字符串轉(zhuǎn)換為整數(shù),比如“1234”轉(zhuǎn)換成1234.^include〈stdio.h>charstr[6]二〃12345";intstring_to_int(chars[]){inti;intsum二0;for(i=0;s[i]!=\0‘;i++)sum二sum*10+s[i]-'0’;returnsum;intmain(void){printf(/z%d\n,z,string_to_int(str));:return0;}/* E */7.整數(shù)轉(zhuǎn)換為字符串,比如1234轉(zhuǎn)換成“1234”.^include〈stdio.h>Sinclude<math.h>#defineLEX4charstr[]二"“;char*int_to_string(intgiven){inti;inttemp;for(i=0;i<LEN;i++){temp二given/pow(10,LENT-i); //從最高位開(kāi)始given=given%((int)pow(10,LEN~l~i));//intmustbeonbothsideof‘%’str[i]=temp+'0’;}returnstr;intmain(void){printf(”%s\n〃,int_to_string(9876));return0;}/* E */8.C語(yǔ)言實(shí)現(xiàn)插入排序算法(從大到小,從小到大).#include<stdio.h>
SdefineLEN5inta[LEN]二{7,4,8,4,5};voidinsertion_sort(void){inti,j,key;for(j=l;j<LEN;j++){printf("%d,%d,%d,%d,%d\n〃,a[0],a[l],a[2],a[3],a[4]);key二a[j];i=j-l;while((i>=0)&&(a[i]>key)){ //a[i]>key從小到人;a[i]<key從大到小a[i+l]二a[i];i—;}a[i+l]=key;}printf(,z%d,%d,%d,%d,%d\n",a[0],a[l],a[2],a[3],a[4]);intmain(void){insertion_sort();return0;}/* E */9.C語(yǔ)言實(shí)現(xiàn)冒泡排序算法(從大到小,從小到大)#include<stdio.h>SdefineLEN5inta[LEN]={5,4,3,2,1};voidbubblersort(void){inti,j,flag二1;inttemp;for(i=l;(i<LEN)&&(flag==l);i++){flag=0;//a[j]>a[j+l]從小到大;a//a[j]>a[j+l]從小到大;a[j]<a[j+l]從大到?、龋籭f(a[j]>a[j+l]){flagFl;temp=a[j];a[j]=a[j+l]:a[j+l]=temp;}}printf(,z%d,%d,%d,%d,%d\n",a[0],a[l],a[2],a[3],}}intmain(void)bubble^sort();r己turn0;/* E */在一個(gè)字符串中找一個(gè)字符串計(jì)算一個(gè)數(shù)的階乘遞歸實(shí)現(xiàn):intfactorial(intn){if(n==0)return1;else{intrecurse=factorial(n-1);intresult=n*recurse;returnresult;}}循環(huán)實(shí)現(xiàn):intfactorial(intn){intresult=1;while(n>0){result=result*n;n=n-1;}returnresult;}12?用嵌套循環(huán)求"00的素?cái)?shù)#include<stdio.h>intmain(void){inti,j;for(i=1;i<=100;i++){for(j=2;j<i;j++)if(i%j=0)break;if(j==i)printf(,f%d\n,fzi);}return0;}嚴(yán) E */13-打印菱形圖案voidDamond(mtL,chaich)intnjk、i;fbr(n=1;n<=L/2+l;n++)fbr(j=OJ<L/2+l-nJ++)prmtf(HH);fbr(k=1;k<=2*n-1:k++)pnntf(”%c”,ch);prmtf(n\nn);}fbr(i=L-n+1;i>=1;i-)pnntf(HM);fbi(k=1;k<=2*i-l;k++)pnntfC%c”,ch);prmtf(n\nn);14.刪除一個(gè)字符串中的指定字符。Sinclude<stdio.h>voiddel_char(char*p,charch)char*pch;while(*p!='\0'){if(*p==ch){for(pch=p;*pch!=,\0,;pch++)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 故宮模板課件教學(xué)課件
- 街心廣場(chǎng)課件教學(xué)課件
- 2024年度批量貨物搬運(yùn)與運(yùn)輸合同
- 2024年度某大型工程建設(shè)項(xiàng)目施工合同
- 2024年人工智能研究員全職合同
- 2024國(guó)際許可合同的格式國(guó)際許可合同的種類(lèi)
- 2024年廣告牌更新改造施工合同
- 2024規(guī)范的辦公室裝修合同范本
- 2024店面租房合同范本下載
- 2024年店面租賃升級(jí)協(xié)議
- 肺脹病(中醫(yī)臨床路徑
- 鋼結(jié)構(gòu)防塵網(wǎng)施工方案
- “一戶一表”改造工程施工組織方案
- 大型及分布式光伏電站視頻監(jiān)控典型配置方案V1.0
- 《十字繡》教學(xué)設(shè)計(jì)及反思
- 橋梁形象進(jìn)度圖
- C站使用說(shuō)明JRC
- 習(xí)作:推薦一個(gè)好地方 推薦ppt課件
- 角的度量 華應(yīng)龍(課堂PPT)
- 公路銑刨機(jī)整機(jī)的設(shè)計(jì)含全套CAD圖紙
- 機(jī)器人學(xué)課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論