什么是语句?

C语言中由一个分号;隔开的就是一条语句。比如:

printf("Hello world");
1 + 2;

分支语句(选择结构)

  • if

if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;

解释一下:如果表达式的结果为真,则语句执行

在C语言中如何判断真假?

| 0表示假,非0表示真。

注意:else是和它离的最近的if匹配的


  • switch

常用于多分支的情况。比如:

输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期七
switch(整型表达式)
{
语句项;//语句项是一些case语句;如:case 整型常量表达式:
语句;
}

在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。比如:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
int day = 0;
scanf("%d", &day);
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;//break语句的实际作用是把语句划分为不同的部分
}
return 0;
}


default子句

如果表达的值与所有的case标签的值都不匹配怎么办?

其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条default子句,把下面的标签

default:

写在任何一个case标签可以出现的位置。

当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。

所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。


循环语句

  • while

while(表达式)
循环语句;

C 语言中的分支与循环语句_do while语句


  • for

for(表达式1;表达式2;表达式3)
循环语句;
//表达式1为初始化部分,用于初始化变量的。
//表达式2为条件判断部分,用于判断循环时候终止。
//表达式3为调整部分,用于循环条件的调整。

C 语言中的分支与循环语句_while语句_02

for语句的循环控制变量

①不可在for 循环体内修改循环变量,防止 for 循环失去控制。

②建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{
}
//两边都是闭区间
for(i=0; i<=9; i++)
{
}

③for循环的初始化、调整、判断都可以省略,但是:for循环的判断部分如果被省略,那判断条件就是:恒为正,可能会照成一直满足条件一直输出。如果对代码不是非常熟练,建议不要随便省略


  • do while

do
{
循环语句;
}
while(表达式);

C 语言中的分支与循环语句_for语句_03

do语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用。