嵌入式筆試題


1:設float a=2, b=4, c=3;,以下C語言表達式與代數式 (a+b)+c計算結果不一致的是

A.(a+b)*c/2

B.(1/2)*(a+b)*c

C.(a+b)*c*1/2

D.c/2*(a+b)

參考答案:B,因爲a,b,c三個變量都是浮點數,所以在B答案中其結果是0,因爲在計算1/2是就是0,如果改成1/2.0就正確了。


2:爲了向二進制文件尾部增加數據,打開文件的方式應採用

A.″ab″

B.″rb+″

C.″wb″

D.″wb+″

參考答案:D


3:下述程序執行後的輸出結果是

#include

main()

{

int x='f';

printf("%c\n",'a'+(x-'a'+1));

}

A.g

B.h

C.i

D.j

參考答案:A


4:C語言中,下列運算符優先級最高的是

A.!

B.%

C.>>

D.= =

參考答案:A


5:數組定義爲“ int a [ 4 ] ; ”,表達式 ( ) 是錯誤的。

A.*a

B.a [ 0 ]

C.a

D.a++

參考答案:D


6:執行語句“ k=7>>1; ”後,變量 k 的當前值是

A.15

B.31

C.3

D.1

參考答案:C


7:定義函數時,缺省函數的類型聲明,則函數類型取缺省類型

A.void

B.char

C.float

D.int

參考答案:D


8:若main()函數帶參數,參數個數最多是

A.0

B.1

C.2

D.3

參考答案:C 只知道有定義形式main(int argc,char* argv[]))


9:若有宏定義:#define MOD(x,y) x%y

則執行以下語句後的輸出結果是

int a=13,b=94;

printf(″%d\n″,MOD(b,a+4));

A.5

B.7

C.9

D.11

參考答案:B


10:下列各個錯誤中,哪一個不屬於編譯錯誤

A.改變 x 原值 3 爲 5 ,寫作“ x==5 ;”

B.花括號不配對

C.複合語句中的最後一條語句後未加分號

D.變量有引用、無定義

參考答案:A


11:下列程序段運行後, x 的值是( )


a=1;b=2;x=0;

if(!( -- a))x -- ;

if(!b)x=7;else ++x;

A.0

B.3

C.6

D.7

參考答案:A


12:設

#define N 3

#define Y(n) ((N+1)*n)

則表達式2*(N+Y(5+1))的值是

A.42

B.48

C.54

D.出錯

參考答案:B Y(5+1) 傳遞過去的應該是6,而不是簡單的把5+1給替換掉


13:若定義了char ch[]={″abc\0def″},*p=ch;則執行printf(″%c″,*p+4);語句的輸出結果是

A.def

B.d

C.e

D.0

參考答案:C


14:下列轉義字符中錯誤的是

A.′\000′

B.′\14′

C.′\x111′

D.′\2′

參考答案:C error C2022: '273' : too big for character


15:算術運算符,賦值運算符和關係運算符的運算優先級按從高到低依次爲

A.算術運算、賦值運算、關係運算

B.算術運算、關係運算、賦值運算

C.關係運算、賦值運算、算術運算

D.關係運算、算術運算、賦值運算

參考答案:B


16:設#define N 3

#define Y(n) ((N+1)*n)

則表達式2*(N+Y(5+1))的值是

A.42

B.48

C.54

D.出錯

參考答案:B


17:表達式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一個

A.非零整數

B.浮點數

C.0

D.字符

參考答案: A


18:設struct

{ short a;

char b;

float c;

}cs;

則sizeof(cs)的值是

A.4

B.5

C.6

D.7

參考答案: D 字節對齊的話應該是8


19:若變量已正確定義,表達式( j=3 , j++ )的值是

A.3

B.4

C.5

D.0

參考答案:A


20:C 語言中運算對象必須是整型的運算符是

A.%

B./

C.!

D.**

參考答案:A

簡答題


21:打印一個N*N的方陣,N爲每邊字符的個數( 3〈N〈20 ),要求最外層爲“X”,第二層爲“Y”,從第三層起每層依次打印數字0,1,2,3,...

例子:當N =5,打印出下面的圖形:

X X X X X

X Y Y Y X

X Y 0 Y X

X Y Y Y X

X X X X X


22:談談COM的線程模型。然後討論進程內/外組件的差別。


23:多態類中的虛函數表是Compile-Time,還是Run-Time時建立的?

參考答案:

虛擬函數表是在編譯期就建立了,各個虛擬函數這時被組織成了一個虛擬函數的入口地址的數組.

而對象的隱藏成員--虛擬函數表指針是在運行期--也就是構造函數被調用時進行初始化的,這是實現多態的關鍵.


24:#include


  void main()


  { int c;


  while ((c=getchar())!= ′\ n ′ )


  switch(c - ′ 2 ′ )


  { case 0:


  case 1:putchar(c+4);break;


  case 2:putchar(c+4);break;


  case 3:putchar(c+3);break;


  default:putchar(c+2);break;


  }


  printf( ″\ n ″ );


  }


  運行時輸入: 2473 ,輸出結果:

參考答案:6897 VC++6.0測試過

25:用兩個棧實現一個隊列的功能?

參考答案:

設2個棧爲A,B, 一開始均爲空.入隊:

將新元素push入棧A;出隊:

(1)判斷棧B是否爲空;

(2)如果不爲空,則將棧A中所有元素依次pop出並push到棧B;

(3)將棧B的棧頂元素pop出;這樣實現的隊列入隊和出隊的平攤複雜度都還是O(1),

26:寫一語句實現x是否爲2的若干次冪的判斷。

參考答案:!(X)&(X-1)


27:解二次方程:a*x*x+b*x+c

int Quadratic( double a,double b,double c,double& x1,double& x2);

返回值:解的個數


28:如何判別一個數是unsigned。

參考答案;

#define issignal(x) ((x>=0 && ~x>=0) ? 1:0) //爲1是無符號 爲0有符號

29:執行下述程序的輸出結果是  ABCDEFCDEFEF  。

#include

char b[]="ABCDEF";

main()

{

char *bp;

for (bp=b;*bp;bp+=2)

printf("%s",bp);

printf("\n");

}


30:已知一個數組table,用一個宏定義,求出數據的元素個數。

參考答案:#define NTBL

#define NTBL (sizeof(table)/sizeof(table[0]))


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章