C - 使用者輸入:初學者指南
你好,未來的程式設計師們!今天,我們將要深入C程式設計中令人興奮的使用者輸入世界。作為你們友好的鄰居電腦老師,我將指導你們走過這段旅程,一步一步。所以,拿起一杯咖啡(或你喜歡的飲料),我們開始吧!
我們為什麼需要在C中使用使用者輸入?
想像你正在創建一個計算器程序。如果它只能計算2加2,那它會相當無用,對吧?這就是使用者輸入派上用場的地方!使用者輸入讓我們的程序能夠動態和互動。我們的程序不再總是做同樣的事情,而是可以根據不同的輸入產生不同的結果。
魔法棒:scanf() 函數
在C中,我們捕獲使用者輸入的魔法棒是 scanf()
函數。它就像一個網,捕獲用戶輸入到程序中的信息。讓我們來分解一下:
#include <stdio.h>
int main() {
int number;
printf("輸入一個數字: ");
scanf("%d", &number);
printf("你輸入了: %d\n", number);
return 0;
}
在這個例子中:
- 我們聲明了一個
int
型別的變量number
。 - 我們提示用戶輸入一個數字。
- 我們使用
scanf()
捕獲輸入並將其存儲在number
中。 - 最後,我們將數字打印回給用戶。
scanf()
中的 %d
告訴函數:"在這裡期待一個整數!" number
前面的 &
表示:"在這個記憶地址存儲輸入"。
輸入類型:讓我們一起探討!
整數輸入
我們已經看到了如何輸入整數。讓我們試一個更複雜的例子:
#include <stdio.h>
int main() {
int age, year;
printf("輸入你的年齡和出生年份: ");
scanf("%d %d", &age, &year);
printf("你 %d 歲,並出生於 %d 年。\n", age, year);
return 0;
}
在這裡,我們一次性捕獲了兩個整數!%d %d
之間的空格告訴 scanf()
在輸入之間期待一個空格或換行。
浮點數輸入
如果我們想要小數呢?那就使用浮點數!
#include <stdio.h>
int main() {
float height, weight;
printf("輸入你的身高(公尺)和體重(公斤): ");
scanf("%f %f", &height, &weight);
printf("你身高 %.2f 公尺,體重 %.1f 公斤。\n", height, weight);
return 0;
}
注意浮點數使用 %f
。在輸出中,.2f
和 .1f
控制小數位數。
字符輸入
有時,我們只需要一個字符:
#include <stdio.h>
int main() {
char grade;
printf("輸入你的成績(A-F): ");
scanf(" %c", &grade); // 注意 %c 之前的空格
printf("你得到了 %c。 ", grade);
if (grade == 'A' || grade == 'B')
printf("做得很好!\n");
else if (grade == 'C')
printf("不錯,持續進步!\n");
else
printf("下次我們要更努力!\n");
return 0;
}
%c
之前的空格非常關鍵!它告訴 scanf()
在讀取字符之前跳過任何空白(如換行)。
字符串輸入
最後但同樣重要的是,讓我們捕獲一整個字符串:
#include <stdio.h>
int main() {
char name[50]; // 用於存儲字符串的數組
printf("你叫什麼名字? ");
scanf("%49s", name); // %49s 以防止緩衝區溢出
printf("你好,%s!歡迎來到C程式設計!\n", name);
return 0;
}
需要注意的幾點:
- 我們使用字符數組來存儲字符串。
-
scanf()
中的name
前不需要&
,因為數組名已經是地址。 -
%49s
限制了輸入為49個字符,防止緩衝區溢出。
scanf() 函數:更深入的了解
讓我們總結我們已經見過的不同格式指定符:
格式指定符 | 數據類型 |
---|---|
%d | 整數 |
%f | 浮點數 |
%c | 字符 |
%s | 字符串 |
記住,scanf()
非常強大但也可能很棘手。總是檢查輸入是否成功:
#include <stdio.h>
int main() {
int num;
printf("輸入一個數字: ");
if (scanf("%d", &num) == 1) {
printf("你輸入了: %d\n", num);
} else {
printf("無效的輸入!\n");
}
return 0;
}
這檢查 scanf()
是否成功讀取了一個值(== 1
)。
總結
呼!我們今天學了很多。從整數到字符串,我們探討了如何讓我們的C程序互動。記住,熟練需要練習。試著在你的程序中結合不同類型的輸入。也許創建一個問玩家名字、年齡和喜歡的數字的簡單遊戲?
編程就像學習一門新語言 - 使用得越多,就越自然。所以,持續編碼,持續嘗試,最重要的是,玩得開心!如果你遇到困難,記住每個程式設計師都曾經是初學者。不要害怕提問題和尋求幫助。
直到下次,快樂編程!
Credits: Image by storyset