编程时有时候需要根据某个条件是否满足来选择执行或不执行某些语句。
C 和 C++ 的 if 语句可以实现这种根据条件判断来选择执行的功能。if 语句有两种形式,分别实现一路分支和两路分支。
if 语句
实现一路分支的基本方法是采用 if 语句:
if (<条件表达式>) <语句>
其语义为:如果<条件表达式>的值为非0 ( true ),即“真”,则执行<语句>,然后按顺序执行 if 语句的后继语句。如果<条件表达式>的值为0( false ),即“假”,则忽略<语句>,按顺序执行 if 语句的后继语句。
例如:
// 当分数 score 小于 60 时,执行输出语句,否则跳过该语句(不执行)
if (score < 60)
cout << "Sorry, you've failed!\n";
if…else 语句
实现两路分支的常用方法是采用 if…else 语句:
if (<条件表达式>) <语句1>
else <语句2>
其中,else 和<语句2>称为 else 分支或 else 子句。
其执行语义为:如果<条件表达式>的值为非0,即“真”( true ),则执行<语句1>,执行完<语句1>后继续执行整个 if 语句的后继语句(不执行<语句2>);如果<条件表达式>的值为0,即“假”( false ),则跳过<语句 1>,执行<语句2>,执行完<语句2>后继续执行整个 if 语句的后继语句。
即 if 语句是根据<条件表达式>的结果,选择<语句1>和<语句2>中的一个执行,执行完后,整个 if 语句也就执行完了。
例如:
// 当分数 score 大于等于 60 时输出"Passed",否则输出"Failed"
if (grade >= 60)
cout << ″Passed\n″;
else
cout << ″Failed\n″;
if 语句的分支有且只能有一条语句,如果某个分支不需要做任何事时,可以使用空语句,空语句就是一个独立的分号。如果需要做很多事,一条语句完成不了,可以使用复合语句。用花括号括起来的一条或者多条语句叫复合语句,复合语句可以当做一条语句来看。
例1:
// 当速度 speed 小于等于 120 时什么也不做,否则输出"危险驾驶"
if (speed <= 120)
;// 空语句
else
cout<<"危险驾驶"<<endl;
例2:
// 如果 a 大于 b 则交换 a、b 的值
if (a > b)
{
// 复合语句
int c = a;
a = b;
b = c;
}
C 和 C++ 中任何有值的表达式都可以作为条件表达式(计算结果非0则为真,0则为假)。如果需要综合判断多个条件,就需要使用逻辑运算符了。
例如如果要描述条件“分数 x 在0到100之间”,不能使用数学中的表达形式0 <= x <= 100,而应当使用逻辑运算符x >= 0 && x <= 100。
// 逻辑与 && 表示两个条件x >= 0 和 x <= 100 都为真,结果才为真
if (x >= 0 && x <= 100)
……
直接写成0 <= x <= 100编译器也不会报错,但语义完全不一样:
// 表示先计算 0 <= x ,结果可能是 true 或者 false,然后用该结果和 100 比较,所以该条件永远为真
if (0 <= x <= 100)
……
程序:判断输入的年份是否位闰年,是则输出 Yes,否则输出 No。
提示:闰年的判别条件是该年年份能被 4 整除但不能被 100 整除、或者能被 400 整除。闰年的 2 月有 29 天,其它月份的天数和非闰年是一样的。
测试输入:
2017
预期输出:
No
测试输入:
2000
预期输出:
Yes
// 包含两种I/O库,可以使用任一种输入输出方式
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int year;
cin >> year;
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
cout << "Yes";
}
else cout << "No";
cout << endl;
return 0;
}
本文介绍了C++中的分支结构,包括if语句和if...else语句的使用方法,讲解了如何根据条件执行不同的代码块,并通过示例解释了逻辑运算符在条件判断中的应用,以及如何判断闰年。
分支结构(if else)&spm=1001.2101.3001.5002&articleId=120279612&d=1&t=3&u=af0bf2bf8c95442b8e1ef0cb7cd23f8c)
1582

被折叠的 条评论
为什么被折叠?



