【精通C语言】:深入解析for循环,从基础到进阶应用

news2024/12/24 3:43:37
个人头像
🎥 屿小夏 : 个人主页
🔥个人专栏 : C语言详解
🌄 莫道桑榆晚,为霞尚满天!

文章目录

  • 📑前言
  • 一、for循环基础
    • 1.1 语法
    • 1.2 示例
    • 1.3 流程图
    • 1.4 for与while的对比
  • 二、for循环进阶
    • 2.1 for中的break和continue
    • 2.2 for语句的循环控制变量
    • 2.3 for循环变种
    • 2.4 笔试巩固题
  • 🌤️全篇总结

在这里插入图片描述

📑前言

在C语言中,for循环是一种常用的循环结构,具有灵活的语法和强大的功能。本文将深入探讨for循环的基础语法、进阶用法以及注意事项,以帮助读者更好地理解和运用for循环。

一、for循环基础

1.1 语法

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

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

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

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

1.2 示例

在了解了基础的语法后,我们来看一段示例的代码,让你对for循环有深的理解。

int main()
{
	int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
	for(i=1; i<=10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

1.3 流程图

image-20240108103707748

1.4 for与while的对比

int i = 0;
//实现相同的功能,使用while
	i=1;//初始化部分
while(i<=10)//判断部分
{
	printf("hehe\n");
	i = i+1;//调整部分
}
//实现相同的功能,使用for
for(i=1; i<=10; i++)
{
	printf("hehe\n");
}

可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样
查找修改就不够集中和方便。所以,for循环的风格更胜一筹;for循环使用的频率也最高。

二、for循环进阶

2.1 for中的break和continue

for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。

但是还是有些差异:

//代码1
#include <stdio.h>
int main()
{
	int i = 0;
	for(i=1; i<=10; i++)
	{
		if(i == 5)
			break;
		printf("%d ",i);
    }
	return 0;
}
//代码2
#include <stdio.h>
int main()
{
	int i = 0;
	for(i=1; i<=10; i++)
	{
		if(i == 5)
			continue;
		printf("%d ",i);
	}
	return 0;
}

在代码1中,当i等于5时,使用break语句会使循环立即终止,不再执行剩下的循环体,输出结果为1 2 3 4。

而在代码2中,当i等于5时,使用continue语句会跳过当前循环,继续下一次循环,输出结果为1 2 3 4 6 7 8 9 10。

因此,break语句会完全终止循环,而continue语句只是跳过当前循环,继续下一次循环。

2.2 for语句的循环控制变量

建议:

  1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
  2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}

//两边都是闭区间
for(i=0; i<=9; i++)
{}

2.3 for循环变种

for循环中的初始化部分,判断部分,调整部分是可以省略的。

  1. 初始化部分省略:循环中无法初始化循环变量,可能导致循环变量未被正确初始化而造成意外行为。
  2. 判断部分省略:循环条件无法被判断,导致无法退出循环,造成无限循环。
  3. 调整部分省略:循环中无法对循环变量进行调整,可能导致循环变量无法按预期进行调整而造成意外行为。

因此,虽然 for 循环中的初始化部分、判断部分、调整部分是可以省略的,但是不建议全部省略,否则可能会导致程序无法正常工作或者产生意外行为。

for(;;)
{
    printf("hehe\n");
}

for循环的嵌套

for(int i=0; i<10; i++)
{
    for(int j=0; j<10; j++)
    {
        printf("hehe\n");
    }
}

多变量控制循环

int x, y;
for (x = 0, y = 0; x<2 && y<5; ++x, y++)
{
    printf("hehe\n");
}

2.4 笔试巩固题

请问下面代码循环要循环多少次?

#include <stdio.h>
int main()
{
	int i = 0;
	int k = 0;
	for(i =0,k=0; k=0; i++,k++)
		k++;
	return 0;
}

这段代码的问题在于for循环的条件部分。

在C语言中,= 是赋值操作符,而 == 才是比较操作符。

在这段代码中,for(i =0,k=0; k=0; i++,k++) 中的 k=0 是一个赋值操作,而不是比较操作。这意味着这个条件永远为真,导致无限循环。

所以,这段代码的问题是无限循环,因为 for 循环的条件永远为真。

🌤️全篇总结

看到这里相信聪明的你已经对for循环的基础语法有了深入的了解,并且掌握了for循环的进阶用法和注意事项。for循环作为一种强大的循环结构,可以帮助程序实现复杂的逻辑控制和重复执行任务。在实际编程中,合理灵活地运用for循环,可以提高代码的效率和可读性,为程序的开发和维护带来便利。

C语言结尾图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1368783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式(5)

目录 22.什么是Paxos算法&#xff1f;如何实现&#xff1f; 24.全局唯一ID有哪些实现方案&#xff1f; 25.数据库方式实现方案&#xff1f;有什么缺陷&#xff1f; 22.什么是Paxos算法&#xff1f;如何实现&#xff1f; Paxos算法是Lamport宗师提出的一种基于消息传递的分布…

全球数据隐私相关专业薪酬趋势

PrimiHub一款由密码学专家团队打造的开源隐私计算平台&#xff0c;专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 数字经济时代&#xff0c;数据已经成为新型生产要素。而数据与其他生产要素的本质区别在于&#xff0c;数据隐私是数据流动过程中…

第5章 对象

学习目标 了解什么是对象&#xff0c;能够说出JavaScript中的对象的概念 掌握对象的创建方式&#xff0c;能够使用3种方式创建对象 掌握对象的遍历&#xff0c;能够遍历对象的属性和方法 熟悉值类型和引用类型&#xff0c;能够说出值类型和引用类型的特点 掌握Math对象的使…

第三代量子计算机交付,中国芯片开辟新道路,光刻机难挡中国芯

日前安徽本源量子宣布第三代超导量子计算系统正式上线&#xff0c;这是中国最先进的量子计算机&#xff0c;计算量子比特已达到72个&#xff0c;在全球已居于较为领先的水平&#xff0c;这对于中国芯片在原来的硅基芯片受到光刻机阻碍无疑是巨大的鼓舞。 据悉本源量子的第一代、…

QT应用篇:QT解析与生成XML文件的四种方式

四种常见的解析 XML 的方式(DOM、SAX、以及基于 Qt 的 XmlStreamReader)各有自己的优缺点,适合不同的应用场景。 DOM 适合小型且结构简单的 XML 文件,需要频繁修改和操作整个文档结构的情况。SAX 适合大型 XML 文件,以及只需读取不需要修改的情况。基于 Qt 的 XmlStreamRe…

以太坊开发者会议回顾:坎昆升级、硬分叉与布拉格

作者&#xff1a;Christine Kim Galaxy研究副总裁 编译&#xff1a;秦晋 碳链价值 2024年1月4日&#xff0c;以太坊开发人员齐聚Zoom for All Core Developers Execution (ACDE) Call #178 上。ACDE电话会议通常由以太坊基金会协议负责人Tim Beiko主持&#xff0c;是一个开发人…

Databend 开源周报第 127 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 了解 Databend …

Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻直播带货及 免 费 小程序商城搭建的完整指南

随着互联网的快速发展&#xff0c;越来越多的企业开始注重数字化转型&#xff0c;以提升自身的竞争力和运营效率。在这个背景下&#xff0c;鸿鹄云商SAAS云产品应运而生&#xff0c;为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软…

程序员求职路上的光与影:我如何征服面试挑战

程序员面试攻略&#xff1a;学霸们必备的胜利秘笈来袭&#xff01; 1. 必背资料&#xff1a;提前了解面试公司或团队的背景信息&#xff0c;包括产品、技术栈和文化。别忘了复习常见面试问题&#xff0c;并准备一些项目经历和代码示例供展示。 2. 高科技武装&#xff1a;把握…

TS 36.213 V12.0.0-PUSCH相关过程(4)-UE HARQ-ACK过程

​本文的内容主要涉及TS 36.213&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

矩阵中的最长递增路径

题目链接 矩阵中的最长递增路径 题目描述 注意点 不能 在 对角线 方向上移动或移动到 边界外&#xff08;即不允许环绕&#xff09; 解答思路 因为最长递增路径一定是连续的&#xff0c;所以想到使用深度优先遍历来做。如果只使用深度优先遍历会导致超时&#xff08;同一个…

世微AP8851 DC-DC降压恒压芯片 2.5A应用资料及BOM清单

1. 方案特性 双层 PCB 板&#xff08;L42mm W25mm H15mm&#xff09; 输入电压范围&#xff1a; 11V&#xff5e;85V&#xff08;输出 5V) 18V&#xff5e;85V&#xff08;输出 12V&#xff09; 输出电流&#xff1a;2.5A 率&#xff1a;93.8%&#xff08;输出 12V&#xff…

亿尚网:撤柜上线电商+直播将成为美妆行业发展的绝佳组合

亿尚网&#xff1a;撤柜上线电商直播将成为美妆行业发展的绝佳组合 来源&#xff1a; 编辑&#xff1a;亿尚风范 时间&#xff1a;2024-01-09 随着社交媒体的兴起&#xff0c;网红经济逐渐成为市场中的一股不可忽视的力量。而在这其中&#xff0c;直播电商的模式更是为网红们…

Android - CrashHandler 全局异常捕获器

官网介绍如下&#xff1a;Thread.UncaughtExceptionHandler (Java Platform SE 8 ) 用于线程因未捕获异常而突然终止时调用的处理程序接口。当线程由于未捕获异常而即将终止时&#xff0c;Java虚拟机将使用thread . getuncaughtexceptionhandler()查询该线程的UncaughtExceptio…

unity:玩家从SDK注册到登陆就流失百分10几的思考

目录 前言 失去焦点问题&#xff08;黑屏&#xff09; 缓存cache.ready没有准备好&#xff08;黑屏&#xff09; 兼容性问题&#xff08;黑屏和闪退&#xff09; 用户隐私协议弹出时机&#xff08;体验&#xff09; 启动画面和登陆界面&#xff08;体验&#xff09; 游戏…

2024电影营销:转换为王,平台变阵

2023年&#xff0c;电影市场全面复苏&#xff0c;伴随着各类大片纷纷入场掘金&#xff0c;“电影营销”再度成为了今年热议的话题。 关于张艺谋拍一部戏到底要被震撼多少次&#xff1f;吴京为什么半夜老是喜欢溜达在别的剧组探班&#xff1f;徐峥一年躲在观众席里&#xff0c;…

亚信安慧AntDB数据库荣膺“2023中国数据库领域最具商业合作价值企业”殊荣

近期&#xff0c;引领数据库技术创新的亚信科技荣获数据猿发布的《2023中国数据库领域最有商业合作潜力企业排名》中的重要位置。此次入选&#xff0c;不仅彰显了亚信科技在数据库领域近二十年来的技术实力和行业认可&#xff0c;也凸显了其在商业合作潜力方面的引领地位。 图1…

Mac 安装Nginx教程

Nginx官网 Nginx官网英文 1.在终端输入brew search nginx 命令检查nginx是否安装了 2. 安装命令&#xff1a;brew install nginx 3. 查看Nginx信息命令brew info nginx 4. 启动 nginx方式&#xff1a;在终端里输入 nginx 5.查看 nginx 是否启动成功 在浏览器中访问http://l…

通达信顾比均线指标公式,识别价格趋势的变化和潜在突破

顾比均线(GMMA)是由全球知名的技术分析大师戴若顾比(Daryl Guppy)发明的的技术指标&#xff0c;通过观察短期和长期移动平均线之间的关系来识别价格趋势的变化和潜在突破。 顾比均线使用了两组移动平均线&#xff0c;每组包含6条&#xff0c;总共12条。短期均线组通常包括 3 日…

人工智能图像生成的道德利弊

目录 一、我们应该关注人工智能图像吗&#xff1f;二、利用人工智能增强创造力的积极作用三、版权和剽窃问题四、对就业和劳动力动态的影响五、无意识的偏见和影响六、负责任地前行 人工智能&#xff08;AI&#xff09;发展迅速&#xff0c;尤其是近年来。据估计&#xff0c;超…