目录
3.3.2 do while语句中的break 和continue
1.什么是语句
本章主要介绍if语句、switch语句、for语句、while语句、do while语句都属于控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(c语言程序中,可以分为三种基础结构,即顺序结构、分支(选择)结构、循环结构。这三种基本结构可以组成所有的各种复杂程序),它们由特定的语句定义组成。
C语言有九种控制语句:
1.分支语句(条件判断语句):if语句,switch语句;
2.循环执行语句:for语句,while语句,do while语句;
3.转向语句:break语句、goto语句、continue语句、return语句。
2.分支语句(选择结构)
进入大学,小伙伴们就面临着选择!
你可以选择走出寝室好好学习,未来拿一个好offer。
你也可以选择泡在寝室天天不学无术,机械性的打游戏,毕业都成了难题!
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<stdio.h>
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(表达式)
循环语句;
示例:
//在屏幕上打印1~10的数字
#include <stdio.h>
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,跳到了,调整部分.。
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)