軟韌體工程師面試考題- 程式碼考題 - RainD

文章推薦指數: 80 %
投票人數:10人

Int a[] = {6, 7, 8, 9, 10}; Int *p=a; *(p++)+=123; *(++p)+=123;. Ans:a[] = {129, 7, 131, 9, 10} (這題考運算子的優先順序). 6. [聯發科] ArticleList 軟韌體工程師面試考題-程式碼考題 1.#defineMUX(a,b)a*b MUX(10+5,10-5)=? Ans:10+5*10-5=55(由於巨集函式的參數沒有括號,因此不會先做加減法) 2.unsignedlongv1=0x00001111; unsignedlongv2=0x00001202; unsignedlongv; v=v1&(~v2); v=v|v2; ask:thevalueofv? MUX(10+5,10-5)=? Ans:~v=0xffffedfd v1&(~v2)=0x00001111&0xffffedfd=0x111(此運算等於最低四個16位元只要是奇數都會是1) 0x111|v2=0x111|0x1202=0x1313 Ans:0x00001313 3.用一行程式碼判斷是否為2的冪次方 Ans:returnN>0&&(N&(N-1)) 4.inta[5]={1,2,3,4,5}; int*p=(int*)(&a+1); ask:thevalueof*(a+1)and*(p-1)? Ans:*(a+1)=2 *(p-1)=5 5.Ask:thecontentofarraya? Inta[]={6,7,8,9,10}; Int*p=a; *(p++)+=123; *(++p)+=123; Ans:a[]={129,7,131,9,10}(這題考運算子的優先順序) 6.[聯發科] intfun(intx) { Intcount=0; while(x){ count++; x=x&(x-1) } returncount; } fun(456)+fun(123)+fun(789)=? Ans:4+6+5=15(計算輸入進來的數字,其二進位表示有幾個1) 7.[聯發科] #defineINC(x)x*=2;x+=1 intmain() { inti,j; for(i=0,j=1;i<5;i++)//3,5,9,17,33 INC(j);//1,2,4,8,16 printf("j=%d\n",j); } 求J輸出值是多少? Ans:玄機在for迴圈沒有括號) 8.[2021安霸] inta=25; intb=30; intques1=a+++b++; intques2=++a+++b; printf("%d,%d",ques1,ques2); 問打印結果 右運算會較晚處理,左運算會優先處理,因此第一行會先進行a+b,這是ques1得到的值,之後a和b各自+1。

第二行會先進行a和b各自+1,然後再進行a+b,這是ques2得到的值。

Ans:55,59 9.[2021安霸] 請設計一段程式碼輸出如下: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp1 &nbsp&nbsp&nbsp&nbsp&nbsp121 &nbsp&nbsp&nbsp12321 &nbsp1234321 123454321 Ans: intmain() { for(inti=0;i<5;i++)//height { intprint=1; intplus=1; for(intj=0;j<9;j++)//width { if(abs(4-j)<=i) { printf("%d",print); print+=plus; } else printf(""); if(j==3)//mid plus=-1; } printf("\n"); } } 10.[2021智原] 一個長字串裡,裏頭分別用空格分開了6個子字串,ex:str=[substr1substr2...substr6],問如何打印第四個子字串 Ans:印象中所有子字串的開頭字元和結尾字元都不一樣,可用此作為打印和結束打印的判斷。

11.[2021智原] "?"在C語言代表的意思是什麼 Ans:用於判斷前面敘述是trueorfalse,之後會以":"區分true和false的操作。

12.[2021智原] 1.chmod 2.who 3.which 4.echo 以上四個Unix命令分別是做什麼用的? Lastupdated:February24,2021



請為這篇文章評分?