循环结构程序总结
第一部分
一.循环结构的三种实现语句:
while语句,do-while语句和for语句
①while语句
1.格式:while(表达式){
循环题
}
注意循环语句中一定要注意循环条件表达式的书写吧以及循环体中循环控制变量的更新,从而避免死循环
注意循环变量与只起计数作用的变量的区别
如#include<iostream>
using namespace std;
int main(){
int x,s= 0;
cin >>x;
while(x!=0){也可以简写成 while(x)
if(x>0)s++;
cIn >>
cout <<s<< endl;
return 0;
}
此题中的s就不为循环变量只是起到了计数作用
②do-while语句
格式:do{
循环体
}while(表达式);
注意:语句先执行循环题再判断表达式,故至少执行一次循环体
经典例题(除十取余)
p106
利用除十取余依次把各位数字都取出来
一般数字取数,反转问题都以此为基础解决问题
③for语句
格式for(表达式1;表达式2;表达式3){
循环体}
表达式1:确定初值(初始化)
表达式2:循环条件
表达式3:循环变量增值
注意:执行循环的操作次数是固定的,已知的
p108:p4-3-1a
此例说明:在循环语句中可定义变量但离开循环语句变量就不存在了
且for语句中的3个表达式均可省略但要注意:例for(;i<10;)中的";"不要忘记写
p111例4
以此例说明在循环中使用的新变量即使定义了也要初始化变量即此题中的s1=0,s2=0,如果不初始化则很可能产生随机数
二.循环嵌套
即在循环语句里出现另一个循环语句,三种循环都可
以画矩形为例
p114数字三角形
注意:换行的时候勿忘加"\n"且当语句嵌套增加时注意花括号的位置以及换行应该在哪一层的语句中,例如在作业中的画矩形问题中
换行:printf("\n"),cout<<endl;也表示换行,如果使用cout语句输出则要注意<<endl;不要习惯性的添加
三.break和continue语句
break语句作用:遇到break语句就会立刻跳出循环执行循环结构后边的语句
coutinue语句作用:遇到coutinue语句就会忽略本次循环的后续语句而去执行下一次循环
以此题为例说明两者区别
p118例①,例②
break:一旦出现数中存在7就会立刻跳出循环
coutinue:判断此数与7有关后忽略后续语句,而去判断下一个数
两者都可以提高程序效率
注意:忽略与终止都是指最内层循环外层照常循环
四.程序的调试与跟踪
1.静态查错
①变量未赋初值
②中间运算结果越界
③if-else语句混乱
2.通过添加输出语句调试程序
注意不要忘记删除或注解掉"调试输出信息"的语句
3.借助调试工具单步跟踪(会产生依赖性)
第二部分
作业中的一些错误
画矩形题中勿忘换行
注意浮点数的定义%lf,%f
数字反转题的步骤:判断有几位数,取每一位,利用科学记数法重新组合成新数
敲七:注意break语句的使用,当判断某一位已经有七时需要跳出循环,否则可能会出现两个一样的值,如输入177最后会出现两个177
合理应用数学公式可使程序变得简单如金币问题,以及等比数列求和问题。
遇到大段大段的文字的题目要耐下心来把语言转化为数学问题再编程如津津的储蓄计划问题
第三部分
最大公约数的求法(辗转相除法)
求两个正整数m,n的最大公约数
分别用m,n,r表示被除数,除数,余数
①m除以n的余数r
②当r!=0时执行第三步
若r=0则n为最大公约数
③将n的值赋给m,将r的值赋给n再求m\n的余数r
④转到第二步
根据求最大公约数进而可以求最小公倍数:即m*n=mn的最小公倍数*mn的最大公约数
重难点
循环嵌套的使用,逻辑容易出错
第四部分
体会总结与反思
通过这一单元的学习,让我体会到c++的难度较之前大幅提升,而且在做题的过程中也有用到后面的知识例如排序问题,让我意识到c++的学习不能止步于眼前,如果要想程序写的简洁,逻辑清晰,一定要有瞻前意识,其次在调试程序的过程中不要盲目自信,问题往往出现在小细节中,往往自己觉得最不能犯错误的地方越容易犯错,所以在写完程序后可以先通过人脑模拟计算机一个字符一条语句的方式先运算一遍,然后在构建运行,总之我体会的循环语句的关键点是逻辑要清晰,要不断的反思与总结建立循环结构的知识体系 ,及时实践巩固。