系列文章目录
前言
C语句可分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
本次介绍的是控制语句。
一、控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语 言有九种控制语句。 可分成以下三类:
- 条件判断语句也叫分支语句:if语句、switch语句;
- 循环执行语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
二、分支语句(选择语句)
2.1if语句
if语句的语法结构
演示代码
演示1
演示2
演示3
#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");
}
}
2.1.1 else的用法
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
else会和离它最近的if形成匹配
2.1.2if语句的书写
//代码1
if (condition) {
return x; }
return y;
//代码2
if(condition) //代码2看着舒服一些,逻辑清楚。
{
return x;
}
else
{
return y;
}
//代码3
int num = 1;
if(num == 5)
{
printf("hehe\n");
}
//代码4
int num = 1; //代码4可以防止将==写成=,减少犯错。
if(5 == num)
{
printf("hehe\n");
}
2.2 switch语句
switch语句常用于多分支语句
如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期七
如果用if语句写的话
#include<stdio.h>
int main() //这种方式太繁琐了
{
int day = 0;
scanf("%d", &day);
if (1 == day)
{
printf("星期一");
}
else if (2 == day)
{
printf("星期二");
}
else if (3 == day)
{
printf("星期三");
}
else if (4 == day)
{
printf("星期四");
}
else if (5 == day)
{
printf("星期五");
}
else if (6 == day)
{
printf("星期六");
}
else
{
printf("星期日");
}
return 0;
}
switch语句可以使我们的程序简单一点。
下面我们一起了解一下switch语句
首先switch语句的语法结构
switch(整型表达式)
{
语句项;
}
//语句项是什么?
//是一些case语句:
//如下:
case 整形常量表达式:
语句;
下面我们用switch语句写一下上面的案例
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期日");
break;
}
return 0;
}
划重点在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
上面案例如果没有break时,运行结果
可以看到这样语句从case进入,在运行到最后时结束。
2.2.1 break作用
break会把switch语句划分为不同的分支部分,语句从case进入,在遇到break时跳出结束。
2.2.2 default子句
当表达的值与所有的case标签的值都不匹配怎么办?
结果就是所有的语句都被跳过了。
以上面案例演示一下
当我们输入值 > 7时,没有匹配的case值,编译器会自动跳过switch语句,什么都不做。
这个时候如果你并不想编译器忽略所有不匹配标签的值时。
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
总结
今天的分享就到这里,谢谢大家,求三连。