一、問答題。
1、———————————————————–
“匈牙利命名法”有什麼優缺點?(2分)
2、———————————————————–
下面x, y, *p的值是多少,有什麼問題?(2分)
int x, y, z = 2;
int *p=&z;
x=sizeof*p;
y=x/*p; /* x=?, *p=?, y=?, 有什麼問題?*/
3、———————————————————–
下面的語句是什麼意思?如何聲明或定義才使它們更易懂?(10分)
int (*foo())();
int (*foo())[];
int (*foo[])();
(*(void(*)())0)();
void (*signal(int,void(*)(int)))(int);
4、———————————————————–
本題(2分)。一般使用malloc時,需要進行強制類型轉換,如:
char *s; s = (char *)malloc(31);
下面中???該如何填寫,才可以正確執行強制類型轉換?
int (*monthp)[31]; monthp = (???)malloc(31);
5、———————————————————–
/* 下面r的值是多少 */
int hi, low, r;
hi=7;low=3;
r=hi<<4+low;
6、———————————————————–
指針和數組的區別是什麼?用一個簡單的聲明把它們區分開。(2分)
指針和數組的聲明在什麼情況下是相同的?(2分)
7、———————————————————–
C語言的左值(lvalue)和右值(rvalue)的含義是什麼?(2分)
8、———————————————————–
為什麼C語言可以實現printf(char *format, …)這樣可變參數的調用形式?這樣有什
麼缺點?(2分)
9、———————————————————–
説明C語言中術語”聲明”"定義”"原型”的含義?(2分)
10、———————————————————–
舉一個例子,説明使用assert和防錯代碼的區別。(5分)
11、———————————————————–
對語句 if else 與操作符 ? : 使用場合的比較。(2分)
12、———————————————————–
編寫一個函數,輸入一個的整型數字,可以選擇按照8/10/16進制輸出字符串。
注意邊界值。(5分)
13、———————————————————–
本題(2分)。下面是一個16×16的黑白圖標:
static unsigned short stopwatch[] = {
0×07c6,
0×1ff7,
0×383b,
0×600c,
0×600c,
0xc006,
0xc006,
0xdf06,
0xc106,
0xc106,
0×610c,
0×610c,
0×3838,
0×1ff0,
0×07c0,
0×0000,
};
如何修改聲明,可以使之在源代碼中形象地表現出圖形的模樣。
14、———————————————————–
説出可以使用calendar[11][30]變量的四種類型定義。(5分)
如:int calendar[12][31]; /* 二維數組 */
15、———————————————————–
使用strcmp,當字符串相同時會返回’