当前位置:首页C++程序设计 > 正文

c++中的if语句,switch语句,多层条件语句

作者:野牛程序员:2023-02-24 09:41:29C++程序设计阅读 2751

在 C++ 中,有多种方式可以进行条件判断,包括 if 语句、switch 语句、多层条件语句等。

  1. if 语句

if 语句是最常用的条件语句之一,其语法如下:

if (condition) {
    // 如果条件成立,执行这里的语句
} else {
    // 如果条件不成立,执行这里的语句
}

其中,condition 是一个条件表达式,如果其值为 true,就执行花括号中的代码块;如果为 false,则执行 else 语句中的代码块。

  1. switch 语句

switch 语句也用于条件判断,适用于多个可能的条件值的情况,其语法如下:

switch (expression) {
    case value1:
        // 如果 expression 的值等于 value1,执行这里的语句
        break;
    case value2:
        // 如果 expression 的值等于 value2,执行这里的语句
        break;
    default:
        // 如果 expression 的值不等于任何一个 case 中的值,执行这里的语句
        break;
}

其中,expression 是需要进行条件判断的表达式,每个 case 后面跟的是一个值,表示如果 expression 的值等于该值,就会执行该 case 中的语句。如果 expression 的值不等于任何一个 case 中的值,则执行 default 中的语句。注意,每个 case 后面需要使用 break 语句结束该 case。

  1. 多层条件语句

在实际的开发中,有时候需要进行多层的条件判断,这时候可以使用多个 if 语句嵌套来实现。例如:

if (condition1) {
    if (condition2) {
        // 如果条件1和条件2都成立,执行这里的语句
    } else {
        // 如果条件1成立,但条件2不成立,执行这里的语句
    }
} else {
    // 如果条件1不成立,执行这里的语句
}

这种多层条件语句的缺点是代码可读性较差,容易出错。在实际的开发中,应该尽量避免使用多层条件语句,而是采用其他的编程技巧来简化代码。

当需要进行多个条件判断时,可以使用多层条件语句。多层条件语句是通过嵌套使用 if 语句或 switch 语句来实现的。

例如,下面的示例代码中,使用了多层 if 语句来判断输入的数是正数、负数还是零:

#include <iostream>
using namespace std;

int main() {
    int num;
    cout << "请输入一个整数:" << endl;
    cin >> num;
    if (num > 0) {
        cout << "这是一个正数" << endl;
    } else if (num < 0) {
        cout << "这是一个负数" << endl;
    } else {
        cout << "这是零" << endl;
    }
    return 0;
}
在上面的代码中,先通过 cin 语句获取输入的数,然后通过嵌套使用多层 if 语句来进行条件判断。如果输入的数大于 0,则输出“这是一个正数”;如果输入的数小于 0,则输出“这是一个负数”;如果输入的数等于 0,则输出“这是零”。
另外,如果多层条件判断中的条件比较复杂或者需要判断的情况比较多,可以使用 switch 语句来进行处理,如下面的示例代码所示:
#include <iostream>
using namespace std;

int main() {
    char grade;
    cout << "请输入一个等级(A、B、C、D、E):" << endl;
    cin >> grade;
    switch (grade) {
        case 'A':
            cout << "优秀" << endl;
            break;
        case 'B':
            cout << "良好" << endl;
            break;
        case 'C':
            cout << "中等" << endl;
            break;
        case 'D':
            cout << "及格" << endl;
            break;
        case 'E':
            cout << "不及格" << endl;
            break;
        default:
            cout << "输入有误" << endl;
            break;
    }
    return 0;
}

在上面的代码中,先通过 cin 语句获取输入的等级,然后使用 switch 语句来进行条件判断。如果输入的等级是 A,则输出“优秀”;如果输入的等级是 B,则输出“良好”;以此类推。如果输入的等级不是 A、B、C、D、E 中的任何一个,则输出“输入有误”。

需要注意的是,在 switch 语句中,case 后面跟的值必须是常量表达式,不能是变量或者表达式。同时,每个 case 语句后面必须加上 break 语句,用来跳出 switch 语句,否则会出现“case fall-through”现象,即程序会继续执行下一个 case 语句。如果需要执行多个 case 语句,则可以在需要执行的 case 语句后面省略 break 语句

当需要判断的情况非常多的时候,可以使用多层条件语句。多层条件语句的实现方法和 if 语句和 switch 语句类似,只不过需要嵌套多个 if 或 switch 语句。

