看幾個C語言經(jīng)典筆試題。
有以下程序,如果 x 等于 254,則函數(shù)的返回值是多少?
int func(int x) { int countx = 0; while(x) { countx ++; x = x & (x - 1); } returncountx; }
看到這兩行代碼,應(yīng)該形成條件反射,看似復(fù)雜, 實則是在計算 x 的二進(jìn)制表示中 1 的個數(shù),254 的二進(jìn)制是這樣的,一共有 7 個 1
第二個,經(jīng)典的 define 和 typedef 的區(qū)別。
define 屬于宏定義,預(yù)處理的時候替換,于是 a 和 b 變成了這樣,a 是指針,b 是整數(shù)。typedef 聲明的是一種類型,c 和 d 都屬于 int_ptr 類型,就是 int * 類型,兩個都屬于指針。
執(zhí)行下列語句后,變量 x 和 y 的值是多少?
y = 10; x = y++;
后置 ++ 的特點,語句執(zhí)行完再賦值。x 還是 10,y 最后要加一,變成了11。
執(zhí)行以下代碼,程序的輸出是?
int main() { for(int i = 0; i < 3; i++) { switch(i) { case 0: printf("%d",i); ????????????case?2:???????????? ????????????????printf("%d",i);???????? ????????????default:???????????? ???????????? printf("%d",i);???????? ????????}???? ????}???? ????return?0; }
考察 switch 語句的基本語法,沒有 break,程序會一直向下執(zhí)行。i 等于 0,匹配到 case 0,輸出0,因為沒有 break,下面的兩個 printf 都會被執(zhí)行,又輸出兩個 0。i 等于 1,沒有匹配,
執(zhí)行最后的 default ,輸出一個 1。i 等于 2,匹配到 case 2,輸出 2, 同樣因為沒有 break,下面的 printf 也會輸出 2。
執(zhí)行以下代碼,在32位系統(tǒng)中,程序的輸出是?
void Func(char str_arg[2]) { int m = sizeof(str_arg); int n = strlen(str_arg); printf("%d ", m); printf("%d ",n); } intmain(void) { charstr[]="Hello"; Func(str); }
考察 strlen 和 sizeof 的用法。雖然形參看起來是個數(shù)組,但是對于編譯器來說,一旦它作為參數(shù),就是當(dāng)作指針來處理。sizeof的結(jié)果是4,strlen 的結(jié)果是 5。
-
C語言
+關(guān)注
關(guān)注
180文章
7595瀏覽量
135920 -
程序
+關(guān)注
關(guān)注
116文章
3766瀏覽量
80763 -
代碼
+關(guān)注
關(guān)注
30文章
4726瀏覽量
68248
原文標(biāo)題:五個C語言筆試題,看看能做對幾個?
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論