在C語言程式設計中,理解數據的進制表示、掌握變量交換技巧以及解決經典邏輯題是入門的關鍵環節。本文將系統梳理這些核心知識點,並附帶代碼示例與詳細解析。
C語言支援四種常見進制,各有特定的前綴與輸出格式:
雖然C標準未強制規定二進制字面量前綴,但GCC等編譯器支援0b前綴。標準庫無直接輸出二進制的格式符,需自行實現。以下為一個通用的二進制打印函數:
#include <stdio.h>
void printfBinary(int n) {
int bits = sizeof(int) * 8;
while (bits-- > 0) {
printf("%d", (n >> bits) & 1);
if (bits % 4 == 0) printf(" "); // 每4位分組便於閱讀
}
}
int main() {
printfBinary(20); // 輸出: 0000 0000 0000 0000 0000 0000 0001 0100
return 0;
}
以0開頭(如017),使用%o輸出無符號整數。
以0x或0X開頭(如0xFF),使用%x(小寫)或%X(大寫)輸出。
無特殊前綴,直接書寫數字。使用%d輸出有符號整數,%u輸出無符號整數。
交換變量值是經典操作,以下是四種常見實現:
void swapWithTemp() {
int a = 5, b = 6;
int temp = a;
a = b;
b = temp;
}
a = b - a; // a 變為差值
b = b - a; // b 變為原 a
a = b + a; // a 變為原 b
a = a ^ b;
b = a ^ b; // 此時 b = a
a = a ^ b; // 此時 a = 原 b
原理利用 XOR 特性:x ^ y ^ x = y。
題目:有 A=5ml、B=3ml 兩杯子,水無限,無其他容器,如何得到恰好 4ml?
方法一:
方法二:
此題考察邏輯思維與狀態轉移能力,類似圖論中的最短路徑問題。