首页 > 其他分享 >c语言的循环结构

c语言的循环结构

时间:2024-11-18 19:19:37浏览次数:3  
标签:语句 循环体 语言 int while 循环 表达式 结构

循环结构

在生活中我们常常遇到需要重复处理的问题,我们在编程时解决需要重复处理的问题需要使用循环语句
循环语句主要有3种:while()循环;do-while()循环和for()循环

while()循环

用法:
while(循环条件)
{
循环体;
……
}

说明:
当程序遇到while()循环的时候,首先会判断while()的括号内的表达式,若为真(即满足循环条件)则执行循环,执行完循环体后再次返回到while();若为假则结束循环
示例:
输入10个学生的成绩,输出这10个学生的成绩总和以及平均分

int main()
{
	int i = 1,count = 0,input = 0;//i用来控制循环次数,count用于总和,input用于每次输入
	float avg = 0;//avg用于平均分
	while(i<=10)//循环条件
	{
		printf("请输入第%d个学生的成绩:\n",i);
		scanf("%d",&input);
		count += input;
		i++;//不要忘了让i++
	}
	avg = (float)count/10;
	printf("总成绩是%d\n平均成绩是%f\n",count,avg);
	return 0;
}

思考:若在循环体中没有i++这一句将会发生什么结果?

答案:i++这一句的作用是改变循环的状态。若没有i++这句,则i的值会永远是1,则循环永远都不会结束,即程序会进入死循环

初学者在使用循环时一定要注意不要陷入死循环。当你的程序使用了循环结构,在编译阶段无语法错误,在执行时发现程序会无限期进行下去,则很可能你的程序进入了死循环。此时要检查循环条件设置是否正确,以及检查是否设置了改变循环状态的量。

若发生了死循环,按ctrl+c(或ctrl+z)组合键可强制终止当前程序

练习:求1+2+3+……+100=?
答案:

int main()
{
	int i=0,sum=0;
	while(i<=100)
	{
		sum += i;
		i++;
	}
	printf("和是%d\n",sum);
	return 0;
}

若while()后没有{}限制,则循环只执行到while()后第一个分号处(即只执行一条语句),这点与if()-else相同

do-while()循环

用法:
do
{
循环体;
……
}while(循环条件);
说明:
当程序遇到do,会首先执行do下面的语句(即循环体),之后执行到while(),判断while()的括号内的表达式是真/假,若为真(即满足循环条件)则返回do语句处再次执行循环体;若为假则结束循环。
示例:将上文示例改写成do-while()循环

int main()
{
	int i = 1,count = 0,input = 0;//i用来控制循环次数,count用于总和,input用于每次输入
	float avg = 0;//avg用于平均分
	do//循环开始
	{
		printf("请输入第%d个学生的成绩:\n",i);
		scanf("%d",&input);
		count += input;
		i++;//不要忘了让i++
	}while(i<=10);//循环条件
	avg = (float)count/10;
	printf("总成绩是%d\n平均成绩是%f\n",count,avg);
	return 0;
}

练习:将上文练习“1+2+3+……+100=?”改写成do-while()循环
答案:

int main()
{
	int i=0,sum=0;
	do
	{
		sum += i;
		i++;
	}while(i<=100);
	printf("和是%d\n",sum);
	return 0;
}

while()与do-while()的区别:
while()循环是先判断循环条件,再进入循环体。而do-while()循环是先进入循环体,再判断循环条件。
while()循环有可能不执行循环体,而do-while()循环一定会执行一次循环体

for()循环

用法:
for(表达式1;表达式2;表达式3)
{
循环体;
……
}
注意:for()括号内的3个表达式的分隔符是分号;不是逗号,
说明:
表达式1:循环的初始条件,只执行一次。可以为0个、1个或多个变量设置初值

表达式2:判断循环结束的条件。在每次执行循环体前判断此表达式,若表达式为真则进入循环,否则不执行循环

表达式3:作为循环的调整(即改变循环状态),在执行完循环体之后执行
for(表达式1;表达式2;表达式3)
{
循环体;
}
等价于:
表达式1;
while(表达式2)
{
循环体;
表达式3;
}

