第六章——循环控制结构学习总结

本文深入讲解了循环结构的两种类型及其应用,包括直到型和当型循环结构的特点,三种主要循环语句(for, while, do-while)的形式与区别,以及嵌套循环的原理和随机数生成方法。同时,文章还探讨了流程转移控制语句如break、continue和goto的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                循环结构学习总结

一、重要知识点汇总
循环控制的三种结构与循环语句;计数控制循环和条件控制循环的不同与运用;流程转移控制中三种语句的运用方式与作用;嵌套循环的使用;
二、重要知识点的运用
1、循环结构共有两种类型,分别是直到型循环结构(先循环一次,再进行判断条件是否成立,即至少循环一次)和当型循环结构(先判断再循环)。其中直到型包含do-while语句,当型结构有while语句和for语句。
2、三种语句的基本形式:
①for语句:
for(初始化表达式;循环控制表达式;增值表达式)
{
语句序列;
}
②while语句:
while(循环控制表达式)
{
语句序列;
}
③do-while语句:
do
{
语句序列;
}while(循环控制表达式)
其中while语句经变换可以和for语句语义等价。
3、在for语句中,若语句之前已经对循环变量赋初值,那么初始化表达式可以省略;同样,若在循环体中改变了循环控制变量,那么其增值表达式也可省略。
4、在对某一变量作重复累加或累乘时,需要对其初始化。若不对其进行初始化,计算机会给予随机数进行运算,运算结果自然是错误的。
5、循环变量可以充当一般变量使用。若循环次数未知,最好使用条件控制循环语句(while语句);若循环次数未知,则最好使用计数控制的循环(for语句);当循环条件至少要执行一次时,最好使用do-while语句。
6、do-while语句末尾有分号,while语句则没有,使用时要格外注意。
7、当第一次循环即为假时,while语句和do-while语句是不一致的。
8、嵌套循环的原理:执行嵌套循环时,先由外层循环进入内层循环,并在内层循环终止之后接着执行外层循环,再由外层循环进入内层循环中,当外层循环全部终止时,程序结束。三种循环语句均可相互嵌套。对于双层嵌套的循环,其总的循环次数等于外层循环次数和内层循环次数的乘积。应注意的情况还有:嵌套循环的内层和外层的循环控制变量不应该同名。
9、控制计算机生成随机数的取值范围的方法:
①利用求余运算rand%b将函数rand()生成的随机数变化到[0,b-1]之间。
②利用rand()%b+a将随机数的取值范围平移到[a,a+b+1]之间。
为了方便理解,举一个简单的例子,若要生成一个1到500之间的随机数,只要有一个magic=rand()%500+1得语句即可。
10、break语句的作用是用来退出switch或一层循环结构。
11、标准函数exit(code)的作用是终止整个程序的执行。当code=0时,程序正常退出;当不为0时,程序出现某种错误后退出。
12、goto语句的作用是在不需要任何条件的情况下直接使程序跳转到该语句标号所标识的语句中执行。当程序要退出多重循环时,用此语句比用break语句更加的直接方便。
13、continue语句的作用是结束本次循环,继续执行下一次循环。
14、额外补充:
①while(x)等同于x!=0;
while(!x)等同于x==0。
②强制结束F6或ctrl break
三、收获与感悟
第六章的学习的结束,意味着我们在编程时的两种控制结构已经掌握,并能够进行运用。循环控制结构的运用更加需要我们拥有良好的逻辑思维能力,先从大方向着手思考问题,再在解决问题的过程中将程序一步步细化,从而达到解决实际问题的目的。上述知识点运用的第五条只是为我们解决问题提供了一个最基本的思路,当要解决实际问题时,要根据具体情况具体分析,不能死记硬背,要灵活变通,从而确定该用何种循环语句,这就是从大方向着手。随着循环结构的学习,我们编写的代码的行数也正在逐步增加,这就需要我们在编写代码时思路清晰,明确每一步代码的作用以及对后续代码产生的影响。
另外通过几次练习之后我发现,在自己编写代码碰到问题不能解决时,自己要努力的去进行修改,若是实在通过不了可以先搁置一会,等现在固有的思想瓦解后,可能会出现新的思路,亦或者是向同学寻求帮助,找出代码中的错误,自己认真理解其中的道理,确保在下次不会出现相同的错误。

(1) 根据下述情况,分别编写程序,记录 BX 中 1 的个数(需要考虑 BX 中二进制 串的特殊情况),要求如下:  循环次数已知循环次数未知 (2) 按照下列要求,编写相应程序段。 1) 起始地址为 string 的主存单元中存放一个字符串(长度大于 6),把 该字符串中的第 1 个和第 6 个字符(字节量)传送给 DX 寄存器; 2) 从主存 buffer 开始的 4 字节中保存了 4 个非压缩 BCD 码,现按低(高) 地址对低(高)位的原则,将他们合并到 DX 中。 3) 假设从 B800H:0 开始存放有 100 个 16 位无符号数,编程求它们的和, 并存在 DX.AX 中 4) 一个 100 字节元素的数组首地址为 array,将每个元素减 1(不考虑 溢出)。 (3) 把内存中从 PACKED 开始的 10 个字节单元中的 16 位压缩 BCD 数转换成非压 缩 BCD 数,并把结果存放在 UNPACKED 开始的 20 个字节单元中;将下列代 码补充完整,并且自己定义 PACKED 中的数据,将 UNPACKED 中的结果展示 出来。 MOV DX, _____ MOV CL, ______ MOV SI, 0 MOV DI, ___ CONVERT: MOV AL, [SI+PACKED] MOV AH, AL AND AL, 0FH __________ MOV [DI+UNPACKED], ____ 汇编语言实验(五) ADD DI, ____ ______ DEC DX JNZ CONVERT (4) 给定一个有序数组(均小于 FFH 例如 02H, 07H, 0BH, 0FH, 13H, 1CH, 24H, 39H, 40H, 57H, 68H)和一个目标值(例如 79H),请判断数组中是否含有两个数的 和为目标值,请设计一个算法,将时间复杂度控制在 O(n),编程实现并验证 你的算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值