10C++选择结构(4)——教学

一、switch语句

(第25课 成绩等级)

问题:风之巅小学规定,若测试成绩大于或等于90分为“A”,大于或等于70分小于90分为“B”,大于或等于60分小于70分为“C”,60分以下为“D”。试编一程序,输入一个成绩,输出它的等级。
流程图如下:

用if语句处理多个分支时需使用if-else-if结构,分支越多,嵌套的if语句层就越多,程序不但庞大而且理解也比较困难。

C++提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句。它可以方便地实现深层嵌套的if-else逻辑。

switch语句一般使用如下格式:
switch (表达式)
{
case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
..........
case 常量表达式n:语句n;break;
default:语句n+1;break;
}

先计算switch表达式的值,当表达式的值与某一个case子句中的常量表达式相匹配时,就执行此case子句中的内嵌语句,并顺序执行之后的所有语句,直到遇到break语句为止;若所有的case子句中常量表达式的值都不能与switch表达式的值相匹配,就执行default子句的内嵌语句。switch后面括号内的表达式,可以是整型、字符型、布尔型。每一个case 表达式的值必须互不相同,否则就会出现互相矛盾的现象。若各个case和default子句中都有break语句,则他们的出现次序不影响执行结果;case子句中可以包含多个执行的语句,不必用花括号括起来。
成绩等级程序可以用分支switch语句来编写,流程图如:

#include <typeinfo>    //变量类型头文件,还是有问题;无法判断int
#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    int n;
    char score;
    cout<<"请输入分数:";
    cin>>n;
    switch (n/10)    //n、10是整型,n/10也是整型
    {
        case 10:
        case 9:
            score='A';break;
        case 8:
        case 7:
            score='B';break;
        case 6:
            score='C';break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:
            score='D';break;
        default:
            score='32';break;    //一个空格赋值给score
    }
    cout<<score;
    return 0;
 }

英汉小词典:
switch 条件选择;开关
case 情况
break 终止
default 默认;系统默认值

二、switch语句的应用

(第26课 王宅六味)
例程:给“王宅六味”按1~6编号,试编一个菜名查询程序,输入编号输出菜名。(浙江省金华市的王宅,有着源远流长的农耕文化,也有着令人垂涎的美味,
其中“寿仙菇、酒糟芋、下山笋、太师豆腐、 孝子鱼、猪全福” 流传最久最广,称为“王宅六味”。)

三目运算符

三目运算符(也称为条件运算符)在C++中的一般形式是:
condition ? expr1 : expr2;
其中condition是一个返回布尔值的表达式,expr1和expr2可以是任意表达式。如果condition为真,则执行expr1,否则执行expr2。
下面是一个使用三元运算符的简单例子:

#include <iostream>
int main() {
    int a = 10;
    int b = 20;
    int max = (a > b) ? a : b;
    std::cout << "Max value is: " << max << std::endl;
    return 0;
}
posted @ 2024-11-29 15:21  gdyyx  阅读(182)  评论(0)    收藏  举报