在认识分支语句之前先搞清楚什么是语句?
语句:C语言中用一个分号隔开的就是一条语句,比如printf("hehe");
一、if else分支语句
如下代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age =10;//分支语句默认只执行一句话
if (age >= 18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
输出如下
如果这时候再这样打印并输出代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age =20;//分支语句默认只执行一句话
if (age >= 18)
printf("成年\n");
else
printf("未成年\n");
printf("不能谈恋爱\n");
return 0;
}
输出结果如下
可以看见我们希望看见的结果并不是这样,怎么样变成自己希望的样子呢?这时我们需要加上一个大括号使其变成一个代码块。代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age =20;//分支语句默认只执行一句话
if (age >= 18)
printf("成年\n");
else
{
printf("未成年\n");
printf("不能谈恋爱\n");
}
return 0;
}
输出结果如下
所以说,若想分支语句执行多条语句,需要加上大括号使其变成一个代码块。
二、switch分支语句
switch语句也是是一种分支语句,常常用于多分支的情况。
如果这时我想要实现在键盘输入数字1;就可以在屏幕上显示星期一;以此类推至星期天
我输入代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期天\n");
}
return 0;
}
现在我输入1,看其结果如下
这时再输入数字2试试看,其结果如下
出现上述情况是因为,输入1之后就按照case语句顺序执行了,并没有停止的意思,所以就将case1-7的语句全部实现了。
那么应该如何实现上述语句呢?
这时在每个case语句后加上break试试看。
代码变更如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
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;
}
return 0;
}
其输入数字1的输出结果如下
可以看见在每个case语句后加上break就可以实现上述语句了。
所以如果想实现真正的“分支”就要在每个case语句后加上“break”。
再实现一个程序:现在希望输入数字1-5时屏幕会出现“工作日”,输入数字6-7屏幕会出现“休息日”。
其代码实现如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
其输出结果如下
但是现在我输错了数字,我现在输入了数字8会怎么样呢?
输入数字8结果如下
可以看见,输入了数字8程序并不会报错,但是我想输入1-7以外的数字就显示输入错误,这时怎么办呢?
这时我们引入了default语句,看引入default语句代码会如何运行
更新代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
输出结果如下
可以看见引入default关键字就解决了上述问题。