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 << "暑假不能玩电子游戏";
else
cout << "会发生可怕的事情...";
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;
}