【C语言】第二章-分支和循环语句-1

第二章 分支和循环语句

第1节

什么是语句

  在C语言中由一个;隔开的就是一个语句。例如printf("Misaki");1 + 2;等等。

分支语句

if语句

  分支语句又叫选择结构,之前为大家演示过的if语句就是一个分支语句,在C语言逻辑中有着大量的使用范畴,是不可或缺的一部分。

  接下来为大家演示if的几种使用形式。

  形式一:

1
2
if (表达式)
语句;

  形式二:

1
2
3
4
if (表达式)
语句1;
else
语句2;

  形式三:

1
2
3
4
5
6
if (表达式)
语句1;
else if (表达式)
语句2;
else
语句三;

  简单解释一下,如果if括号中的表达式成立则执行语句1,如果不成立则进入else if表达式进行判断,如果还不成立直接执行else。而在C语言中可没有定义真假的变量,因此我们只好拿整数进行替代。在C语言中0表示真,非0表示假,进行条件判断的表达式的值都会用0和非0进行替代(但是一般多拿1来进行表示真的替代)。

  同时我建议在写if语句的时候下面条件执行的语句都能用{}来将他们括起来,表示这是一个代码块,这样我们不仅可以在代码块中写多个执行语句,也使程序更加可读。

1
2
3
4
5
6
7
8
9
10
11
12
13
if (表达式)
{
语句列表1;
}
else if (表达式)
{
语句列表2;
}
else
{
语句列表3;
}
system("pause");

  同时有一点需要强调,else永远与上面离它最近的if进行匹, 大家不要被缩进格式所迷惑。接下来进行几个实例演示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
int coding = 0;
printf("你会好好敲代码每天三小时,一次500行,不敲够不睡觉,像对待女朋友一样对待她么?\n");
scanf("%d", &coding);
if (coding == 1)
{
printf("加油坚持你会成功!\n");
}
else if(coding == 0)
{
printf("回家种田吧!\n");
}
else
{
printf("犹豫不决你在等什么?\n");
}
system("pause");
}

  我们的if语句就讲到这里,if语句使用十分简单却也十分灵活,但是大家千万注意尽量少的使用选择嵌套可以增强代码可读性。

switch语句

  switch语句也是一种分支语句,多用于多分支的情况。在某些情况下使用switch往往有着好的效果。

  比如说如果我们要根据用户输入的1-7来打印相应的星期,比如说用户输入1,我们则打印“星期一“”。在这种多分支的情况下,往往是switch语句的拿手好菜。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
int choice = 0;
printf("请输入数字:");
scanf("%d", &choice);
switch (choice)
{
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;
default:
break;
}
system("pause");
}

  switch的语法很简练,switch(整形表达式),下方的大括号中是一些case语句,case 整形常量表达式: 语句;当case后的常量==switch中的整形表达式的值时,case后的语句就会被执行,而switch语句一般都会配备一个default: 语句;这是在case语句没有被匹配上的时候就会执行default语句中的内容。大家还可以注意到每一个语句后都跟了个break;语句,这个break我们在循环中提到过一些,是跳出循环用的,不过在这里则是跳出switch用的,如果不加break语句,程序则会跟着匹配的case一直往下执行语句知道遇到break或者switch语句结束为止,因此break在这里不可或缺的,这也是switch一个很大的缺陷。

  switch虽然适用于多分支条件的情况下,但其本身有着极大的缺陷,并且实际上switch能实现的分支if语句也同样可以实现,有时候反倒会使我们的工作更加简单,因此我并不推荐在程序里经常使用switch,其中可读性低也是很重要的一部分原因。

循环语句

while循环

  while我们在初始C语言的章节已经涉猎,他是非常简单的一种循环语句,因为使用起来和if十分类似,不同点是if语句只判断一次条件,执行完则退出语句,但是while则是在每一轮循环结束后都要重新判断条件,如果条件依然成立则继续执行语句。

  打印0 - 9;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
int i = 0;
while (i < 10)
{
printf("%d\t", i);
i += 1;
}
printf("\n");
system("pause");
}

  我相信大家对while的用法已经非常熟悉了,但是想要灵活使用我们还要在之后的学习中多加练习!

for循环

  for循环语句是一种相比while更为方便的循环语句,他更加便于书写,可读性更高。
  同样是输出0 - 9我们用for语句再写一遍。

1
2
3
4
5
6
7
8
9
10
11
12
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
for (int i = 0; i < 10; i++)
{
printf("%d\t", i);
}
printf("\n");
system("pause");
}

  for语句语法更为精炼,将循环变量的更新条件的判断,循环变量的初始化融为一体。

1
2
3
4
for(语句1; 语句2; 语句3)
{
循环内容;
}

  for循环中语句1是循环变量的初始化,永远只执行一次,就是在循环刚开始的时候才执行;语句2则是循环条件的判断,只有在语句2满足的情况下才执行循环内容,语句2在每次循环开始前都要执行进行判断;语句3是循环变量的更新,在while语句中这一条往往是写在循环体里的,而for则将它提炼出来,这条语句在每一次循环结束后都会执行。因此for循环语句的执行顺序大概是:语句1->语句2(条件成立)->循环内容->语句3->语句2(条件成立)->循环内容->语句3->…->语句3->语句2(条件不成立)->循环结束。

  由此可见for循环语句的语法更为精炼快捷易于书写,且可读性更好,这里指的一提的是,for语句中括号里的三条语句都可省略不写,但是分号不可省略,而当语句2省略时则会变成死循环。

  for循环语句还有一些变种,我们之后学习中都会遇到,到时候大家需要小心留意。

do-while语句

  do-while语句是while语句的变种,他们十分相似,唯一不同点是前者执行完一次循环体后才会进行条件判断, 也就是说其至少执行一次。

1
2
3
4
5
6
7
8
9
10
11
12
13
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
int i = 10;
do
{
printf("%d", i);
} while (i > 20);
printf("\n");
system("pause");
}

  从上面这个代码就可以看出明明while()中的条件不符合可依然执行了一次循环体,这就是while的独到之处。

  由于do-while语句使用条件有限,所以使用情况不多,这里不再深入讲解。

-------------本文结束感谢您的阅读!-------------
记录学习每一分,感谢您的赞助