c语言双循环结构教学 C语言学习第9篇---C语言三大结构之二循环结构剖析
原文首发于同名微信公号「Allen5G」,欢迎大家搜索关注!
循环结构的基本工作方式:
通过条件表达式判断是否执行循环体
条件表达式遵循if语句表达式的原则
do ,while ,for 的区别
do:语句先执行后判断,循环体至少执行一次
while:先判断后执行,循环体可能不执行
for:先判断后执行,相比while更简洁一些
for(;;)和while(true)的区别:
在编程中,我们常常需要用到无限循环,常用的两种方法是while (1) 和 for (;;)。这两种方法效果完全一样,但那一种更好呢?让我们看看它们编译后的代码:
编译前 编译后
while (1); mov eax,1
test eax,eax
je foo 23h
jmp foo 18h
编译前 编译后
for (;;); jmp foo 23h
一目了然,for (;;)指令少,不占用寄存器,而且没有判断跳转,比while (1)好。
do ... while语句的循环方式示意图
while的循环方式示意图
for的循环方式示意图
实验1:三种循环语句的对比
#include <stdio.h>int f1(int n){ int ret = 0; if( n > 0 ) { do { ret = n; n--; } while( n > 0 ); } return ret;}int f2(int n){ int ret = 0; while( n > 0 ) { ret = n; n--; } return ret;}int f3(int n){ int ret = 0; int i = 0; for(i=1; i<=n; i ) { ret = i; } return ret;}int main(){ printf("%d\n", f1(100)); printf("%d\n", f2(100)); printf("%d\n", f3(100)); return 0;}
break和continue的区别:
break表示终止循环的执行
continue便是终止本次循环,进入下次循环执行
这个也是为什么switch不用continue的原因
实验2:continue和break的区别
#include <stdio.h>void f1(int n){ int i = 0; for(i=1; i<=n; i ) { if( (i % 2) == 0 ) { break; } printf("%d ", i); } printf("\n");}void f2(int n){ int i = 0; for(i=1; i<=n; i ) { if( (i % 2) == 0 ) { continue; } printf("%d ", i); } printf("\n");}int main(){ f1(10); f2(10); return 0;}
实验3:do和break的妙用
#include <stdio.h>#include <malloc.h>int func(int n){ int i = 0; int ret = 0; int* p = (int*)malloc(sizeof(int) * n); do { if( NULL == p ) break; if( n < 5 ) break; if( n > 100) break; for(i=0; i<n; i ) { p[i] = i; printf("%d\n", p[i]); } ret = 1; }while( 0 ); printf("free(p)\n"); free(p); return ret;}int main(){ if( func(10) ) { printf("OK\n"); } else { printf("ERROR\n"); } return 0;}
小结:
for循环先判断再进入循环体
for循环适合循环测试固定的场合
while循环先进判断再进入循环体执行
while循环适合与循环次数不定的场合
do ... while 循环先执行循环体再进行条件判断
do ... while 循环至少执行一次循环体
- 11-12一个月学习能考过自考吗?不会有人考自考真的只是为了一张毕业证
- 05-04事实就是事实不会因为言辞而改变 我不能因为你的观点而歪曲事实
- 12-22软衬衫与硬挺衬衫如何选择?在挑选春装衬衫之前不妨先来听我说说
- 03-06唯美到令人心碎的古风句子:世间安得双全法不负如来不负卿
- 01-07女生第一个大牌包包推荐:男生第一只大牌包包推荐
- 04-25龙猫是不是特别容易养:为什么会有龙猫宝宝这么可爱的宠物
- 01-07小白测评魅蓝note3上手体验:4100mAh玩一天无压力,魅蓝note3续航专项评测
- 11-24德国交流周开幕时间:2023,对话德国合作交流大会在金坛开幕
- 03-140到300元的智能手表推荐,1000元到2000元智能手表推荐总有你喜欢的
- 05-08方程豹豹5尺寸多少:方程豹Logo出炉,豹5
- 03-23南昌市城市轨道交通第三期规划 南昌轨道交通规划方案
- 04-04员工岗位能力评估说明,2023通用类员工能力评价标准.doc
- 03-28莎士比亚喜剧基本特征 莎士比亚的喜剧精神
- 01-15坐月子猪肚汤怎么弄?坐月子吃猪肚再合适不过
- 03-29乳腺增生疏通精油推荐:芳香疗法,精油让你远离乳腺疾病
- 02-24日本静冈发生的火灾,日本栃木县发生森林火灾
热门
推荐
- 1三峡知识点考点复习349
- 2韶关周边旅游路线攻略292
- 3关于饭店吃饭英语对话209
- 4人以其语语之出自什么地方234
- 5应届毕业生毕业实习报告186
- 6商品代销合同(示范文本)新408
- 7笔记本电脑重装系统怎么安装114
- 8大学生专业课挂科检讨书2020年389