循环控制结构学后有感
2018年12月7日 山东农业大学 2018级数学类四班 李伟超
在前段时间的学习中我们掌握了顺序结构和选择结构。而在实际应用中,我们经常会遇见许多有规律性的重复运算,这就需要我们学习新的程序结构——循环控制结构。循环结构有三种类型:for,while和do-while,在此我们仅介绍前两种。
首先,我们先大体回顾一下这两类循环结构的基本描述:
1.for语句 for(表达式1;表达式2;表达式3)
{
循环体语句
}
2.while语句 while(表达式)
{
循环体语句
}
for语句用于实现当型循环控制结构。在循环顶部进行循环条件测试,如果循环条件首次测试即为假,则循环体一次也不执行。适合于循环次数已知、计数控制的循环。
While语句同样用于实现当型循环控制结构。适合于循环次数未知、条件控制的循环。
下面我们通过一道程序设计的例题来进一步说明这两种语句所适用的环境。
描述
金中食堂做的蛋糕总是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想请你再帮个忙,用电脑画出用“”号组成的裱花形状,这将是个空心的菱形。
输入
一个整数,n>0。
输出
由n2-1层“*”号组成的空心菱形。
代码如下:
#include <iostream>
using namespace std;
int main()
{
int n,i,j;
cin>>n;
**`for(i=1;i<=2*n-1;i++)`**
{
**for(j=1;j<=2*n-1;j++)**
{
**while((i+j==n+1)||(i+j==3*n-1)||(i-j==n-1)||(i+n==j+1))**
cout<<"*";
else
cout<<" ";
}
cout<<endl;
}
return 0;
}
在上述例子中我们可以清楚的看到:通过两个for循环控制金花的规格大小(即循环范围),而用while(即当满足条件时)来控制*出现的位置,这两种语句搭配使用,成功的帮助我们打出符合描述的图案。
而在一些特定情景下,当相应条件已经满足,流程需要跳转时,下面这几种用于流程控制的语句就可以派上用场了。
1.break语句:用于退出switch或一层循环结构。
2.continue语句:用于结束本次循环,继续执行下一次循环。
3.goto语句:用于跳出多重循环,无条件的转移到标号所标识的语句处去执行。
以下面这个程序为例:
输出所有形如aabb的四位完全平方数
int main()
{
int x,n,a,b;
for(x=1; ;x++){
n=x * x;
****if(n<1000) continue**;**
**if(n>9999) break;**
a = n / 100;
b = n % 100;
if(a==a/10&&b==b/10) printf("%d\n",n);
}
return 0;
}
此程序中的continue是指跳回for循环的开始,执行调整语句并判断循环条件,就是“直接进行下一次循环”,而break是指直接跳出循环。
另外,注意到这里的for语句是“残缺”的:没有指定循环条件。事实上,3个部分都是可以省略的。没错,for(;;)是一个很特殊的循环——死循环:如果不采取措施(如本程序中的break),它就永远不会结束。
由此可见这几个语句的重要性。
通过相应循环程序的编写,我们不难发现在具有规律性,且在一定范围内的重复运算的情景下用for和while语句搭配起来使用效果极好。而在解决这种类型的题目时我们必须紧扣着规律性和重复性两点,在这两个方面(如上文的敲金花)并通过相应的循环控制语句描述出来,这需要对语句有一定深度的理解和相应的编程经验,但俗话说万事开头难,只要我们肯勇敢的迈出第一步,离掌握和熟练运用这类结构也就不远了。
That’s all, thank you!