省略C ++切换大小写的默认大小写

时间:2018-12-05 19:19:23

标签: c++ switch-statement

我正在尝试编写一个打印圣诞节歌曲12天的程序。有没有办法不执行开关的默认块?

#include <iostream>

using namespace std;

int main() {
    string day[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eith", "ninth", "tenth", "eleventh", "twelth"};

    for (int i = 1 ; i <= 12 ; i++) {
        string gift = "";

        switch (i) {
            case 12: gift += "twelve durmmers drumming, ";
            case 11: gift += "eleven pipers piping, ";
            case 10: gift += "ten lords a-leaping, ";
            case 9: gift += "nine ladies dancing, ";
            case 8: gift += "eight maids a-milking, ";
            case 7: gift += "seven swans a-swimming, ";
            case 6: gift += "six geese a-laying, ";
            case 5: gift += "five golden rings, ";
            case 4: gift += "four calling birds, ";
            case 3: gift += "three french hens, ";
            case 2: gift += "two turtle doves ";
            case 1:
                if(i > 1) {
                    gift += "and ";
                }
                gift += "a partrige in a pear tree";
            **default: gift = "a logic error";/// SHOULD NEVER EXECUTE**
        }

        cout << "On the " << day[i - 1] << " day of Chirstmas my true love gave to me " << gift << "." << endl;
    }

    system("pause");

    return 0;
}

输出显示此内容而不是歌曲:

在圣诞节的第一天,我的真爱给了我一个逻辑错误。
在圣诞节的第二天,我的爱给了我一个逻辑错误。
在圣诞节的第三天,我的了我逻辑上的错误。真正的爱给了我一个逻辑错误。
在圣诞节的第四天,我的真爱给了我一个逻辑错误。
在圣诞节的第五天,我的真爱给了我一个逻辑错误。 br />在圣诞节的第六天,我的真爱给了我一个逻辑错误。
在圣诞节的第六天,我的真爱给了我一个逻辑错误。在圣诞节的第九天,我的真爱给了我一个逻辑错误。
在圣诞节的第九天,我的真爱给了我一个逻辑错误。
在圣诞节的第十天,我的真爱给了我对我来说是逻辑错误。
在圣诞节的第11天,我的真爱给了我一个逻辑错误。
在圣诞节的第十二天,我的真爱给了我一个逻辑错误。
按任意键继续 。 。

1 个答案:

答案 0 :(得分:4)

您忘记了break语句。如果没有break语句,则逻辑将流入下一个case,就像处理其他所有cases(12、11、10等)一样。

 case 2: gift += "two turtle doves ";
 case 1:
    if(i > 1) 
      gift += "and ";
    gift += "a partrige in a pear tree";
 break;  // <-- Missing

 default: gift = "a logic error";