表达式1可以省略。若如此做,相当于没有给for()循环设定起始初值。因此,若要循环正常进行,需要在for()之前设置好循环起始初值
表达式2可以省略。若如此做,相当于for()循环没有结束条件,即死循环。等价于:
while(1)
{
循环体;
表达式3;
}

表达式3可以省略。若如此做,需要在循环体内设置循环调整语句,否则循环无法正常执行。

若将3个表达式都省略(即for(;

标签:语句,循环体,语言,int,while,循环,表达式,结构
From: https://blog.csdn.net/qq_21106275/article/details/143864519

相关文章

  • 2024年11月17日 星期天 Go语言基础
    今日格言坚持每天进步一点点~一个人也可以是一个团队~学习全栈开发,做自己喜欢的产品~~Go语言的创始人Go语言的创始人有三位,分别是:RobertGriesemer:他参与开发了JavaHotSpot虚拟机。RobPike:他是Go语言项目的总负责人,曾是贝尔实验室Unix团队的成员,参与过Plan9、Inf......
  • C语言的数组
    二&数组•数组的概念在数学中我们有集合的概念,那么在C语言中:数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息:•数组中存放的是1个或者多个数据,但是数组元素个数不能为0。•数组中存放的多个数据,类型是相同的。数组分为⼀维数组和多......
  • 大型语言模型综述 A Survey of Large Language Models
    文章源自2303.18223(arxiv.org)如有侵权,请通知下线这是一篇关于大语言模型(LLMs)的综述论文,主要介绍了LLMs的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面,具体内容如下:摘要——自从图灵测试在20世纪50年代被提出以来,人类已经探索了机器对语言智能的......
  • 数据结构(倒排索引)
    倒排索引和正排索引倒排索引是什么?倒排索引也被称作反向索引(invertedindex),是用于提高数据检索速度的一种数据结构,空间消耗比较大。倒排索引首先将检索文档进行分词得到多个词语/词条,然后将词语和文档ID建立关联,从而提高检索效率。分词就是对一段文本,通过规则或者算......
  • c语言文件大概
    文件一:文件的打开FILL*fp;fp=fopen("文件地址","打开方式“)打开方式:文件地址的方式有相对路径和绝对路径,具体不多说二:文件的关闭fclose(fp)三:文件读写函数1读写字符函数fgetc和fputc:fgetc("fp"),fputc("character","fp")fgetc就是从文件中读入一个字符,fputc是将一个字符......
  • 常用代码模板2——数据结构
    单链表——模板题luogu826.单链表//head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点inthead,e[N],ne[N],idx;//初始化voidinit(){  head=-1;  idx=0;}//在链表头插入一个数avoidinsert(inta){  e[idx]=a,ne[i......
  • 高阶C语言之四:动态内存管理
    目录开辟和释放动态内存malloc开辟空间free释放空间clloc初始化开辟空间realloc修改动态内存常见的内存错误1、对空指针的解引用操作2、对动态开辟空间的越界访问3、对非动态开辟内存使用free释放4、使用free释放动态内存的一部分 5、对同一块空间的多次释放6、动......
  • vscode go语言注释语句黄色波浪线
    go语言注释代码总是飘着黄色波浪线提示:(withoptionalleadingarticle)(ST1021)go-staticcheck,非常影响观感。经过查询发现,go-staticcheck是一个用于Go代码静态分析的工具,用来检测代码中的潜在问题、代码规范以及常见的错误。本次错误信息来自go-staticcheck中的规则ST10......
  • [JavaScript]将数组按照parentId和id整理成树状结构
     JavaScriptfunctionarrayToTree(items){constrootItems=[];constlookup={};for(constitemofitems){constitemId=item.id;lookup[itemId]=item;constparentId=item.parentId;if(parentId===n......
  • 前端必知必会-JavaScript For Of循环
    文章目录JavaScriptForOf循环循环遍历数组循环遍历字符串总结JavaScriptForOf循环ForOf循环JavaScriptforof语句循环遍历可迭代对象的值。它允许您循环遍历可迭代数据结构,例如数组、字符串、映射、节点列表等:语法for(variableofiterable){//要......