先看以下代码
#include <bits/stdc++.h>
using namespace std;
/*
中间删除,防止该帖被判定为题解
*/
const int N=4;
int n;
char zmb[N]= {'a','b','c'};
int main() {
cin>>n;
switch (n) {//注意下面的代码
case 1: {r1{t1}}
case 2: {r1{r2{t2}}}
case 3: {r1{r2{r3{t3}}}}
case 4: {r1{r2{r3{r4{t4}}}}}
case 5: {r1{r2{r3{r4{r5{t5}}}}}}
case 6: {r1{r2{r3{r4{r5{r6{t6}}}}}}}
case 7: {r1{r2{r3{r4{r5{r6{r7{t7}}}}}}}}
case 8: {r1{r2{r3{r4{r5{r6{r7{r8{t8}}}}}}}}}
}
return 0;
}
编译是没有问题的,但是运行完发现,如果输入2,则会从case 2语句执行到case 3语句,这是因为switch语句是选择语句,会将符合条件的语句后的语句全部执行。我就是这样错的。
#include <bits/stdc++.h>
using namespace std;
/*
中间删除,防止该帖被判定为题解
*/
const int N=4;
int n;
char zmb[N]= {'a','b','c'};
int main() {
cin>>n;
switch (n) { //注意下面的代码
case 1: {r1{t1}break;}
case 2: {r1{r2{t2}}break;}
case 3: {r1{r2{r3{t3}}}break;}
case 4: {r1{r2{r3{r4{t4}}}}break;}
case 5: {r1{r2{r3{r4{r5{t5}}}}}break;}
case 6: {r1{r2{r3{r4{r5{r6{t6}}}}}}break;}
case 7: {r1{r2{r3{r4{r5{r6{r7{t7}}}}}}}break;}
case 8: {r1{r2{r3{r4{r5{r6{r7{r8{t8}}}}}}}}break;}
}
return 0;
}
然后就会发现,没有问题了(@^_^@)。