第四单元 循环结构程序设计
循环结构有三种实现语句:while语句,do-while语句和for语句
第一课 while语句
while语句的格式
while(表达式){循环体}
含义:先计算表达式(一般称之为循环条件)的值,当表达式的值为真(循环条件成立)时,去执行一次循环体。又称“当型循环”
if语句–while语句
执行一次循环体后,while语句又回到开始处,继续计算和判断表达式真假,再决定是否执行循环体。
例:输出十个“@”
int i=1;
while(i<=10){
printf("@");
i++;
}
在while语句中,一定要注意“循环条件表达式”的书写,以及循环体中的“循环控制变量”的更新,从而避免死循环。同时,循环条件表达式和循环控制变量的变化,也决定了循环体被执行的次数。
例求1+2+3+…+100的值
分析 设sum存放答案,初始化为0,再设i为循环控制变量,初始化为1。当循环条件(i<=100>)成立时,反复执行循环体。
(1)将i累加到和sum中
(2)将i取值为下一个数,即i++
最后输出ans的值
#include
using namespace std;
int main(){
int i=1,sum=0
while(i<=100) sum+=i++;
cout<<sum<<endl;
return 0;
}
第二课 do-while语句
格式:do{循环体}while(表达式)
含义:先执行一次循环体,然后判断表达式是否成立,如果成立,则返回继续执行循环体,直到表达式不成立,才退出循环。一般称之为“直到型循环”。do-while语句适用于解决至少执行一次重复操作(循环体)的循环语句。
do-while语句–while语句
do-while语句先执行循环体再判断表达式,所以至少执行一次循环体。
例 输出一行十个“@”
#include
using namespace std;
int main(){
int i=1
do{printf("@")};
i++;
}while(i<=10);
return 0;
}
第三课 for语句
格式:for(表达式1;表达式2;表达式3){循环体}
如果重复执行的操作次数是固定的,已知的,一般使用for语句。表达式1表示初始化,表达式2循环条件,表达式3更改循环变量的值。
例 输出一行是个“@”
#include
using namespace std;
int main(){
for(int i=1;i<=10;i++
printf("@");
printf("\n");
return 0;
}
例 斐波那契数列
#include
using namespace std;
int main(){
int k;
cin>>k;
int k1=1,k2=1,k3=1;
for(int i=3;i<=j;i++){
k3=k1+k2;
k1=k2;
k2=k3;}
cout<<k3<<endl;
return 0;
}
例 求平均年龄
#include
using namespace std;
int main(){
int n;
float s=0
scanf("%d,&n");
for(int i=1;i<=n;i++){
int x;
scanf("%d,&x");
s+=x
}
printf("%.2f\n",s/n);
return 0;
}
例 最高的分数
using namespace std;
int n,a,i,x=0;
int main()
{
scanf("%d",&n);
scanf("%d",&a);
x=a;
for(i=2;i<=n;i++)
{
scanf("%d",&a);
if(a>x)
x=a;
}
printf("%d",x);
return 0;
}
第四课 循环嵌套
例 输出矩形
#include
using namespace std;
int main(){
int n,m;
scanf("%d %d,&n,&m");
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)printf("*")
printf("/n")};
return 0;
}
例 与七无关的数
#include
using namespace std;
int main(){
int n,ans =0;
cin>>n;
for(int i=1; i<=n;i++){
int flag1 =1,flag2=1;
if(i%70) flag1=0;
int x=i;
while(x&&flag2){
if(x%107) flag2=0;
x=x/10;
}
if(flag1&&flag2)ans++;
}
cout<<ans<<endl;
return 0;
}
第五课 break和continue语句
1在循环体中遇到break语句,就会立刻跳出循环体,执行循环体后面的语句
第六课 程序的调试与跟踪
1静态查错
(1)变量未赋初值
(2)中间运算结果越界
(3)if-else语句混乱
(4)实数比较出错
2通过添加输出语句调试程序
注意,使用这种方法调试程序后,一定要删除或者注解掉“调试输出信息”的语句。
心得
- for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项, 即可以缺省,但“;”不能缺省。
- 省略了“表达式1(循环变量赋初值)”, 表示不对循环控制变量赋初值。
- 省略了“表达式2(循环条件)”, 则不做其它处理时便成为死循环。
总之
循环结构能够解决许多现实问题,通过数学建模把实际问题转化,然后通过编程使用循环结构等可以快速解决问题,节约了时间。在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体;而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。