分支语句(选择结构)
if语法结构
//最基础
if(表达式)
{
return 语句;
}
return 0;
//是否--条件成立返回语句1,否则返回语句2
if(表达式)
{
return 语句1;
}
else
{
return 语句2;
}
//多分支--(多分支一般不用if,用Switch)
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
else//不必要的时候else不写,代码也是正常运行的
语句4;
一:多行并列判断
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
/*int age = 19;//超过18执行为空
if (age < 18)
printf("未成年\n");
return 0;*/
/*int age = 20;//执行为成年
if (age < 18)
printf("未成年\n");
else
printf("成年\n");
return 0;*/
//多行并列判断
int age = 99;//执行为长寿
if (age < 18)
printf("未成年\n");
else if (age >= 18 && age < 28)
printf("青年\n");
else if (age >= 28 && age < 50)
printf("壮年\n");
else if (age >= 50 && age < 90)
printf("老年\n");
else
printf("长寿\n");
}
运行结果:
二:分if else俩个逻辑全局去判断
int main()
{
int age = 49;
if (age < 18)
printf("未成年\n");
else
{
if (age >= 18 && age < 28)
printf("青年\n");
else if (age >= 28 && age < 50)
printf("壮年\n");
else if (age >= 50 && age < 90)
printf("老年\n");
else
printf("长寿\n");\
}
}
运行结果:
代码不规范容易误读----else离最近没匹配的if进行配对
例一:规范写法输出空
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("昭君");
else
printf("嫦娥");
}
return 0;
}
规范的运行结果为空:
不规范的运行也是空(如下图),编译器承认的else和红色的if配对,即使else位置读起来是和黄色if配对,如果真的想和黄色if配对,加一个大括号,一个大括号代表一个代码块。
加个大括号,此时else和最上面那个if配对。
Switch语句也是分支语句,常用于多分支的情况。
Switch(整型表达式)
{
case 整型常量表达式:
语句;
}
在Switch语句中,无法直接实现分支,需要搭配break才能做到。
break语句作用:是把语句列表划分为不同的部分。
default子句作用:超出限定范围输出空。在Switch语句只能出现一次,建议放在语句的最后面,他的位置没有限制,如果你想放最前面也是可以的。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("输入错误\n");//这句话建议不写直接break
break;
}
}
运行结果:输入8执行
Switch允许嵌套使用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)//此时n=2,所以执行case 2
{
case 1://跳过
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
}
printf("n = %d, m = %d\n", n, m);
return 0;
}
运行结果: