C++中组合使用多个 if…else 结构

C++中组合使用多个 if...else 结构

需要根据多个条件执行不同任务时,嵌套 if 语句很有用,也可组合使用多个 if...else 结构。

C++ 中的 if...else if...else 语句的语法:

cpp 复制代码
if(boolean_expression 1)
{
    // 当布尔表达式 1 为真时执行
}
else if( boolean_expression 2)
{
    // 当布尔表达式 2 为真时执行
}
else if( boolean_expression 3)
{
    // 当布尔表达式 3 为真时执行
}
else
{
    // 当上面条件都不为真时执行
}

当使用 if...else if...else 语句时,以下几点需要注意:

一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。

一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。

一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

以下示例程序让用户输入星期几, 并使用一组 if...else 结构告诉用户它是以哪颗星星命名的。

cpp 复制代码
#include <iostream>
using namespace std;

int main()
{
    enum DaysOfWeek
    {
        Sunday = 0,
        Monday,
        Tuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday
    };

    cout << "Find what days of the week are named after!" << endl;
    cout << "Enter a number for a day (Sunday = 0): ";

    int dayInput = Sunday;   // Initialize to Sunday
    cin >> dayInput;

    if (dayInput == Sunday)
        cout << "Sunday was named after the Sun" << endl;
    else if (dayInput == Monday)
        cout << "Monday was named after the Moon" << endl;
    else if (dayInput == Tuesday)
        cout << "Tuesday was named after Mars" << endl;
    else if (dayInput == Wednesday)
        cout << "Wednesday was named after Mercury" << endl;
    else if (dayInput == Thursday)
        cout << "Thursday was named after Jupiter" << endl;
    else if (dayInput == Friday)
        cout << "Friday was named after Venus" << endl;
    else if (dayInput == Saturday)
        cout << "Saturday was named after Saturn" << endl;
    else
        cout << "Wrong input, execute again" << endl;

    return 0;
}

输出:

复制代码
Find what days of the week are named after!
Enter a number for a day (Sunday = 0): 5
Friday was named after Venus

再次运行的输出:

复制代码
Find what days of the week are named after!
Enter a number for a day (Sunday = 0): 9
Wrong input, execute again

分析:

第 22~37 行的 if-else-if 结构检查用户输入并生成相应的输出。第二次运行的输出表明,如果用户输入的不是 0~6,即不对应于一个星期的任何一天,程序将指出这一点。这种结构的优点是,非常适合用于检查互斥的条件,即星期一不可能是星期二,而无效输入不与一个星期的任何一天对应。另一个有趣的地方是,在 if 语句中使用了第 5 行声明的枚举 DaysOfWeek。原本可以将用户输入与整数(如

0 表示星期天等)进行比较,但通过使用枚举量 Sunday,代码的可读性更强。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,

分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,

fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,

TCP/IP,协程,DPDK等技术内容

点击立即学习:C/C++后台高级服务器课程

相关推荐
故事和你9124 分钟前
洛谷-数据结构1-1-线性表1
开发语言·数据结构·c++·算法·leetcode·动态规划·图论
脱氧核糖核酸__27 分钟前
LeetCode热题100——53.最大子数组和(题解+答案+要点)
数据结构·c++·算法·leetcode
脱氧核糖核酸__1 小时前
LeetCode 热题100——42.接雨水(题目+题解+答案)
数据结构·c++·算法·leetcode
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【线性扫描贪心】:数列分段 Section I
c++·算法·编程·贪心·csp·信奥赛·线性扫描贪心
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【线性扫描贪心】:分糖果
c++·算法·贪心算法·csp·信奥赛·线性扫描贪心·分糖果
leaves falling2 小时前
C++模板进阶
开发语言·c++
无敌昊哥战神3 小时前
【保姆级题解】力扣17. 电话号码的字母组合 (回溯算法经典入门) | Python/C/C++多语言详解
c语言·c++·python·算法·leetcode
脱氧核糖核酸__3 小时前
LeetCode热题100——238.除了自身以外数组的乘积(题目+题解+答案)
数据结构·c++·算法·leetcode
ouliten3 小时前
C++笔记:std::invoke
c++·笔记
j_xxx404_4 小时前
C++算法:哈希表(简介|两数之和|判断是否互为字符重排)
数据结构·c++·算法·leetcode·蓝桥杯·力扣·散列表