C語言刷題坑收集1

2021-08-22 03:17:25 字數 2343 閱讀 6954

第一題:

(注意加黑字型的賓語)

int   *p[4];         //指標陣列。  是個有4個元素的陣列, 每個元素的是指向整型的指標。(每個元素都是指標的陣列)

int   (*p)[4];       //陣列指標。 它是乙個指標,指向有4個整型元素的陣列。(指向有4個整型元素的陣列的指標)

int *func(void);     //指標函式。 無參函式, 返回整型指標。(函式的返回值為int*)

int (*func)(void);   //表示函式指標,可以指向無參, 且返回值為整型指標的函式。(函式的返回值為int)

第二題:

乙個函式定義的返回值是float,它不能在return語句中返回的值的型別是:

char 、int、 float、 long、 double、long long?
答案:經過測試,都可以進行轉換,只會報警告   「return」: 從***轉換到「float」,可能丟失資料 

第三題:

在gcc編譯器下,針對以下**,

const char str1 ="abc";

const char str2 ="abc";

const char *p1 ="abc";

const char *p2 ="abc";

void fun()

{const char *p = "abc";

printf("%d", p);

那麼針對printf("%d %d %d %d\n",str1, str2,p1,p2)的結果, 則:輸出的前兩個數不同,輸出的後兩個數相同。

由於str1和str2在棧上申請記憶體,故位址不同,而p1和p2指向的是靜態儲存區,只有乙個拷貝,因此位址相同,如果指向的是函式內部,但由於也是指向靜態儲存區,故函式內部的p和p1,p2位址相同。

第四題:

在c語言中,函式的隱含儲存類別是()。

auto static externregister無儲存類別
答案為:extern

關於為什麼不是auto而是extern,

「儲存方式和生存期:

儲存型別

變數型別

定義儲存方式

生存期自動auto

動態區域性變數

函式中區域性變數不特意宣告為靜態儲存類別,則都是動態儲存

動態儲存區

呼叫函式時,系統給變數自動分配動態儲存空間,呼叫結束自動釋放這些空間

靜態static

靜態區域性變數

希望函式中的區域性變數的值在函式呼叫結束後不消失而繼續保留原值

靜態儲存區

整個程式執行期間

暫存器register

***將區域性變數的值放在cpu暫存器中

暫存器***

外部extern

靜態全域性

將外部變數擴充套件到本原始檔靠前位置或者擴充套件到其他原始檔。

靜態儲存區

整個執行期間

「  ----------------引自csdn部落格

以上三個觀點似乎都能說明這個問題,但總覺得不夠嚴謹,經參考此篇部落格後,發現變數的儲存類別和函式的儲存類別:

變數儲存類別分為:靜態變數、auto:自動儲存類別,預設的儲存類別、static:靜態儲存類別、extern外部儲存類別、register暫存器儲存型別、動態變數

而函式的儲存類別分為:static:內部函式、extern:外部函式(函式預設的儲存類別)

因此這個問題得以解決。

第五題:

c++中32位單精度浮點數能表示的十進位制有效數字是多少位?()

解析:乙個浮點數由三部分組成:符號位s、指數部分e(階碼)以及尾數部分m。

單精度浮點數(float)總共用32位來表示浮點數,其中尾數用23位儲存,加上小數點前有一位隱藏的1(ieee754規約數表示法),2^(23+1) = 16777216。因為 10^7 

同樣地:雙精度浮點數(double)總共用64位來表示浮點數,其中尾數用52位儲存,     2^(52+1) = 9007199254740992,10^16 

單7雙16

C語言坑題

下面的程式會輸出什麼?include int main 參 該項程式輸出如下所示,012 1095237632 原因是 浮點數是4個位元組,12.5f 轉成二進位制是 01000001010010000000000000000000,十六進製制是 0x41480000,十進位制是 109523763...

刷題31 收集雨水

給出n個數字,表示乙個高程圖,高程圖中每一條的寬度為1,請計算下雨之後這個地形可以儲存多少水 例如給出 0,1,0,2,1,0,1,3,2,1,2,1 返回6.上面的高程圖用陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示。在這種情況下,6個單位的雨水 藍色部分 被儲存。輸入 0,1,0,...

刷題筆記 C語言

includeint main 輸入輸出 int getchar void 函式從螢幕讀取下乙個可用的字元,並把它返回為乙個整數。這個函式在同乙個時間內只會讀取乙個單一的字元。您可以在迴圈內使用這個方法,以便從螢幕上讀取多個字元。int putchar int c 函式把字元輸出到螢幕上,並返回相同...