附答案:嵌入式軟件工程師(shi)筆試題
時間:2018-08-16 來(lai)源:未知
選擇題
1:設float a=2, b=4, c=3;,以下C語言表達(da)式(shi)與(yu)代數式(shi) (a+b)+c計算(suan)結(jie)果不一致(zhi)的是
A.(a+b)*c/2
B.(1/2)*(a+b)*c
C.(a+b)*c*1/2
D.c/2*(a+b)
參考答案:B,因(yin)為a,b,c三(san)個變量都是(shi)(shi)浮點(dian)數,所以(yi)在(zai)B答案中其結果是(shi)(shi)0,因(yin)為在(zai)計算(suan)1/2是(shi)(shi)就(jiu)是(shi)(shi)0,如(ru)果改成(cheng)1/2.0就(jiu)正(zheng)確了。
2:為了向(xiang)二(er)進制文件(jian)尾(wei)部增加數(shu)據,打開(kai)文件(jian)的方式應采用
A.″ab″
B.″rb+″
C.″wb″
D.″wb+″
參考(kao)答案:D
3:下述程(cheng)序執行后的輸出結(jie)果是
#include
main()
{
int x=’f';
printf(“%c\n”,’a’+(x-‘a’+1));
}
A.g
B.h
C.i
D.j
參考答案(an):A
4:C語言中,下列運(yun)算(suan)符優先級高的是(shi)
A.!
B.%
C.>>
D.= =
參考答(da)案:A
5:數組定義為“ int a [ 4 ] ; ”,表(biao)達式 ( ) 是錯(cuo)誤(wu)的。
A.*a
B.a [ 0 ]
C.a
D.a++
參(can)考答案:D
6:執行語(yu)句“ k=7>>1; ”后,變量 k 的當前(qian)值是
A.15
B.31
C.3
D.1
參考答案:C
7:定(ding)義(yi)函數(shu)時,缺省函數(shu)的類(lei)(lei)型(xing)聲明,則函數(shu)類(lei)(lei)型(xing)取(qu)缺省類(lei)(lei)型(xing)
A.void
B.char
C.float
D.int
參考答案:D
8:若(ruo)main()函(han)數(shu)(shu)(shu)帶參(can)數(shu)(shu)(shu),參(can)數(shu)(shu)(shu)個數(shu)(shu)(shu)多是(shi)
A.0
B.1
C.2
D.3
參考答案:C 只知(zhi)道有定義形式main(int argc,char* argv[]))
9:若有宏定義:#define MOD(x,y) x%y
則執行以下(xia)語(yu)句后的輸(shu)出結果是
int a=13,b=94;
printf(″%d\n″,MOD(b,a+4));
A.5
B.7
C.9
D.11
參考答案:B
10:下列各個錯(cuo)誤中,哪一個不(bu)屬于編譯錯(cuo)誤
A.改變 x 原值 3 為 5 ,寫作“ x==5 ;”
B.花(hua)括號不配對(dui)
C.復合語句中的(de)后(hou)一條語句后(hou)未加分號
D.變量有引(yin)用、無(wu)定(ding)義
參考答案:A
11:下列程(cheng)序段(duan)運行后, x 的值是( )
a=1;b=2;x=0;
if(!( — a))x — ;
if(!b)x=7;else ++x;
A.0
B.3
C.6
D.7
參(can)考(kao)答案:A
12:設
#define N 3
#define Y(n) ((N+1)*n)
則表達式2*(N+Y(5+1))的值(zhi)是
A.42
B.48
C.54
D.出錯
參考答(da)案:B Y(5+1) 傳(chuan)遞過去的(de)應該是6,而不是簡(jian)單的(de)把(ba)5+1給替換掉
13:若定(ding)義了char ch[]={″abc\0def″},*p=ch;則執行printf(″%c″,*p+4);語句的輸出結(jie)果(guo)是(shi)
A.def
B.d
C.e
D.0
參考答(da)案:C
14:下列轉義字符中錯誤(wu)的是(shi)
A.′\000′
B.′\14′
C.′\x111′
D.′\2′
參考答案:C error C2022: ‘273’ : too big for character
15:算(suan)(suan)術(shu)運(yun)(yun)算(suan)(suan)符(fu),賦值運(yun)(yun)算(suan)(suan)符(fu)和關系(xi)運(yun)(yun)算(suan)(suan)符(fu)的(de)運(yun)(yun)算(suan)(suan)優先級(ji)按從(cong)高到低依次為
A.算(suan)術運(yun)算(suan)、賦值運(yun)算(suan)、關系運(yun)算(suan)
B.算(suan)(suan)術運算(suan)(suan)、關系運算(suan)(suan)、賦值(zhi)運算(suan)(suan)
C.關(guan)系(xi)運(yun)(yun)算(suan)、賦(fu)值運(yun)(yun)算(suan)、算(suan)術運(yun)(yun)算(suan)
D.關系運算(suan)(suan)、算(suan)(suan)術運算(suan)(suan)、賦值運算(suan)(suan)
參考答案:B
16:設(she)#define N 3
#define Y(n) ((N+1)*n)
則表達式(shi)2*(N+Y(5+1))的(de)值是(shi)
A.42
B.48
C.54
D.出錯
參考答案:B
17:表達(da)式(shi) strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一個
A.非零整數
B.浮點數
C.0
D.字符
參考答案(an): A
18:設(she)struct
{ short a;
char b;
float c;
}cs;
則sizeof(cs)的值是(shi)
A.4
B.5
C.6
D.7
參(can)考(kao)答案: D 字節對齊的話應(ying)該是8
19:若變量已正確定義,表達式( j=3 , j++ )的值是
A.3
B.4
C.5
D.0
參考答案:A
20:C 語言中運算對象必(bi)須是(shi)整型的運算符(fu)是(shi)
A.%
B./
C.!
D.**
參考答案:A
簡答題
21:打印一個N*N的方陣,N為每邊(bian)字符的個數( 3〈N〈20 ),要求外層為“X”,第(di)二(er)層為“Y”,從第(di)三層起每層依次(ci)打印數字0,1,2,3,…
例子:當N =5,打(da)印(yin)出(chu)下面(mian)的圖形:
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的線程模(mo)型。然后討(tao)論進程內/外組件的差別。
23:多態(tai)類中的虛函數表是Compile-Time,還是Run-Time時(shi)建立(li)的?
參考(kao)答案: 虛(xu)擬函(han)數表是在編譯期就建立(li)了,各(ge)個虛(xu)擬函(han)數這(zhe)時被組織成了一個虛(xu)擬函(han)數的入口地址的數組.
而(er)對象的隱藏(zang)成(cheng)員(yuan)–虛(xu)擬函(han)數(shu)表指針是在運(yun)行(xing)(xing)期(qi)–也就是構造函(han)數(shu)被(bei)調用時進行(xing)(xing)初始化的,這是實現多態(tai)的關鍵.
24:
01 #include
02
03 void main()
04
05 { int c;
06
07 while ((c=getchar())!= ′\ n ′ )
08
09 switch(c - ′ 2 ′ )
10
11 { case 0:
12
13 case 1:putchar(c+4);break;
14
15 case 2:putchar(c+4);break;
16
17 case 3:putchar(c+3);break;
18
19 default:putchar(c+2);break;
20
21 }
22
23 printf( ″\ n ″ );
24
25 }
運行時(shi)輸入: 2473 ,輸出結果:
參考答案:6897 VC++6.0測試(shi)過
25:用兩個(ge)棧實現一個(ge)隊列的功能?
參考答案:
設2個棧為A,B, 一開始均為空.入隊:
將(jiang)新元(yuan)素push入棧(zhan)A;出隊:
(1)判斷(duan)棧B是否為(wei)空;
(2)如果不(bu)為空(kong),則(ze)將棧(zhan)A中所有元素依次pop出并push到(dao)棧(zhan)B;
(3)將(jiang)棧(zhan)B的棧(zhan)頂元素pop出;這樣實(shi)現的隊列入隊和(he)出隊的平(ping)攤復雜度(du)都還(huan)是O(1),
26:寫一語句實現x是否為2的若干(gan)次冪(mi)的判斷。
參考答案(an):!(X)&(X-1)
27:解二次方程(cheng):a*x*x+b*x+c
1 int Quadratic( double a,double b,double c,double& x1,double& x2);
返回(hui)值:解的個數
28:如何判別一個(ge)數(shu)是unsigned。
參考答案;
1 #define issignal(x) ((x>=0 && ~x>=0) ? 1:0) //為1是無符號 為0有(you)符號
29:執(zhi)行(xing)下述程序的輸(shu)出結果是 ABCDEFCDEFEF 。
1 #include
2 char b[]="ABCDEF";
3 main()
4 {
5 char *bp;
6 for (bp=b;*bp;bp+=2)
7 printf("%s",bp);
8 printf("\n");
9 }
30:已知一個(ge)數組(zu)table,用一個(ge)宏定義,求出(chu)數據的元素個(ge)數。
參考答案:#define NTBL
1 #define NTBL (sizeof(table)/sizeof(table[0]))

