if语句
实现两个分支的选择结构
语句结构
一般形式(3中):
- if(表达式)
语句; - if(表达式)
语句1;
else
语句2; - //多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
第一种实例:
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age<18)
{
printf("未成年\n");
}
}
运行结果:
输入小于18的数,则显示未成年
第二种实例:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
}
运行结果:
输入小于18的数,则显示未成年
输入大于等于18的数,则显示成年
第三种实例:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age<18)
{
printf("少年\n");
}
else if (age >= 18 && age<30)
{
printf("青年\n");
}
else if (age >= 30 && age<50)
{
printf("中年\n");
}
else if (age >= 50 && age<80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
运行结果:
输入小于18的数,则显示少年
输入大于等于18且小于30的数,则显示青年
输入大于等于30且小于50的数,则显示中年
输入大于等于50且小于80的数,则显示老年
输入其他的数,则显示老寿星
如果表达式的结果为真,则语句执行
在C语言中0表示假,非0表示真
if语句的嵌套
if (表达式)
{
//内嵌if
if (表达式)
{
语句列表1;
}
else
{
语句列表2;
}
}
else
{
//内嵌if
if (表达式)
{
语句列表1;
}
else
{
语句列表2;
}
}
else的匹配:else是和它离的最近的if匹配的。
switch语句
switch语句是多分支选择语句
switch(整型表达式)
{
语句项;
}
语句项:
是一些case语句:
case 整形常量表达式:
语句;
switch允许嵌套使用
switch(整型表达式)
{
case :
switch (整型表达式)
{
语句项;
}
}
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
#include <stdio.h>
int main()
{
int day = 0;
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,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
switch 语句必须遵循下面的规则:
- switch 语句中的表达式是一个常量表达式,必须是一个整型或枚举类型。
- 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
- case 的常量表达式必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
- 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
- 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
- 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,将会继续进行后面的 case,直到遇到 break 为止。
- 一个 switch 语句可以有一个可选的 default子句,出现在 switch 的结尾。default子句可用于在上面所有 case 都不为真时执行一个任务。default子句中的 break 语句不是必需的。
- 每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
例如:
#include<stdio.h>//头文件
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
结果:
m=5, n=3