上一節實現的猜數字程序未校驗輸入範圍,用戶輸入 900 或 -10 仍被接受。本節加入範圍檢查,引入 if-else 條件語句塊。
#include <stdio.h>
int main() {
int mynum;
printf("你好,請輸入一個數字: ");
scanf("%d", &mynum);
if (mynum > 500 || mynum < 1) {
printf("數字僅限於 1-500 之間,請重新運行本程序!\n");
} else {
printf("\n你輸入的數字是: %d\n", mynum);
}
return 0;
}
$ ./myguess
你好,請輸入一個數字: 200
你輸入的數字是: 200
$ ./myguess
你好,請輸入一個數字: 900
數字僅限於 1-500 之間,請重新運行本程序!
if (條件表達式) {
// 條件為真(非零)執行
} else {
// 條件為假(零)執行
}
>、<、== 等)結果為 1(真)或 0(假)||(或)、&&(且)支援短路求值if (mynum > 500 || mynum < 1) // 邏輯或:任一成立即為真
if (mynum >= 1 && mynum <= 500) // 邏輯且:雙方均成立才為真
C 語言中 NULL 本質是 0,但語義用於指針:
int *ptr = NULL;
if (ptr != NULL) { /* 指針有效 */ }
if (ptr == NULL) { /* 指針為空 */ }
良好習慣:指針判斷用 NULL,整數判斷用 0,提高代碼可讀性。
錯誤輸入後需重新運行程序,用戶體驗差。下一節將引入 while 循環,實現「輸入錯誤 → 提示重輸 → 直到合法」的交互流程。