自学内容网 自学内容网

[C/C++入门][ifelse]18、Switch星期课表

做一个星期课表,输入数字,返回星期几,并返回今天的课表

简单实现

#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
switch(n)
{
case 1:
cout << "Monday";
            cout << "课程是:"
break;
case 2:
cout << "Tuesday";
break;
case 3:
cout << "Wednesday";
break;
case 4:
cout << "Thursday";
break;
case 5:
cout << "Friday";
break;
case 6:
cout << "Saturday";
break;
case 7:
cout << "Sunday";
break;
default:
cout << "请输入正确的数1-7";
}
return 0; 
}
switch 语句是 C++ 中用于多分支选择的一种控制结构,它特别适用于当你的程序需要基于一个表达式的值来进行多个可能的选择时。相比于连续的 if...else if...else 语句链,switch 语句通常提供了更简洁、更易读的代码。

基本语法

switch 语句的基本语法如下:

switch (expression) {
    case constant-expression:
        statement(s);
        break;
    case constant-expression:
        statement(s);
        break;
    ...
    default:
        statement(s);
}

 

这里,expression 是一个整数表达式,constant-expression 必须是一个常量或常量表达式,通常是整数值。statement(s) 是当对应的 case 分支被选中时要执行的语句序列。

  1. 计算表达式:首先,switch 语句计算 expression 的值。
  2. 查找匹配:然后,它会寻找一个 case 标签,其后的 constant-expression 与 expression 的值相匹配。
  3. 执行语句:找到匹配后,执行该 case 下的语句序列。
  4. 自动穿透:除非遇到 break 语句,否则控制会继续执行下一个 case 的语句序列。这就是所谓的“穿透行为”。
  5. 默认情况:如果没有找到匹配的 case,则执行 default 分支下的语句(如果存在的话)。default 分支是可选的。

注意事项

  1. 穿透行为:在每个 case 分支后使用 break 语句是非常重要的,以防止不必要的代码执行。如果你希望在匹配后继续执行后续的 case,可以有意地省略 break
  2. 类型兼容性expression 和 constant-expression 必须具有类型兼容性,通常是整数类型。
  3. default 分支default 分支是在没有匹配的 case 时执行的,可以放在 switch 语句的任何位置,但通常放在最后。

(扩展1,使用数组和循环)更加完善一点的写法

#include <iostream>
#include <string>
using namespace std;

// 定义课程表
void printSchedule(int dayOfWeek) {
    // 课程列表
    string schedule[] = {
        "C++基础语法",
        "数据结构与算法",
        "面向对象设计",
        "C++标准库",
        "模板与泛型编程",
        "多线程编程",
        "网络编程"
    };

    // 星期几的字符串数组
    string daysOfWeek[] = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};

    // 检查输入是否有效
    if (dayOfWeek < 1 || dayOfWeek > 7) {
        cout << "输入无效,请输入1至7之间的数字。" << endl;
        return;
    }

    // 输出星期几
    cout << "今天是" << daysOfWeek[dayOfWeek - 1] << ",课程有:" << endl;

    // 输出当天的课程
    for (int i = 0; i < 7; i++) {
        cout << "课程" << i + 1 << ": " << schedule[(i + dayOfWeek - 1) % 7] << endl;
    }
}

int main() {
    int inputDay;
    cout << "请输入数字(1-7),对应星期一至星期日:" << endl;
    cin >> inputDay;
    printSchedule(inputDay);
    return 0;
}

(扩展2)使用switch和二维数组

#include <iostream>
#include <string>
using namespace std;

// 定义课程表
void printSchedule(int dayOfWeek) {
    // 课程列表
    string schedule[][7] = {
        {"C++基础语法", "数据结构与算法", "面向对象设计", "C++标准库", "模板与泛型编程", "多线程编程", "网络编程"},
        {"面向对象设计", "C++标准库", "模板与泛型编程", "多线程编程", "网络编程", "C++基础语法", "数据结构与算法"},
        {"模板与泛型编程", "多线程编程", "网络编程", "C++基础语法", "数据结构与算法", "面向对象设计", "C++标准库"},
        {"多线程编程", "网络编程", "C++基础语法", "数据结构与算法", "面向对象设计", "C++标准库", "模板与泛型编程"},
        {"网络编程", "C++基础语法", "数据结构与算法", "面向对象设计", "C++标准库", "模板与泛型编程", "多线程编程"},
        {"数据结构与算法", "面向对象设计", "C++标准库", "模板与泛型编程", "多线程编程", "网络编程", "C++基础语法"},
        {"C++标准库", "模板与泛型编程", "多线程编程", "网络编程", "C++基础语法", "数据结构与算法", "面向对象设计"}
    };

    // 星期几的字符串数组
    string daysOfWeek[] = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};

    // 检查输入是否有效
    if (dayOfWeek < 1 || dayOfWeek > 7) {
        cout << "输入无效,请输入1至7之间的数字。" << endl;
        return;
    }

    // 输出星期几
    cout << "今天是" << daysOfWeek[dayOfWeek - 1] << ",课程有:" << endl;

    // 使用switch-case语句来选择正确的课程列表
    switch(dayOfWeek){
        case 1:
            for (int i = 0; i < 7; i++) {
                cout << "课程" << i + 1 << ": " << schedule[0][i] << endl;
            }
            break;
        case 2:
            for (int i = 0; i < 7; i++) {
                cout << "课程" << i + 1 << ": " << schedule[1][i] << endl;
            }
            break;
        case 3:
            for (int i = 0; i < 7; i++) {
                cout << "课程" << i + 1 << ": " << schedule[2][i] << endl;
            }
            break;
        case 4:
            for (int i = 0; i < 7; i++) {
                cout << "课程" << i + 1 << ": " << schedule[3][i] << endl;
            }
            break;
        case 5:
            for (int i = 0; i < 7; i++) {
                cout << "课程" << i + 1 << ": " << schedule[4][i] << endl;
            }
            break;
        case 6:
            for (int i = 0; i < 7; i++) {
                cout << "课程" << i + 1 << ": " << schedule[5][i] << endl;
            }
            break;
        case 7:
            for (int i = 0; i < 7; i++) {
                cout << "课程" << i + 1 << ": " << schedule[6][i] << endl;
            }
            break;
    }
}

int main() {
    int inputDay;
    cout << "请输入数字(1-7),对应星期一至星期日:" << endl;
    cin >> inputDay;
    printSchedule(inputDay);
    return 0;
}


原文地址:https://blog.csdn.net/qq_14840819/article/details/140486740

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!