2018-10-02 C語言錯題集 main 是一個合法的標識符嗎? 答:是,main 是函數的標識符名稱。 如果有符號常量定義如下: 那麼請問代碼中 F(3+2) 的值等於多少? 答:F(3+2) == 2*3+2 == 8,註意,巨集定義是在程式編譯時先進行的預處理,做法是直接將標識符替換為常量, ...
2018-10-02 C語言錯題集
main 是一個合法的標識符嗎?
答:是,main 是函數的標識符名稱。
如果有符號常量定義如下:
1 #define F(n) 2*n
那麼請問代碼中 F(3+2) 的值等於多少?
答:F(3+2) == 2*3+2 == 8,註意,巨集定義是在程式編譯時先進行的預處理,做法是直接將標識符替換為常量,並不會進行相關運算。因此,直接將 F(3+2) 替換為 2*3+2。
我們說 printf() 是一個用於格式化列印的函數,那 sizeof() 是一個函數嗎?
答:不是,雖然它跟 printf() 一樣後邊有個小括弧,併在小括弧中填入“參數”,但 sizeof 其實是一個特殊的操作符。註意,它是一個運算符,一個運算符,一個運算符!(重三遍)
sizeof 運算符
sizeof 用於獲得數據類型或表達式的長度,它有三種使用方式:
- sizeof(type_name); //sizeof(類型);
- sizeof(object); //sizeof(對象);
- sizeof object; //sizeof 對象;
C 標準只規定一個數據類型的具體尺寸(其他數據類型都是規定相對範圍),你知道是哪個數據類型如此特殊嗎?
答:char 字元型,C 標準只規定 char 類型占一個位元組的空間,其他數據類型均指定相對範圍,具體大小依賴於實現環境。下邊摘錄自 C99 原文:
3.7.1
character
single-byte character
<C> bit representation that fits in a byte
你知道為何調試程式的時候調試器總會將記憶體中的二進位數轉換為十六進位?
——因為恰好 8 位二進位數(一個位元組,1Byte == 8bit)用 2 位十六進位數即可表示,非常節約空間。
上圖是十六進位,下圖是二進位:
鑒於二進位和十六進位之間有著密不可分的曖昧關係,你只需要記住下邊這個表格即可:
按以下要求編寫程式。nFqUXD0z
JIda4,-3y?*r>9f)`Z5'm=j_+nF1(
- 要求用戶輸入一個十進位整數(按下回車完成輸入)
- 計算出該整數值的五次方
- 列印計算結果
gcc編譯時要加參數-lm
觀察 ASCII 字元表,請問大寫字母和小寫字母的 ASCII 值有什麼特點?
答:大寫字母對應的 ASCII 值第 6 位置 1 則變成對應的小寫字母,反之亦然。例如:大寫字母 A 的二進位 ASCII 值是 0100 0001,對應的小寫字母 a 的二進位則是 0110 0001。此規則適用於所有大小寫字母的相互轉換(在學到位操作符的時候,很有用(⊙o⊙)哦)。
在 Linux 系統上如何快速查看 ASCII 字元表?
答:輸入命令 man ascii,一目瞭然。按下字母 'q' 可退出。
問題1:
寫一個華氏度到攝氏度的轉換程式,用戶輸入華氏度,程式計算並輸出對應的攝氏度。
結果為:
請輸入華氏度:45
45華氏度轉化為攝氏度是:7.00
為什麼攝氏度不是7.22?? 有哪位熱心人士解答一下。
知道了!是因為9 / 5 的結果會捨棄小數,等於 1,所以得到的答案偏差比較大。應該改為9.0 / 5.0