循环结构的功能

上节回顾:

输入一个数字判断是否大于一个数值;并打印出来

代码:

cs 复制代码
#include <stdio.h>
int main()
{
	int i;

	while (1)
	{
		printf("请输入一个数:");
		scanf("%d", &i);
		printf("输入的数为%d\n", i);
		if (i < 10)
		{
			printf("%d<10 \n", i);
		}
		if (i > 10)
		{
			printf("%d>10 \n", i);
		}
	}
	return 0;
}

循环结构类型:

(1)当型循环结构:当条件成立反复执行语句A操作;直到条件不成立;

(2)直到型循环结构:先执行语句A,再判断条件是否成立;成立反复执行语句A,反之停止执行。

C语言提供for,while(1),do_while() 三种循环语句;来实现循环结构;在条件为真的情况下;重复执行一个语句操作;这个重复执行的语句被称作循环体。

while循环

while循环在条件为真时重复执行代码块,先判断条件后执行循环体。适用于不确定循环次数的情况。

语法示例:

c 复制代码
while (条件) {  
    // 循环体  (语句)
}  

do-while循环

do-while循环先执行一次循环体,再判断条件。至少执行一次,适合需要优先执行操作的场景。

语法示例:

c 复制代码
do {  
    // 循环体  
} while (条件);  

for循环

for循环通过初始化、条件判断和更新表达式控制循环,适合已知循环次数或需要精确控制变量的场景。

语法示例:

c 复制代码
for (初始化变量; 条件; 语句) {  
    // 循环体  
}  

for循环里面语句用 ;分割。

例程1:计算0到一个数的累加和;利用三种循环语句;总结出三种语句特点。

cs 复制代码
#include <stdio.h>
int main()
{
	int n, sum;
	printf("这个数为:");
	scanf("%d", &n);
	sum = 0;
1:/*for (int i = 0; i <= n; i++)
	{
		sum = sum + i;
	}
	printf("sum =%d\n", sum);*/
	int i = 0;
2:/*while (i <= n)
	{
		sum = sum + i;
		i++;
		}
	printf("sum =%d\n", sum);*/
3: do
	{
		sum = sum + i;
		i++;
	} while (i <= n);
	printf("sum =%d\n", sum);

}

关键区别

  • 执行顺序:while/for先判断条件;do-while先执行后判断。
  • 适用场景:while用于条件驱动;for适合计数器控制;do-while保证至少执行一次。
  • 代码简洁性:for循环将初始化、条件和更新集中在一行,结构更紧凑。

现在我们已经了解了三种循环的语句基本使用场景;我们再引入三个关键字:

break语句

用于立即终止当前循环(forwhiledo-while)或switch语句的执行,并跳出该结构。在嵌套循环中,break仅影响其所在的最内层循环。

示例:

c 复制代码
for (int i = 0; i < 10; i++) {
    if (i == 5) break; // 当i为5时跳出循环
    printf("%d ", i);  // 输出0 1 2 3 4
}

continue语句

跳过当前循环的剩余代码,直接进入下一次循环的迭代条件判断。仅适用于循环结构。

示例:

c 复制代码
for (int i = 0; i < 5; i++) {
    if (i == 2) continue; // 跳过i为2时的本次循环
    printf("%d ", i);     // 输出0 1 3 4
}

goto语句

无条件跳转到同一函数内的指定标签位置。需谨慎使用,可能破坏代码逻辑结构。标签以冒号结尾,goto后跟标签名。

示例:

c 复制代码
for (int i = 0; i < 3; i++) {
    if (i == 1) goto exit; // 跳转到exit标签
    printf("%d ", i);      // 输出0
}
exit: 
printf("Jumped here");     // 输出"Jumped here"

关键区别

  • 作用范围break作用于循环或switchcontinue仅用于循环;goto可跨任意代码块。
  • 控制流break退出当前结构;continue进入下一次循环;goto直接跳转至标签。
  • 使用建议 :优先使用结构化控制语句(如break/continue),避免滥用goto以保持代码可读性。
  • 这里不建议初学者使用goto语句;

这里我们写一个案列来调用三个语句来观察他们的区别:

课后练习:

现在尝试判断当数值等于5;使用continue;大于5使用break;熟练掌握两个语句。

相关推荐
机器学习之心9 分钟前
PSO-LightGBM-ABKDE粒子群算法优化轻量级梯度提升机自适应带宽核密度估计多变量回归区间预测Matlab实现
算法·matlab·回归·abkde·自适应带宽核密度估计·pso-lightgbm·粒子群算法优化轻量级梯度提升机
qq_4160187224 分钟前
分布式缓存一致性
开发语言·c++·算法
CoovallyAIHub28 分钟前
多 Agent 手术推理框架:Agent 辩论+RAG 补上手术知识,零样本超越监督基线 14.6 个百分点
算法·架构·机器人
干啥啥不行,秃头第一名32 分钟前
STL容器内部实现剖析
开发语言·c++·算法
Zarek枫煜32 分钟前
zig与c3的冒泡排序算法
算法
xiaoye-duck36 分钟前
《算法题讲解指南:动态规划算法--简单多状态dp问题》--13.删除并获得点数,14.粉刷房子
c++·算法·动态规划
老鼠只爱大米37 分钟前
LeetCode经典算法面试题 #347:前 K 个高频元素(最小堆、桶排序、快速选择等多种实现方案详解)
算法·leetcode·堆排序·java面试题·桶排序·快速选择·topk
2401_8318249639 分钟前
内存泄漏检测与防范
开发语言·c++·算法
FluxMelodySun1 小时前
机器学习(二十五) 降维:主成分分析(PCA)及特征值分解
人工智能·算法·机器学习
liuyao_xianhui1 小时前
优选算法_分治_快速排序_归并排序_C++
开发语言·数据结构·c++·算法·leetcode·排序算法·动态规划