C语言的分支结构可以比喻成一棵大树上的许多树枝,C语言的分支结构可以由if、switch两种语句实现,下面我将介绍一下这两种语句。
一、if语句
1、if
if语句的语法形式如下:
if (表达式)
语句
如果表达式为真(值为非0),则语句执行;如果表达式的为假(值为0),则语句不执行。
2、else
if...else...语句的语法形式如下:
if(表达式)
语句1
else
语句2
例、判断一个人是否成年。若他/她的年龄>=18岁,打印“成年”;否则打印“未成年”。
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
3、分支语句中包含多条语句
一般情况下,默认if、else后只跟一条语句。
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
printf("可以打游戏了");
return 0;
}
上面出现的情况是因为if语句只能控制一条语句,它控制的那条语句是printf("成年\n");。而printf("可以打游戏了");这条语句是独立存在的,它不受前面的if语句控制,所以该语句也会执行。要是不想出现这种情况,只需要用大括号{}把上面两条语句括起来,如下所示:
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("成年\n");
printf("可以打游戏了");
}
return 0;
}
4、嵌套if语句
在if...else...语句中,else可与另一个if语句连用。
例、输入一个整数,判断这个整数是正数、负数还是0。
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int a = 0;
scanf("%d", &a);
if (a == 0)
printf("该整数为0\n");
else if (a > 0)
printf("该整数为正数\n");
else
printf("该整数为负数\n");
return 0;
}
5、悬空else语句
如果有许多个if和else,请记住一条准则:else总是和最近的if相匹配。
例、
#include "stdio.h"
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("我是好人\n");
else
printf("我是大好人\n");
return 0;
}
我们可以发现:什么都不输出。正是因为悬空else造成的。原因如下:由于代码的位置摆放,我们认为第一个if是和else匹配的,应该打印“我是大好人”。但实际else应该是和第二个if相匹配的(遵循上面的准则)。要先判断第一个if语句是否成立,才能判断接下来的第二个if语句条件是否成立;第一个if语句的条件不成立,所以不能继续判断第二个if语句的条件成不成立,所以什么都不打印。
二、switch语句
switch语句的语法形式如下:
switch(表达式){
case 值1:语句;
case 值2:语句;
...
case 值n:语句;
default:语句;
}
注意:1、switch后面的表达式必须是整形表达式;
2、case后的值必须是整型常量表达式。
例、输入一个1~12的数字,打印对应的月份。
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int month = 0;
scanf("%d", &month);
switch (month)
{
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;
case 8:
printf("八月\n");
break;
case 9:
printf("九月\n");
break;
case 10:
printf("十月\n");
break;
case 11:
printf("十一月\n");
break;
case 12:
printf("十二月\n");
break;
}
return 0;
}
这里的break语句可以根据实际情况来选择是否使用。此外,如果,我们输入不在1~12范围内的数字,那么可以发现:什么都不打印。这时我们可以用default语句来打印除了1~12的其他内容,如下面的代码所示:
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int month = 0;
scanf("%d", &month);
switch (month)
{
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;
case 8:
printf("八月\n");
break;
case 9:
printf("九月\n");
break;
case 10:
printf("十月\n");
break;
case 11:
printf("十一月\n");
break;
case 12:
printf("十二月\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
当我们输入15时,打印的内容为“输入错误”。
以上就是C语言分支语句的简单介绍,如有错误,欢迎指正。