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;
}