C语言基础-控制流之循环控制流

本文介绍了C语言中的基本语句结构,包括表达式、赋值、条件判断,以及循环控制流(while、for、do-while)的用法、语法和执行顺序。还讨论了break、continue和goto语句的作用和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置
表达式

表达式是将变量或常量与运算符结合起来产生新的值。

  • 赋值表达式:a += 1
  • 条件判断表达式:a > b
语句

C语言执行的完整的一条逻辑表达,是表达式、变量、常量、关键字等的组合,以分号结束。

  • a = a + 1;就是一条语句,以分号结束
语句块

{}包裹起来的一系列语句,对外呈现为一个整体语句,会按序执行完{}中的所有语句。

{
	int a = 1;
	int b = 2;
	int c;
	c = a + b;
} //语句块结尾不需要;
循环控制流

当需要重复执行同一代码块多次时,循环控制流就派上用场。
循环控制流就是在满足一定条件的情况下,不停地执行同一个语句块,直到条件不满足,结束循环。

while循环
  • 基本格式
while(条件表达式){ //表达式值为1,就一直执行语句,直到表达式为0
	语句
}
  • 执行顺序
    • 条件表达式->语句->条件表达式->语句->条件表达式->语句…如此反复
    • 如果表达式的值永远为1则为死循环
  • 代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 10;
	
	// 只要a满足小于等于15,a+1并且打印a
	while(a <= 15){
		a += 1;
		printf("a = %d\n", a);
	}
	
	return 0;
}

运行结果:

a = 11
a = 12
a = 13
a = 14
a = 15
a = 16
for循环
  • 基本格式
for(表达式1; 表达式2; 表达式3){
	语句
}
// 表达式1和3可以不写在for()中,后面示例
  • 执行顺序
    • 表达式1只在第一次进入for循环时执行一次;
    • 表达式2为1–>语句–>表达式3–>表达式2为1–>语句–>表达式3–>表达式2…如此反复
    • 直到表达式2为0退出循环
  • 代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	for(int a = 10; a <= 15; a++){
		printf("a = %d\n", a);
	}
	
	// 也可以这样
	// int a = 10; // 表达式1提到前面
	// for(; a <= 15; a++){ //for中的分号不能少
		// printf("a = %d\n", a);
	// }
	
	// 也可以这样
	// int a = 10;
	// for(;a <= 15; ){
		// printf("a = %d\n", a);
		// a++; //表达式3放到循环体中
	// }
	
	// 等价上面的while
	// int a = 10;
	// for(;a <= 15; ){
		// a++;
		// printf("a = %d\n", a);
	// }
	
	return 0;
}

运行结果:

a = 10
a = 11
a = 12
a = 13
a = 14
a = 15
do-while循环
  • 基本格式
do{
	语句
}while(条件表达式); //最后有个分号要记住
  • 执行顺序
    • 语句–>条件表达式值为1–>语句–>条件表达式值为1–>语句–>条件表达式…如此反复
    • 直到条件表达式值为0
    • do-while循环的特点是无论如何都会执行一遍语句。
  • 代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 1;
	
	do{
		a++;
		printf("a = %d\n", a);
	}while(a < 5);
	
	return 0;
}

运行结果:

a = 2
a = 3
a = 4
a = 5
break语句

break语句用于从循环中提前跳出,提前结束循环。

  • 代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 1;
	while(a < 5){
		a++;
		printf("a = %d\n", a);
		if(a == 3){
			break;//结束循环,4 5就不会继续出现了
		}
	}
	
	return 0;
}

运行结果:

a = 2
a = 3
continue语句

continue语句用于提前结束本轮循环,continue之后的语句不会被执行,重新开始新的一轮循环。

  • 代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 1;
	while(a < 5){
		a++;
		if(a == 3){
			continue;//结束本轮循环,3就不会打印了
		}
		printf("a = %d\n", a);
	}
	
	return 0;
}

运行结果:

a = 2
a = 4
a = 5
goto语句

当想让程序跳转执行的话,可以使用goto+标号的方式,跳转到标号标记的代码块执行。
标号的命名方式和变量命名方式相同
标号后面要接: 语句块

  • 代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 1;
	while(a < 5){
		a++;
		if(a == 3){
			goto error;//跳转到eroor标记的语句块,结束循环
		}
		printf("a = %d\n", a);
	}
	
	error: {
		printf("error error!\n");
	}
	
	return 0;
}

运行结果:

a = 2
error error!

建议尽量少用goto语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值