我正在尝试编写一个打印圣诞节歌曲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天,我的真爱给了我一个逻辑错误。
在圣诞节的第十二天,我的真爱给了我一个逻辑错误。
按任意键继续 。 。
答案 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";