C++青少年簡明教程:If選擇語句
C++中選擇語句的語法是:
if (條件) {
??? 條件成立時需要執行的語句...
} [else {
??? 條件不成立時需要執行的語句...
}]
說明:
if后面使用一個括號,括號里是條件——關系表達式。
所謂的關系表達式就是判斷數據的關系如何。
有如下幾種關系:
大于:> 比如 3>2
大于等于:>= 比如 5>=5
小于:< 比如 5<10
小于等于:<= 比如 10<=11
等于:== 比如 3+2 == 2+3
不等于:!= 比如 5 != 4+2
除了關系表達式之外,還有邏輯表達式,邏輯表達式可以表示多個條件之間的關系,有以下幾種邏輯運算:
并且:&&
或者:||
非:!
if語句(單分支選擇語句)
語法格式:
if(條件表達式)
語句或語句塊
執行流程圖:
例、讀入一個整數,如果是偶數,輸出yes,代碼如下:
#include <iostream>
using namespace std;int main() {int num;cout << "請輸入一個整數: ";cin >> num;if (num % 2 == 0) {cout << "yes" << endl;} if (num % 2 != 0){cout << "no" << endl;}return 0;
}
語法格式:
if(條件表達式)
??? 語句或語句塊1
else
??? 語句或語句塊2
執行流程圖:
例、前面提到的例子,用雙支選擇語句實現,代碼如下:
#include <iostream>
using namespace std;int main() {int num;cout << "請輸入一個整數: ";cin >> num;if (num % 2 == 0) {cout << "yes" << endl;} else {cout << "no" << endl;}return 0;
}
if語句的嵌套
在C++中,可以將一個if語句放在另一個if語句的內部,這樣就形成了if語句的嵌套結構。以實現更復雜的條件邏輯。
if(表達式1)
??? if(表達式2)
?????? 語句1;
??? else
?????? 語句2;??
else
?? if(表達式3)
?????? 語句3;
?? else
?????? 語句4;
示例:
#include <iostream>
using namespace std;int main() {int score; cout << "請輸入一個分數: ";cin >> score;if (score >= 60) { // 首先判斷分數是否及格cout << "及格" << endl;if (score >= 80) { // 如果及格,再判斷是否優秀cout << "優秀" << endl;} else {cout << "良好" << endl;}} else {cout << "不及格" << endl;if (score >= 50) { // 如果不及格,判斷是否接近及格cout << "接近及格" << endl;} else {cout << "情況不妙呀" << endl;}}return 0;
}
在這個例子中,首先判斷分數是否及格(大于等于60),如果及格,再進一步判斷是否優秀(大于等于80)。如果不及格,則判斷是否接近及格(大于等于50)。這個程序會輸出“及格”和“優秀”,因為分數是85。
請注意,過多層次的嵌套會使代碼難以閱讀和維護。
三目運算符
C++中的三目運算符(?:)是一種簡潔的條件運算符,其語法格式為:
(condition) ? true_expression : false_expression;
其含義是:如果 condition 為真,則表達式的值為 true_expression ,否則為 false_expression 。它可以用作簡單的 if-else 語句的替代者。
示例:
#include <iostream>
using namespace std;int main() {int a = 10;int b = 20;// 使用三目運算符int max = (a > b) ? a : b;cout << "最大值是:" << max << endl;return 0;
}
需要注意的是,三目運算符的優先級較低,因此在復雜的表達式中使用時,可能需要加上括號來明確運算順序。
三目運算符也可以嵌套使用。例如:
int num = 10;
int result;
result = (num > 5) ? ((num < 20) ? 100 : 200) : 300;
在上面的代碼中,如果num大于5小于20,則result的值為100,否則為200。如果num小于等于5,則result的值為300。
if-else if-else語句(多分支選擇語句)
語法格式:
if (條件1) {
??? 語句塊1
}
else if (條件2) {
??? 語句塊1
}
……
else {
??? 語句塊K
}
if-else if-else語句(多分支選擇語句)執行流程圖:
使用if-else if-else多分支選擇語句源碼:
#include <iostream>
using namespace std;int main() {int num;cout << "請輸入一個數字:";cin >> num;// 使用if語句if (num > 0) {cout << "這是一個正數" << endl;} else if (num == 0) {cout << "這是零" << endl;} else {cout << "這是一個負數" << endl;}return 0;
}
母子約定問題
源碼如下:
#include <iostream>using namespace std;int main() {int fenshu;cout << "請輸入考試分數:";cin >> fenshu;if (fenshu == 100)cout << "暑假不用寫作業";else if (fenshu >= 90)cout << "獎勵100元零花錢";else if (fenshu >= 80)cout << "獎勵10元零花錢";else if (fenshu >= 70)cout << "沒獎勵";else if (fenshu >= 60)cout << "暑假不能玩電子游戲";elsecout << "會發生可怕的事情...";return 0;
}
注意條件的順序!
練習題:閏年問題
判斷一個年份是否為閏年的規則是:
1.如果該年份能夠被4整除,但不能被100整除,則該年份是閏年。
2.如果該年份能夠被400整除,則該年份也是閏年。
例如,2004年是閏年,因為它能夠被4整除,但不能被100整除;而1900年不是閏年,因為它能夠被4整除,但同時也能被100整除,不符合第一條規則。而2000年是閏年,因為它能夠被400整除,符合第二條規則。
請用不同的方法實現。
附、參看代碼
#include <iostream>
using namespace std;int main() { int year; cout << "請輸入一個年份: "; cin >> year; // 判斷是否為閏年 if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { cout << year << " 是閏年." << endl; } else { cout << year << " 不是閏年." << endl; } return 0;
}
示例中,直接在main函數內部使用了if語句來判斷輸入的年份是否為閏年。如果滿足閏年的條件(即年份能被4整除但不能被100整除,或者能被400整除),則輸出該年份是閏年;否則,輸出該年份不是閏年。
如果您想要使用嵌套的if語句來判斷一個年份是否為閏年,可以像下面這樣寫:
#include <iostream>
using namespace std;int main() { int year; cout << "請輸入一個年份: "; cin >> year; // 使用嵌套的if語句判斷是否為閏年 if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) { cout << year << " 是閏年." << endl; } else { cout << year << " 不是閏年." << endl; } } else { cout << year << " 是閏年." << endl; } } else { cout << year << " 不是閏年." << endl; } return 0;
}