分支语句一般用 if语句和switch语句 来实现
一 if语句
1.if
语法形式
if(表达式)
语句
if 语句执行流程
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏
2. else
语句形式
if(表达式)语句1else语句2
如果,表达式中的条件成立就输出语句1,不成立就是输出语句2。
举个例子(输入一个年龄,>=18输出成年,否则输出未成年。)
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age>=18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
但是有时候 我们在输入时要用大括号{}。下面举个例子。
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age>=18)
printf("成年\n");
printf("要对自己负责\n");
else
printf("未成年\n");
return 0;
}
如果语句1没有{},那么无论是>18还是<18都会输出“要对自己负责”。这时在语句1的位置就要加上{}。
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age>=18)
{
printf("成年\n");
printf("要对自己负责\n");
}
else
printf("未成年\n");
return 0;
}
4. 嵌套if
在if else语句中,会出现嵌套的形式,比如在else后的语句2中在一些情况下(根据题目)会来一个if else语句。
举例说明:
int main()
{
int n = 0;
scanf("%d", &n);
if (n == 0)
printf("输入的值是0\n");
else
{
if (n > 0)
printf("输入的值是正数\n");
else
printf("输入的值是负数\n");
}
return 0;
}
这种情况有更简洁的方法
int main()
{
int n = 0;
scanf("%d", &n);
if (n == 0)
printf("输入的值是0\n");
else if (n > 0)
printf("输入的值是正数\n");
else
printf("输入的值是负数\n");
}
return 0;
}
这种形式更简洁
在if else 语句中,如果有多个
if
和
else
,可以记住这样⼀条规则,
else
总是跟最接近的
if
匹配。
我们⾸先从下⾯代码开始。
二 switch 语句
switch
语句是⼀种特殊形式的
if...else
结构,⽤于判断条件有多个结果的情况。它把多重
的
else if
改成更易⽤、可读性更好的形式。
语法形式
switch (expression){case value1: statementbreakcase value2: statementbreakdefault : statement}
注意:
switch
后的
expression
必须是整型表达式
case
后的值,必须是整形常量表达式
下面是一个例子:输入任意一个整数值,计算除三之后的余数。
用if语句:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n%3 == 0)
printf("整除,余数为0\n");
else if(n%3 == 1)
printf("余数是1\n");
else
printf("余数是2\n");
return 0;
用switch语句:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
2.switch中的break
注意break,break的作用是跳出switch语句,没有break的话代码会继续执行就会执行下面的case语句。
在
switch
语句中
break
语句是⾮常重要的,能实现真正的分⽀效果。
当然也不是每个case语句中都有break,要根据实际情况来区分。
下面举一个例子
输入1-5,输出“工作日”
输入6-7,输出“休息日”
#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;
}
3.switch中的default
switch后的expression的结果不是value1,也不是value2的时候,就会执行default语句。
比如上面的例子输入8,没有与之匹敌的case,就会执行default语句
#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;
}