以下是一个多层条件语句的示例代码:

#include <iostream>
using namespace std;

int main() {
    int score = 75;

    if (score >= 90) {
        cout << "A" << endl;
    } else if (score >= 80) {
        cout << "B" << endl;
    } else if (score >= 70) {
        cout << "C" << endl;
    } else if (score >= 60) {
        cout << "D" << endl;
    } else {
        cout << "E" << endl;
    }

    return 0;
}

这个示例中,首先判断 score 是否大于等于 90 分,如果是,则输出 A;否则,再判断 score 是否大于等于 80 分,如果是,则输出 B,以此类推。

多层条件语句可以比较清晰地表达多种情况的处理逻辑,但是嵌套过多也会使代码难以阅读和维护。在实际开发中,需要根据实际情况选择合适的判断语句结构。

当多层条件语句中的条件判断比较复杂时,可以使用嵌套的if语句或者switch语句,或者使用逻辑运算符来简化代码。

下面是一个使用嵌套if语句的例子,判断一个数是否为素数:

#include <iostream>
using namespace std;

int main()
{
    int num, i;
    bool isPrime = true;

    cout << "请输入一个正整数:";
    cin >> num;

    if (num <= 1)
        isPrime = false;
    else
    {
        for (i = 2; i <= num / 2; ++i)
        {
            if (num % i == 0)
            {
                isPrime = false;
                break;
            }
        }
    }

    if (isPrime)
        cout << num << " 是素数。";
    else
        cout << num << " 不是素数。";

    return 0;
}

下面是一个使用switch语句的例子,将数字转换为星期几:

#include <iostream>
using namespace std;

int main()
{
    int day;

    cout << "请输入数字 1 到 7:";
    cin >> day;

    switch (day)
    {
        case 1:
            cout << "星期一";
            break;
        case 2:
            cout << "星期二";
            break;
        case 3:
            cout << "星期三";
            break;
        case 4:
            cout << "星期四";
            break;
        case 5:
            cout << "星期五";
            break;
        case 6:
            cout << "星期六";
            break;
        case 7:
            cout << "星期日";
            break;
        default:
            cout << "输入有误!";
            break;
    }

    return 0;
}

使用逻辑运算符可以简化多层条件语句,例如将上面的判断是否为素数的例子改为:

#include <iostream>
using namespace std;

int main()
{
    int num, i;

    cout << "请输入一个正整数:";
    cin >> num;

    if (num <= 1)
        cout << num << " 不是素数。";
    else if (num == 2 || num == 3)
        cout << num << " 是素数。";
    else if (num % 2 == 0 || num % 3 == 0)
        cout << num << " 不是素数。";
    else
    {
        for (i = 5; i * i <= num; i += 6)
        {
            if (num % i == 0 || num % (i + 2) == 0)
            {
                cout << num << " 不是素数。";
                return 0;
            }
        }

        cout << num << " 是素数。";
    }

    return 0;
}

在上面的例子中,首先判断num是否小于等于1,然后判断num是否等于2或3,如果不是,则判断num是否可以被2或3整除,最后再进行更为复杂的素数判断。


实际上 switch 语句中的 case 标签必须是一个常量表达式,而不能是一个变量。

这意味着,在 switch 语句中,每个 case 标签后面的值必须是一个编译时可确定的常量,例如字面量、枚举常量、const 变量等等。不能使用变量作为 case 标签,因为变量的值只能在运行时确定。

例如:

int x = 2;
switch (x) {
    case 1:
        cout << "x is 1" << endl;
        break;
    case 2:
        cout << "x is 2" << endl;
        break;
    case 3:
        cout << "x is 3" << endl;
        break;
    default:
        cout << "x is not 1, 2 or 3" << endl;
        break;
}

这个 switch 语句是合法的,因为它的 case 标签是整数字面量 1、2 和 3。

另一方面,下面的 switch 语句是不合法的:

int x = 2;
switch (x) {
    case 1:
        cout << "x is 1" << endl;
        break;
    case x:  // 错误:case 标签必须是一个常量表达式
        cout << "x is 2" << endl;
        break;
    case 3:
        cout << "x is 3" << endl;
        break;
    default:
        cout << "x is not 1, 2 or 3" << endl;
        break;
}

因为 case 标签中的 x 不是一个常量表达式,而是一个变量。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 网站建设
  • 最新推荐

    热门点击