C语言循环结构和分支
c语言是结构化的程序设计语言,其形式主要有三种——(1)顺序结构(2)选择结构(3)循环结构
1)
顺序结构是按照代码的顺序,从上往下从前往后依次进行执行的
顺序结构的特点——1.自上而下 2. 依次执行 3. 没有分支
int main()
{printf("1\n"); //1printf("2\n"); //2printf("3\n"); //3printf("4\n"); //4printf("5\n"); //5return 0;
}
一段简单的printf代码,其程序运行结果如下
![](/assets/blank.gif)
程序按顺序1、2、3、4、5依次执行,依次分别打印出的“ ”里的语句。
2)选择结构
选择结构两大类——1*、if else语句
—— 2*、switch -case 语句
a.if else语句
函数使用--
if(函数表达式)
{
执行语句;
}
else if(函数表达式)
{
执行语句;
}
else
{
执行语句;
}
int main()
{int i = 10;if( i >= 10 )printf("666\n"); //(1)else if( i <= 0){ //(2)i++;printf("%d\n",i);}else printf("7777\n"); //(3)if( i >= 0)printf("我爱c语言\n"); //(4)printf("hahahaha\n"); //(5)return 0;
}
注意:这一段代码里一共有五个printf函数,而且{}的布置也有不同
![](/assets/blank.gif)
程序执行结果如上,最后只打印了执行了3条printf函数,现在来简单讲解一下该段代码实际上在编译器中是如何运行的
当程序执行时,函数从主函数进入,为常量i分配了一个int类型的空间并赋值为10,下一步就是进入if语句分支,此时i = 10 满足(i >= 10)进入下方的执行语句,打印出“666”,下一步程序指向下一个if(不是else 后面的 if),即直接来到第四个printf的判断条件——(i >= 0),此时i = 10 > 0 满足条件判断进入打印“我爱c语言”,由于最后一个printf函数执行没有条件判断,因此无论如何,只要程序不在前面的语句中断,程序都会打印出“hahahahaha\n”。
|在这里补充上if分支的规则
.else优先与近的if结合
if后的语句只执行一条,如果要执行多条语句,需要花括号{}
当一个程序有多个if语句时,执行完一个if后不干涉程序进入下一个if,只要满足条件判断就可以执行语句
if后的else if --当if中条件判断满足时,不进入与之关联的else if 和else 即使符合条件判断也不进入。
b.switch case语句
使用方法:
switch(条件参数)
{
case _:
case _:
执行语句;
break;
default:
执行语句;
break;
}
e.g
int day = 5;
scanf("%d",&day);
switch(day)
{case 1:case 2:case 3:case 4:case 5:printf("工作日\n");break;case 6:case 7:printf("周末\n");break;default:printf("输入错误\n");
}
以上的代码用于在用户输入数字1234567对应的日期判断每个星期中的工作日或者周末
![](/assets/blank.gif)
break的用法是在循环或者switch分支中直接结束当前结构语句(循环或者分支),上面的例题中如果没有break,那么在执行完”工作日“打印后程序不会结束,而是进入下一步执行语句。
![](/assets/blank.gif)
3)循环结构
循环有三大类a.while 循环
b.do while 循环
c.for循环
a*) while 循环注意事项和使用
while (判断条件)
{
执行语句;
必须要有限制条件;
}
int i = 10;
while(i)
{printf("%d",i);i--;
}
![](/assets/blank.gif)
最后程序执行如下
代码执行分析:
由main函数进入后为变量i分配一块空间并且赋值为10
while()内的循环判断条件规则是:0为假,非零为真,即结果不为0时符合条件判断就可进入执行语句
在执行的语句中遵循顺序结构,先printf后i自减,经过了十次循环后i=0作为判断条件,不进入之后的执行语句,因此执行过程在while循环中往往比判断少一轮。
b*) do while循环
使用:
do
{
循环体;
必须有限制条件;
}while(条件判断);
![](/assets/blank.gif)
当程序进入do while循环后,先进入一次循环体,再进行条件判断,当判断结果为真时,进入下一次循环,当结果为假时,退出循环结构。
在循环体中,除了当前的执行语句之外,必须要有能限制while循环次数的语句来防止死循环,一个循环体中可以没有其它的执行条件,但是必须要有限制条件;
当循环体中程序进行到break,则程序会直接终止在循环结构的进程,从而进行下一语句,值得注意的是,break只能跳出一层循环/分支结构,在多组循环或者分支嵌套的情况下往往采用多个break来结束程序在循环中的进程。
当循环体中的程序进行到continue,程序会直接终止该次循环结构的进程,与break不同的是:continue执行后程序下一步执行的是下一次的循环体语句,而不是循环结构后的程序。
c*) for循环
使用:
for( 初始条件 ;限制条件 ;控制循环变量 )
{
循环体;
}
e.g打印出0 - 9的十个数字
for(i = 0 ; i < 10 ; i++ )
{printf("%d ",i);
}
实际上如果底层逻辑没有太大区别的时候,for循环和while循环可以相互转换上面的for循环还可以这样写
i = 0;
while(i < 10)
{printf("%d ",i);i++;
}
两者执行的效果是完全相同的,只是在一些特定的场合,人们更倾向于特定的写法,像是while常被用于做未知循环次数的循环,for循环更多被应用于已知循环次数的循环。
值得注意的是,不管是那种循环,其限制循环次数的条件是一个合格的循环所必备的,而且循环限制条件可以不仅限于一条,在有需求的环境下,人们可以创建多个变量来控制循环次数。
int i = 0,j = 10;
for( ;i > 3 && j % 2 != 0;i++,j++)
{;
}
如上,i 和 j都是控制循环次数的变量;
在for循环的设计中,括号中的条件可以省略不写,但必要在循环体中体现,虽然这样的代码c语言支持读写,但为了避免程序出现错误和程序难以被看懂,应该尽量减少这样的写法。
C语言循环结构和分支相关推荐
- python的两种循环结构_python分支和循环结构
Python Python开发 Python语言 python分支和循环结构 1.分支结构 1.1应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构. ...
- python语言与c语言相比在分支结构上有什么不同_C语言顺序结构和分支结构总结...
1. 本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 感觉学的内容比较基础,也是日后编程的基石.今后还应多加练习,能够更自如地运用,避免低级错误,一步步地提 ...
- c语言条件型循环结构报告,C语言循环结构实习报告 - 副本
认识(实习)报告 实验(实习)名称循环结构程序设计 日期得分指导教师系专业年级班次姓名学号 一. 实验目的 (1)掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数. ⑵了 ...
- c语言中循环结构的作用,C语言循环结构知识点
C语言循环结构知识点 引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构.以下是百分网小编分享给大家的C语言循环结构知识点,欢迎 ...
- 循环结构作业c语言,c语言循环结构练习题带答案
c语言循环结构练习题带答案 第5章 循环结构程序设计 5.1 基本知识点 Øwhile语句的使用格式和注意事项 Ødo-while语句的使用格式和注意事项 Øfor语句的使用格式和注意事项 Øbrea ...
- 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
<C语言循环结构练习题带答案(最新整理)>由会员分享,可在线阅读,更多相关<C语言循环结构练习题带答案(最新整理)(10页珍藏版)>请在人人文库网上搜索. 1.第 5 章循环结 ...
- 一起学习C语言:C语言循环结构(三)
上一篇 <一起学习C语言:C语言循环结构(二)> 中,我们了解了while.do-while语法和continue语句的应用场景.本篇文章中,我们分析循环结构嵌套使用,并通过几个示例分析c ...
- 一起学习C语言:C语言循环结构(二)
前言: 前一段时间发表的<["天才"必经之路]>文章非常热门,虽然我知道它会是一篇成功的文章,但,它的火爆程度还是超出了我的预期.前几日,我写了这个系列的第二篇文章,文 ...
- 一起学习C语言:C语言循环结构(一)
上一章 <一起学习C语言:C语言基本语法> 系列内容中,我们了解了if语句.switch语句的使用方式以及不同运算符的优先级等内容.本章节,我们学习C语言循环结构用法. 章节预览: 1. ...
最新文章
- 扫描 VNC 的脚本
- jmeter语言设置
- Chromium下载各类版本(pyppeteer爬虫)
- si_meminfo获取当前系统物理内存使用情况
- CentOS7.4中搭建lnmp环境
- 突发!暂停新用户注册,微信这样回应
- 【flink】flink Source Coordinator Thread already exists driving actions Source Coordinator. Existing
- SQL Server警报解决性能问题:如何创建和使用SQL Server警报
- [翻译] KGModal
- linux数组删除数据,如何从shell数组中删除一个元素
- Vue - 引入集成 Tinymce 富文本编辑器(详细步骤及运行Demo),在 Vue.js 项目中使用富文本插件详细教程,附带超级详细的注释说明
- 晓日程-首款打通微信和桌面的免费日历应用
- elementUI开始时间和结束时间验证
- Mysq底层数据结构和优化整理
- 使用腾讯云服务器搭建Minecraft Java版服务器的一次踩坑
- 新体育杂志新体育杂志社新体育杂志社新体育编辑部2022年第8期目录
- java : mozilla rhino js引擎 使用教程
- POI之Excel单元格样式
- 什么是SaaS系统,SaaS系统有哪些优势
- 数组名和数组名取地址 的区别
热门文章
- xxl-job 调度中心/执行器/Springboot
- 作图控件北京图王的Visual Graph在PB中的应用
- 在国内企业做数据治理,建议您考个DAMA-CDGA/CDGP证书
- php户型图识别,买房必看!一分钟学会如何识别户型图中隐藏的猫腻
- 5G无线技术基础自学系列 | 基站数量计算
- 皮皮调度(1)——从Airflow到DolphinScheduler,以及“皮皮调度”的来历
- 中职计算机应用教学的重要性,浅谈中职计算机应用有效教学策略
- LINUX下USB1.1设备学习小记(2)_协…
- MD5加密安全吗(解析MD5)
- 2021牛客暑期多校训练营2 Girlfriend(阿波罗尼斯圆 + 计算几何)