printf是向控制台輸出,scanf是從控制台輸入,也就是從控制台獲取用戶輸入的東西。當然也是格式化的方式,比如要獲取用戶輸入的整數:
int number;
int r = scanf(“%d”,&number);
因為要用一個變量保存用戶輸入的東西,所以scanf()用輸出參數的形式返回用戶輸入的值。所以第二個參數傳入的是number的地址(&是取地址運算符)。用戶輸入的如果是數字,就保存那個數到number中,並且r是非0值;如果不是數字, r是0,number中是隨機數,此時number不應該被使用。
注意用scanf()每次最好只獲取一個數,否則很容易引起混亂。
學到這裡,可以寫一個簡陋的小程序了:計算器。第一版需求很簡單:用戶輸入兩個整數,輸出和,退出。代碼如下:
#include
int main(void)
{
//保存用戶輸入的數
int number1;
int number2;
//提示用戶輸入第一個數:
printf("請輸入第一個數:\n");
scanf("%d",&number1);
//提示用戶輸入第二個數
printf("請輸入第二個數:\n");
scanf("%d",&number2);
//計算
int he = number1+number2;
//輸出結果
printf("%d+%d = %d\n",number1,number2,he);
return 0;
}
上一節的例子其實很脆弱,用戶輸入不是數字的話,依然能計算出結果,這就讓用戶覺得很扯蛋了。改進一下吧。我們判斷scanf的返回值,如果是0,就不計算並警告用戶,否則就輸出結果,程序如下:
#include
int main(void)
{
//保存用戶輸入的數
int number1;
int number2;
//提示用戶輸入第一個數:
printf("請輸入第一個數:\n");
int r =scanf("%d",&number1);
//查看Scanf是否收到了正確的數
if(r==0){
printf("別調皮,這樣不好玩,我走了\n");
//程序退出
return 0;
}
//提示用戶輸入第二個數
printf("請輸入第二個數:\n");
r = scanf("%d",&number2);
if(r==0){
printf("別調皮,這樣不好玩,我走了\n");
//程序退出
return 0;
}
//程序運行到這裡說明兩次輸入都正確
//計算
int he = number1+number2;
//輸出結果
printf("%d+%d = %d\n",number1,number2,he);
return 0;
}
用if來進行判斷。判斷條件放在小括號裡。r==0 是一個算式,運算符“==”表示計算兩邊是否相等。如果相等,結果就是真(true),否則就是假(false)。結果是真的話,就進入if的大括號中執行,否則就略過大括號。
If的判斷條件可以寫的很復雜,但要看懂它,只需記住一個原則:那裡面都是算式,最終計算結果為0就是false,非0就是true。負數也是true啊。至於if裡如何寫出組合條件,請自行上網查找,或參考與此文章配套的視頻:http://edu.csdn.net/course/detail/2057。歡迎C語言初學者加入此群討論:535807023 。
這一版讓我們的計算器支持加減乘除。要支持加減乘除,除了獲取用戶輸入的兩個運算數之外,還應獲取運算符。運算符也可以用數字來代表,比如我們跟用戶約定,1代表加,2代表減,3代表乘,4代表除。代碼如下:
int main(void)
{
//保存用戶輸入的數
int number1;
int number2;
int opt;//運算符
//提示用戶輸入第一個數:
printf("請輸入第一個數:\n");
int r =scanf("%d",&number1);
//查看Scanf是否收到了正確的數
if(r==0){
printf("別調皮,這樣不好玩,我走了\n");
//程序退出
return 0;
}
//提示用戶輸入第二個數
printf("請輸入第二個數:\n");
r = scanf("%d",&number2);
if(r==0){
printf("別調皮,這樣不好玩,我走了\n");
//程序退出
return 0;
}
//提示用戶輸入運算符
printf("請輸入運算符(1234分別對應加減乘除):\n");
r = scanf("%d",&opt);
if(r==0){
printf("運算符也是數字,別搞錯好嗎?你這樣讓我怎麼混? 我走了\n");
//程序退出
return 0;
}
//程序運行到這裡說明兩次輸入都正確
//檢查是運算符是否是1234之一
if(opt == 1 || opt == 2 || opt == 3 || opt == 4){
int result;//存放計算結果
//跟據運算符進行不同的運算
if(opt == 1){
//加
result = number1+number2;
}
if(opt == 2){
//減
result = number1-number2;
}
if(opt == 3){
//乘
result = number1*number2;
}
if(opt == 4){
//除,現在只能整除
result = number1/number2;
}
//輸出結果
printf("%d+%d = %d\n",number1,number2,result);
}else{
printf("運算符必須是1,2,3,4之一才行!走了\n");
}
return 0;
}
else表示if條件的運算結果為false時執行的代碼塊。判斷條件中的“||”表示或運算。意思就是如果opt等於1或opt等於2或opt等於3或opt等於4,那麼條件成立。否則就執行else裡的代碼。