看幾個C語言經典筆試題。
有以下程序,如果 x 等于 254,則函數的返回值是多少?
int func(int x) { int countx = 0; while(x) { countx ++; x = x & (x - 1); } returncountx; }
看到這兩行代碼,應該形成條件反射,看似復雜, 實則是在計算 x 的二進制表示中 1 的個數,254 的二進制是這樣的,一共有 7 個 1
第二個,經典的 define 和 typedef 的區別。
define 屬于宏定義,預處理的時候替換,于是 a 和 b 變成了這樣,a 是指針,b 是整數。typedef 聲明的是一種類型,c 和 d 都屬于 int_ptr 類型,就是 int * 類型,兩個都屬于指針。
執行下列語句后,變量 x 和 y 的值是多少?
y = 10; x = y++;
后置 ++ 的特點,語句執行完再賦值。x 還是 10,y 最后要加一,變成了11。
執行以下代碼,程序的輸出是?
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,程序會一直向下執行。i 等于 0,匹配到 case 0,輸出0,因為沒有 break,下面的兩個 printf 都會被執行,又輸出兩個 0。i 等于 1,沒有匹配,
執行最后的 default ,輸出一個 1。i 等于 2,匹配到 case 2,輸出 2, 同樣因為沒有 break,下面的 printf 也會輸出 2。
執行以下代碼,在32位系統中,程序的輸出是?
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 的用法。雖然形參看起來是個數組,但是對于編譯器來說,一旦它作為參數,就是當作指針來處理。sizeof的結果是4,strlen 的結果是 5。
-
C語言
+關注
關注
180文章
7605瀏覽量
136900 -
程序
+關注
關注
117文章
3787瀏覽量
81069 -
代碼
+關注
關注
30文章
4790瀏覽量
68646
原文標題:五個C語言筆試題,看看能做對幾個?
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論