使用switch语句注意的问题
查看原帖
使用switch语句注意的问题
1459579
YujinSharp楼主2024/12/22 11:24

先看以下代码

核心部分删掉了,不是题解
#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语句是选择语句,会将符合条件的语句后的语句全部执行。我就是这样错的。

因此:一定要加break;!!!

改为下面这样
#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;
}

然后就会发现,没有问题了(@^_^@)。

2024/12/22 11:24
加载中...