0
点赞
收藏
分享

微信扫一扫

switch分支详解与while循环(day6)

switch为最直观的分支结构,其格式为  switch(表达式)->根据表达式的判断进入case条件入口。注意switch结构的特性:

1)允许嵌套(内嵌switch)

2)进入case后,按如无break或者continue语句,会按顺序执行所有case语句。

实例


#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<string.h>

int main()

{

int day = 0;

scanf("%d", &day);//注意,此处的逻辑为取出day变量的地址,将输入值直接存放到该变量的地址内。

//python在此处可以直接通过函数给变量赋值,但c语言直接赋值的要求更严格。

switch (day)

{

case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default: //default语句可以帮助检测超出case范围的,即没有case入口的情况。
printf("输入错误\n");
break;
}
return 0;

}

以上语句中,break为跳出当前代码块,在循环中break作用更多,后面详叙。

有时我们需要在进入case语句后,执行后面所有的case语句,这时候我们习惯在最后一条case语句中加上break,以表达跳出此代码块终止执行所有swich分支语句的,方便后续更改case。


我们现在通过一个实例来表现switch语句的执行顺序:

上一个实例是通过输入数字,来达到打印星期的目的,现在我们想通过输入数字,来得到剩余工作日/休息日的目的,我们对上个代码做如下修改:

实例

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>



int main()
{
int day = 0; scanf("%d", &day);

switch (day)
{
case 1:
printf("工作日\n");
break;
printf("工作日\n");
case 3:
printf("工作日\n");
case 4:
printf("工作日\n");
case 5:
printf("工作日\n");
break;
case 6:
printf("休息日\n");
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}

关于break在

switch(表达式)

{

case1:

case2:

。。。

}

break跳出的是switch代码块但对于if语句无影响,这与for循环中有所不同,在for循环中,break会直接跳出最近的一个循环结构代码块。


现在我们开始对while循环的理解,先上逻辑图:

switch分支详解与while循环(day6)_代码块

实例

​#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<string.h>



int main()

{

int a = 0;

while (a <= 5)

{
printf("%d\n", a);
a++;

{
if (a == 5)

{
printf("到最终值5了!\n");
break;
}
}
}
printf("循环结束!\n");
return 0;

}

可以尝试删除其中几个代码块括号,尝试一下运行有什么不同。尤其是对于break语句,可以看出break是从哪一个代码块跳了出去。

举报

相关推荐

0 条评论