上一章
利用前三章提到的知識,我們已經可以寫出自己的計算機了!
但是,其實我們的程式還可以變得更強!
在本章,我們將賦予程式「判斷、決策」的能力,讓程式也可以像人一樣思考!
先來講個簡單的例子:
輸入一個數字,如果這個數字是2的話輸出「Yes」,不是的話輸出「No」
這裡請出我們的新朋友,「if (如果)」
用法如下:
if(條件) { 條件成立時要執行的程式碼 }
所以,程式碼可以這樣寫:
#include<cstdio> int main() { int n; scanf("%d",&n); if(n==2) { printf("Yes\n"); } if(n!=2) { printf("No\n"); } }
趕快試試看吧! :)
你可能會發現另外兩個新朋友:「==」和「!=」
其中
「==」的作用是判斷左邊是不是「等於」右邊
「!=」的作用是判斷左邊是不是「不等於」右邊
類似的用法還有:
「<」的作用是判斷左邊是不是「小於」右邊
「>」的作用是判斷左邊是不是「大於」右邊
「<=」的作用是判斷左邊是不是「小於或等於」右邊
「>=」的作用是判斷左邊是不是「大於或等於」右邊
你可能還會發現:『「==」成立』不就是『「!=」不成立』嗎?
只要其中一方成立,另一方就會不成立
反之亦然
只要其中一方不成立,另一方就會成立
因此,「else (否則)」的概念就被引進來了
用法如下:
if(條件) { 條件「成立」時要執行的程式碼 } else { 條件「不成立」時要執行的程式碼 }
這樣一來,「判斷n有沒有等於2」的程式碼就可以寫得更簡單了:
#include<cstdio> int main() { int n; scanf("%d",&n); if(n==2) { printf("Yes\n"); } else { printf("No\n"); } }
你現在可能覺得差不了多少,但是以後你應該就會發現
這樣的一點邏輯簡化,對於寫出正確無誤的程式碼非常有幫助
再考考你
給你年分,請你判斷它是不是閏年?
你可能會想:「那我就先看看它是不是4的倍數,如果不是4的倍數的話就不是閏年,如果是4的倍數的話再看看它是不是100的倍數,如果不是100的倍數的話就是閏年,如果是100的倍數的話再看看它是不是400的倍數,如果不是400的倍數的話就不是閏年,否則就是閏年」
我們的程式也可以這樣思考!
對了,前面忘了說
其實除了「加減乘除」之外,C++還提供了另外一個運算子:「%」
就是算出餘數啦
例如以下這段程式碼:
#include<cstdio> int main() { int a=5,b=3; printf("%d\n",a%b); }
程式會輸出「2」
「5%3」的程式輸出「2」了! |
因此,依據上面學到的知識,要判斷閏年,程式碼可以這樣寫:
#include<cstdio> int main() { int year; scanf("%d",&year); if(year%4!=0) { printf("不是閏年\n"); } else { if(year%100!=0) { printf("是閏年\n"); } else { if(year%400!=0) { printf("不是閏年\n"); } else { printf("是閏年\n"); } } } }
很有趣吧!
想不想趕快來玩玩看呢?
例如:心理測驗 (XD?!)
下一章
感謝:
(版權所有 All copyright reserved)
請問版主大大 為啥按下F11後 跑出並非預期的亂碼?? 感謝回答
回覆刪除這是範例C++程式碼:
#include<cstdio>
int main()
{
printf("Hello world!\n");
return 0;
}
#include<cstdio>
回覆刪除int main()
{
int a=1,b=2;
printf("%d\n",&a+b);
if(a+b==2)
{
scanf("yes \n");
}
else
{
scanf("no \n");
}
}
請問為何按下F11後只有一串奇怪數字 >^< 感謝回答
剛剛複製錯誤 SOR
刪除似乎也可行??
回覆刪除#include
int main()
{
int n;
scanf("%d",&n);
if(n%4==0)
if(n%100!=0)
{
printf("是\n");
}
else
{
printf("否\n");
}
}
這樣輸入2021就沒有輸出東西了耶......🤔
刪除想請問,為啥照著範例打,結果最後一個else被檢查出沒有作為前提的if?
回覆刪除我剛剛也出現這個問題,我是scanf後面沒有加分號「;」,不知道你是不是跟我一樣XDDD
刪除直接把程式碼複製貼上還是這樣嗎?
刪除作者已經移除這則留言。
回覆刪除請問第四行year前面的"&"是什麼意思?
回覆刪除用scanf輸入的變數前面都要加&哦,只有char陣列搭配%s的時候不用加~
刪除那if或while可以判斷兩個條件嗎?就是兩個條件都要符合才能執行
回覆刪除