文章目录
前言
在C语言中语句可以分为一下五类:
- 表达式语句
- 函数调用语句
- 控制语句 (控制语句可用于控制程序的执行流程,实现程序的各种结构方式,并且分成了分支,循环,转向三大类)
- 复合语句
- 空语句
提示:本篇文章主要介绍控制语句
一、分支语句(选择结构)
1.if语句
if语句的语法结构:
if (表达式):
语句1;
else
语句2;
//当要使用多分支的情况下
if (表达式1):
语句1;
else if (表达式2):
语句2;
else
语句3;
示例代码
#include <stdio.h>
int main()
{
int age = 0;
scanf_s("%d", &age);
if (age < 18)
{
printf("少年\n");
}
else if (age >= 18 && age < 30)
{
printf("青年\n");
}
else if (age >= 30 && age < 50)
{
printf("中年");
}
else
{
printf("老年");
}
return 0;
}
注意一种情况: 悬空else
//如下程序的结果是什么?
#include<stdio.h>
int main()
{
int a = 1;
int b = 3;
if (a == 0)
if (b == 3)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
这段代码运行后将不会有任何报错,也不会有任何结果.我们要知道else要和距离最近的if组成搭配,所以我们写代码要形成规范,代码风格很重要会增加代码的可读性。
改进后的代码
#include<stdio.h>
int main()
{
int a = 1;
int b = 3;
if (a == 0)
{
if (b == 3)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}
2.switch语句
switch也是一种分支语句,但是常常用于多分支的情况
比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
switch的语句
switch(整形表达式)
{
case 整形常量表达式:
语句;
}
并且在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;
}
有时候我们的需求改变了,想要周一到周五是weekday,周六周日是weekend,我们的代码就可以这样改
#include"stdio.h"
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
哈哈 虽然看着有点怪,但却是可以实现我们的目的
default子语句
倘若表达的值与所有的case标签的值都不匹配怎么办?其实也没什么,结构就是所有的语句都被跳过而已,程序不会终止也不会报错,但是如果你不想忽略不匹配所有标签的表达式的值是该怎么办呢,你可以在语句列表中增加一条default语句.
这里说一个编程好习惯
尽量在每一个switch语句中方一个default哦,甚至还可以再加一个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;
default:
break;
}
return 0;
}
二、循环语句
循环语句具体可以分为三类
1.while循环
2.for循环
3.do while循环
1.while循环
//while的语法结构
while(表达式):
循环语句
比如我们可以写一个循环打印1-10的代码
#include"stdio.h"
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d \n", i);
i++;
}
return 0;
}
while语句中的break和continue
break的作用
在循环中直接遇到break,那么那么就直接停止后期的所有循环,直接终止循环.所以while中的break是用于永久终止循环的
例如我们在上面的代码中添加break为例
#include"stdio.h"
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d \n", i);
if (i == 5)
{
break;
}
i++;
}
return 0;
}
尝试思考下这个代码的结果是什么呢?
好啦,答案揭晓,最终的输出结果是1,2,3,4,5,可以看见当循环碰到break的时候会直接跳出整个循环,这就是break的作用
continue的作用
我们来看下面的代码
#include"stdio.h"
int main()
{
int i = 0;
while (i <= 10)
{
i = i+1;
if (i == 5)
{
continue;
}
printf("%d \n", i);
}
return 0;
}
1
2
3
4
6
7
8
9
10
11
以上是程序输出的效果,可见continue的作用是终止本次循环,也就是本次循环中continue后面的代码不会运行,而是直接调到while语句的判断部分,进行下一次循环的入口判断.
2.for循环
//for循环的语法结构
for(表达式1;表达式2;表达式3)
循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量
表达式2
表达式2为判断部分,用于判断循环什么时候终止
表达式3
表达式3为调整部分,用于循环条件的调整
一个关于for循环的例子
int main()
{
for (int i = 1; i <=10; i++)
{
printf("%d ", i);
}
return 0;
}
1-10的循环打印
对比下for循环和while循环
int i=1;//初始化
while (i <= 10)//判断部分
{
printf("%d ", i);
i++;//调整部分
}
for (int i = 1; i <=10; i++)
{
printf("%d ", i);
}
可以发现在while循环中依然存在循环的三个必要条件,但三个部分偏离的比较远,所以在查找和修改的时候就不够集中和方便,所以,for的循环风格就更胜一筹,for循环的使用频率也最高
break和continue在for循环中的运用
二者的意义在while中是一样的
如下
//break 直接跳过剩下的循环
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ",i);
}
//continue 跳过本次循环进行下一次循环
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
3.do…while()循环
//do语句的语法
do
循环语句;
while(表达式);
do语句循环至少会执行一次,使用的场景有限,不会经常使用,一下是do语句的使用示例
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
} while (i <= 10);
do…while()中的break和continue
与本文两个循环的break和continue是同样的用发,就不再过多赘述了
//break
#include <stdio.h>
int main()
{
int i = 1;
do
{
if(5 == i)
break;
printf("%d ", i);
i=i+1;
}
while(i<=10);
return 0;
}
//continue
#include <stdio.h>
int main()
{
int i = 1;
do
{
if(5 == i)
continue;
printf("%d ", i);
i=i+1;
}
while(i<=10);
return 0;
}
今天的内容就到这里啦,感觉有用的小伙伴可以点赞收藏哦,下一篇将会有相关知识点的练习哦