選擇題
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+″
參考答案:A
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.出錯
參考答案:C 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.出錯
參考答案:C
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時建立的?
參考答案:
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+″
參考答案:A
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.出錯
參考答案:C 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.出錯
參考答案:C
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時建立的?
參考答案:
參考答案:#define NTBL