一.填空題:
1、以下程序的輸出結果是:
#include
int main()
{
int n = 4;
while (n--)
{
printf("%d ", --n);
}
printf("\r\n");
return 0;
}
2、設有以下宏定義:
#define N 4
#define Y(n) ((N+1)*n)
則執行語句:Y(5+1)為:
3、
enum ENUM_A
{
x1,
y1,
z1 = 5,
a1,
b1
};
enum ENUM_A enumA = y1;
enum ENUM_A enumB = b1;
請問enumA和enumB的值是多少?
4、若有函數max(a,b),并且函數指針變量p已經指向函數,當調用該函數時正確的調用方法是:
5、對棧S進行下列操作:push(1), push(5), pop(), push(2), pop(), pop(), 則此時棧頂元素是:
6、在一個32位的操作系統中,設void *p = malloc(100),請問sizeof(p)的結果是:
二.選擇題:
7、若已定義: int a[9], *p = a;并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是:
A)p+1 B)a+1 C) a++ D) ++p
8、設有如下定義:
unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
則下列程序段的輸出結果是什么?
pulPtr = pulArray;
*(pulPtr + 2) += 2;
printf("%d, %d\r\n", *pulPtr, *(pulPtr + 2));
A) 8, 10 B) 6, 8 C) 7, 9 D) 6, 10
9、以下程序運行后,輸出結果是什么?
void main()
{
char *szStr = "abcde";
szStr += 2;
printf("%1u\r\n", szStr);
return;
}
A) cde B) 字符c的ASCII碼值 C) 字符c的地址 D) 出錯
10、給出以下定義:
char X[] = "hello";
char Y[] = {'h', 'e', 'l', 'l', 'o'};
則正確的敘述為:
A) 數組X和數組Y等價 B) 數組X和數組Y的長度相同
C) 數組X的長度大于數組Y的長度 D) 數組X的長度小于數組Y的長度
11、在32位X86下,有下列程序
#include
void main()
{
union
{
int k;
char i[2];
} *s, a;
s = &a;
s->i[0] = 0x39;
s->i[1] = 0x38;
printf("%x\r\n", a.k);
}
輸出結果是:
A) 3839 B) 3938 C) 380039 D) 不可預知
12、有如下函數定義:
unsigned long MyFunc(unsigned long ulKey)
{
return (((ulKey & 0x000000ffUL) << 24) |
((ulKey & 0x0000ff00UL) << 8) |
((ulKey & 0x00ff0000UL) >> 8) |
((ulKey & 0xff000000UL) >> 24));
}
則MyFunc(0x12345678)的返回值是:
A) 0x12345678 B) 0x87654321 C) 0x78563412 D) 0x12563478
13、((a>b)?a:b)代表什么含義:
A) 代表a,b之中較小的那個值
B) 代表a,b之中較大的那個值
C) 代表a是否比b大
D) 語法錯誤
14、某系統總線的一個總線周期包含3個時鐘周期,每個總線周期可以傳送32位數據。若總線的時鐘頻率為33MHz, 則總線帶寬為多少MB/s ?
33*10(6)*32/8*10(6)*3
A) 11 B) 22 C) 33 D) 44
15、如下定義,則s在內存中占多大空間?
union
{
struct
{
unsigned char aa:4;
unsigned char ab:4;
} a;
unsigned char c;
unsigned char d;
} s;
A) 1 byte B) 2byte C) 3byte D) 4byte
16、如下定義:
union tagAAAA
{
struct
{
char ucFirst;
short usSecond;
char ucThird;
}half_a;
long lI;
}number;
在按1字節對齊情況下,sizeof(union tagAAAA)的大小是:
在按4字節對齊情況下,sizeof(union tagAAAA)的大小是:
A) 4byte B) 6byte C) 8byte D) 12byte
17、0x12345678在采用BigEndian中內存的排列順序是 ,在采用LittleEndian內存中的排列順序是 。
(答案從左到右內存地址依次增加)
A) 12 34 56 78 B) 34 12 78 56 C) 78 56 34 12 D) 56 78 12 34
18、關于靜態變量,下面說法“不正確”的有:
A) 靜態變量在堆棧中分配
B) 靜態變量的作用域一定是局部的,例如在一個文件內或一個函數內
C) 靜態變量可分為靜態局變量和靜態全局部變量
D) 靜態變量存在于數據段中
19、下面正確的有
A) 在中斷中,不能同步獲取信號量,但是可以釋放信號量
B) 在中斷中,可以使用系統調用sleep函數來等待一會兒
C) 每一個進程有自己的獨立地址空間,每一個線程程序也有自己的獨立地址空間
D) CPU占用率為60%, 意思是CPU有60%的時間在運行指令40%的時間沒有運行指令
20、設有如下定義:int (*ptr)();則以下敘述中正確的是:
A) ptr 是指向一維數組的指針變量
B) ptr是指向int型數據的指針變量
C) ptr 是指向函數的指針,該函數返回一個int型數據
D) ptr是一個函數名,該函數的返回值是指向int型數據的指針
21、在Windows95環境下,定義數組:int **a[2][4];則數組a所占用的內存單元為:
A)8字節 B) 32字節 C) 64字節 D)不確定