1 引言
顺序、分支、循环是结构化程序设计的三种基本结构,所以在高级语言程序设计课程中,掌握这三种结构是学好程序设计的基础。而循环结构是这三者中最复杂的一种结构,几乎所有的程序都离不开循环结构。在C语言中,循环结构主要是由for和while、do-while语句实现的,其中for语句的 应用 更为普遍一些。for语句的用法对于有程序设计经验的学生来说轻而易举,但是对于那些没有经验的初学者来说,难度却不小。本文从初学者的角度,阐述了C语言中循环结构几种典型应用的实现方法。
2 用循环结构输出几何图形
输出简单的几何图形(如图1),是循环结构的典型应用之一。对于这一类型的题目,初学者往往直接采用一条或若干条输出语句printf完成,这样虽然可以完成题目要求,但是很显然缺乏灵活性,不符合程序设计的思想。按照正常的程序设计思想,应该先 分析 图形的构成,找出其中的 规律 :如图1(a)中的实心三角形,每一行由若干个空格、星号和一个回车换行符构成,将行号、空格数和星号数分别设为i、m和n,则可以形成下表:
表1 实心三角形的构成表
行号i
空格数m
星号数n
1
4
1
2
3
3
3
2
5
4
1
7
5
0
9
分析表1,可以得出行号i与空格数m、星号数n如下的数学关系:
m=5-i,n=2×i-1
则实心三角形的构成规律可以描述为:第i行由(5-i)个空格和(2×i-1)个星号和一个回车符构成。把行号i作为for语句的循环变量,输出图形程序的主要部分见程序段1。
采用上面的方法,可以使学生很容易编写出类似的程序,其中的关键在于让学生找出图形中行号与每一行的空格数以及星号数的关系(对于图1(b)、(c)需要把图形分成几个部分,再分析其中的构成规律),这需要学生数学方面的知识,非编程本身的范畴了。
for(i=1;i<=5;i++)
{
/*输出(5-i)个空格;*/
for(m=1;m<=5-i;m++)
printf(“ ”);
/*输出(2*i-1)个星号;*/
for(n=1;n<=2*i-1;n++)
printf(“*”);
/*输出回车符;*/
printf(“\n”);
}
程序段1 实心三角形的主要程序
3 数组中循环结构的应用
在C语言中,for语句经常与数组相结合,用于实现数组元素的赋值、输入与输出。对于初学者来说,更习惯于用顺序结构的语句来实现(如图2左)。我们将图2左的几条语句作比较,可以看出在这5条语句中,不同的只有数组下标,那么就可以将这5条语句合并成一条for语句,将数组下标换成for语句的循环变量i,而i的值从0增加到4。按照for语句的基本语法规则可以很容易的写出图2右的for语句。