第四单元知识点:
4.1 while语句
1.while语句的格式:
while(表达式){
循环体
} 表示为当表达式成立时,不断重复执行循环体
2.变量初始化
3.当重复次数不确定时定义一个特定的条件,一般条件下循环,特殊条件下结束
4.2 do-while语句
1.do-while语句格式:
do{
循环体
}while(表达式) 表示为先执行一次循环体,然后判断表达式是否成立,如果成立,则返回继续执行循环体,直到表达式不成立,才退出循环
2.do-while语句中,循环体至少执行一次
4.3 for语句
1.for语句的格式:
for(表达式1;表达式2;表达式3;){
循环体
}
2.在循环体中可以定义变量,但使用范围小
3.可以省略表达式
4.4 循环嵌套
1.循环嵌套又称多重循环
2.先找规律,再想方案
3.可以利用标志变量法
4.外循环中循环变量变化一次,内循环变化一遍
4.5 break和continue语句
1.在循环体中遇到break语句,就会立刻跳出循环体,执行循环体结构后面的语句。
2.在循环体中遇到continue语句,就会忽略本次循环的后续语句而去执行下一次循环。
3.若循环变量只在循环体中起作用,可在循环体中定义变量
4.6 程序的调试与跟踪
1.静态查错:语句的顺序,思路,逻辑是否有误;语法是否有误;变量是否未赋初值;中间运算结果是否越界;if-else语句是否越界
2.动态调试:通过添加输出语句调试程序
4.7 循环结构应用举例
1.国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。请计算在前K天里,骑士一共获得了多少金币。
#include<iostream>
using namespace std;
int main(){
int i=1,k=1,s=0,n;
cin>>n;
while(i<=n){
for(int j=1;j<=k;j++){
s+=k;
i++;
if(i>n) break;
}
k=k+1;
}
cout<<s<<endl;
return 0;
}
2.【题目描述】输入n,输出一个n*n的正方形,正方形由符号c1和c2组成,正方形的四条边和对角线由c1组成,其余部分由c2组成。
#include<cstdio>
using namespace std;
int main(){
int n,i,j;
char c1,c2;
scanf("%d %c %c",&n,&c1,&c2);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if((i==j)||(i==1)||(j==n)||(j==1)||(i==n)||(i+j==n+1))
printf("%c",c1);
else
printf("%c",c2);}
printf("\n");
}
return 0;
}
注意:
1.要注意循环体中循环控制变量的更新。
2.注意变量初始化。
3.while执行循环体时当超过一条语句要用{}括起来。
4.求各位数字之和,需要分解出它的每一位数字进行累加,即从低位到高位不断求余累加。
5.连续输出若干项后,输出后要回车换行。
6.先考虑大框架,再考虑细节,注意利用已经学过的背景知识解题。
7.注意多重循环的写法。
8.注意标志变量的使用。
9.循环语句的嵌套不限语句类型,可以任意嵌套。
10.最大公因数=两数之积÷最小公倍数。
学习感受:
学习了关于循环结构的知识后,我认为这是c++中非常重要且难学的知识点,同时也要在写程序过程中注意很多问题,要求具备一定的逻辑思维,并且要能够找到题目中的规律,并进行抽象处理,我也通过openjudge中的题目更加深入了解了循环结构的题型,在做题过程中要注意先考虑大框架,再注意细节,并且要灵活运用已有的知识背景解决问题,但还是需要平时多加练习,才能及时掌握。