C语言——分支语句和循环语句

目录

1.什么是语句

2.分支语句(选择结构)

2.1 if语句

2.2switch语句

 3.循环语句

3.1while语句

 3.1.1 语法

3.1.2 while中break和continue

3.2 for循环语句

3.2.1语法

3.2.2 break和continue在for循环中

3.2.3 for语句的循环控制变量

3.3 do while循环

3.3.1 do while 语句的语法

3.3.2 do while语句中的break 和continue

4.goto语句


1.什么是语句

  本章主要介绍if语句、switch语句、for语句、while语句、do while语句都属于控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(c语言程序中,可以分为三种基础结构,即顺序结构、分支(选择)结构、循环结构。这三种基本结构可以组成所有的各种复杂程序),它们由特定的语句定义组成。

C语言有九种控制语句:

1.分支语句(条件判断语句):if语句,switch语句;

2.循环执行语句:for语句,while语句,do while语句;

3.转向语句:break语句、goto语句、continue语句、return语句。

2.分支语句(选择结构)

进入大学,小伙伴们就面临着选择!

你可以选择走出寝室好好学习,未来拿一个好offer。

你也可以选择泡在寝室天天不学无术,机械性的打游戏,毕业都成了难题!

C语言——分支语句和循环语句_第1张图片

2.1 if语句

  一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

  如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。

  C 语言把任何非零非空的值假定为 true,把或 null 假定为 false

if()内的表达式的结果为真时,则语句执行

在C语言中0表示假,非0表示真。

 if语句结构:

if(表达式1)

   语句1;

else if(表达式2)

   语句2;

else

  语句3;

示例:

#include
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (1 == num % 2)
	{
		printf("%d是奇数", num);
	}
	else
		printf("%d是偶数", num);
	return 0;
}

注:小伙伴们在初期打代码的时候就应该养成良好的代码风格

if(表达式)
 {
  printf("开心每一天");
 }
else if (表达式)
{
 printf("身体健康")
 }
else
{
printf("好好学习")
}

如果if下跟多条语句需要用大括号括起来,否则只执行距离最近的语句。

适当的使用{ }可以使代码的逻辑更加清楚!!

  else的匹配:else是和它离的最近的if匹配的。多个 if 语句嵌套在一起,那么 else 子句一定匹配到与其最近的且无 else 子句匹配的 if 语句(必须在同一个语句块层次)。

2.2switch语句

  switch语句也是一种分支语句。尝尝用于多分支的情况。

switch(expression){
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}

switch 语句必须遵循下面的规则:

  • switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。
  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
  • case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
  • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
  • 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
  • 一个 switch 语句可以有一个可选的 default case,default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

default子句 :(在每个switch语句中都放一条default子句是个好的编程习惯)

  写在任何一个 case 标签可以出现的位置。 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n)
	{
	case 1:
		printf("天天开心\n");
		break;
	case 2:
		printf("健健康康\n");
		break;
	case 3:
		printf("好好学习\n");
	default:
		printf("输入错误\n");
		break;
	}
	return 0;
}

 3.循环语句

  小伙伴们在日常生活做会发现,很多事情需要我们多次循环的去做,同一件事情需要我们完成很多次,在这里C语言也贴心地为我们准备了循环语句,可以实现循环。

3.1while语句

 3.1.1 语法

  当我们学习if语句时,可能很多小伙伴会不满足于if语句只会执行一次,而接下来我们要了解的while语句可以使我们的代码实现多次地循环。

while 语法的结构

while(表达式)

  循环语句;

C语言——分支语句和循环语句_第2张图片

 示例:

//在屏幕上打印1~10的数字
#include 
int main()
{
	int n = 1;
	while (n <= 10)
	{
		printf("%d ", n);
		n++;//n++先使用n的值再加1
	}

	return 0;
}

3.1.2 while中break和continue

  其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

  continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

3.2 for循环语句

3.2.1语法

  与while循环相比,for循环的风格更胜一筹;for循环使用的频率也最高。

for循环结构:

for(表达式1; 表达式2; 表达式3)
 循环语句;

表达式1:

表达式1为初始化部分,用于初始化循环变量的。

表达式2:

表达式2为条件判断部分,用于判断循环时候终止。

表达式3: 

表达式3为调整部分用于循环条件的调整

3.2.2 break和continue在for循环中

  break在for循环中的作用和 while中的作用相同:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

continue会跳过循环中它后面的代码,直接跳到调整部分.

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}

很明显 满足条件时continue跳过了打印5,跳到了,调整部分.。

 C语言——分支语句和循环语句_第3张图片

3.2.3 for语句的循环控制变量

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

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

3.3 do while循环

3.3.1 do while 语句的语法

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

循环至少执行一次,使用的场景有限。

do while语句是先执行后判断 而while语句是先判断后执行

3.3.2 do while语句中的break 和continue

用法和while中的用法一样:

  其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

  continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

4.goto语句

  C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

  例如:一次跳出两层或多层循环。 多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

for(...)
    for(...)
   {
        for(...)
       {
            if(disaster)
                goto error;
       }
   }
    …
error:
 if(disaster)

你可能感兴趣的:(c语言)