(C++入门---3)分支结构(if else)

本文介绍了C++中的分支结构,包括if语句和if...else语句的使用方法,讲解了如何根据条件执行不同的代码块,并通过示例解释了逻辑运算符在条件判断中的应用,以及如何判断闰年。
摘要由CSDN通过智能技术生成

编程时有时候需要根据某个条件是否满足来选择执行或不执行某些语句。

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

livercy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值