《C语言程序设计》案例讲义 - 完整版 联系客服

发布时间 : 星期一 文章《C语言程序设计》案例讲义 - 完整版更新完毕开始阅读09bd7a05bed5b9f3f90f1ca9

案例八 打印有规律的图形

教学目的:

1. 掌握嵌套循环(多重循环)结构程序的编写;

实际应用中,程序通常是由基本的顺序结构、分支结构和循环结构根据需要组合而成的。如案例六后的习题4,要求打印一个由“*”组成正三角形,编写实现类似这样有规律的图形,通常采用循环嵌套的结构。由“*”组成的正三角形程序如下:

#include “stdio.h” #include “conio.h” main() {

int row,col; clrscr();

for(row=1;row<=3;row++) /*控制输出图形的行数*/ {

for(col=1;col<=3-row;col++) /*控制每行前面输出的空格数*/

printf(“ “);

for(col=1 ;col<=2*row-1;col++); /*控制每行输出的字符数*/ printf(“*”);

printf(“\\n”); /*换行*/ } }

一、案例分析

1.循环的嵌套

若循环语句中循环体内又完整地包含另一个或多个循环语句,称为循环的嵌套。三种实现循环的语句可以相互嵌套使用。常见的嵌套形式如下图8.1所示:

图8.1 常见的嵌套形式

其中每个方框代表一个循环结构,循环嵌套可以是多层,图8.1最右边的是三层,中间和左边的是二层,中间的结构是外循环中包含有两个并列的循环结构。注意循环的嵌套不能出现交叉的情况。案例程序结构是属于中间一种,一个大循环内包含两个并列的小循环。

2.嵌套循环的执行过程

嵌套循环的执行仍然遵守每种实现循环结构语句的执行过程。内部循环是外部循环的循环体,内外是相对的,比如图8.1中右边的嵌套结构,中间一层循环对于最外层循环来说就是内循环,而对于最内层的循环来说就是外循环,外部循环的每次执行过程中都会触发内部循环从初始值开始执行, 直到内部循环执行结束。外部循环执行了多少次,内部循环就完成多少次完整循环。

3.案例程序的执行过程

49

程序从上往下执行到外层的for语句时,变量row=1,满足循环的条件,所以执行其循环体,循环体的第一条语句是内层循环for,变量col=1,满足内循环的条件,执行内循环的循环体“printf(“”);”,输出一个空格,接着执行内循环for语句的表达式3,使col加1,col=2,然后计算内循环for语句的表达式2,仍然满足条件,继续执行其循环体“printf(“”);”,又输出一个空格,再次重复刚才的过程,直到内层循环的条件不满足时,转而执行内层循环for语句的下一条语句,在此就是下一个内循环语句,开始该循环的执行,输出第一行的一个*,当这层循环结束后,要换行准备下一行的输出,因此在第二个内层循环结束之后,一定要有一个换的printf函数调用,即“printf(“\\n”);”。“printf(“\\n”);”语句执行完之后,继续外层循环for语句的表达式3的计算,使row加1,然后执行外层循环for语句的表达式2,仍然满足条件,所以再次执行外层循环的循环体,即内层循环的第一个for语句又从col=1开始执行,重复前面的过程,在第二行输出一个空格和三个*,然后是换行。再次继续外层循环for语句的表达式3的计算,使row加1,然后执行外层循环for语句的表达式2,仍然满足条件,所以再次执行外层循环的循环体,即内层循环的第一个for语句又从col=1开始执行,重复前面的过程,在第三行输出0个空格和五个*,然后是换行。再次继续外层循环for语句的表达式3的计算,使row加1,然后执行外层循环for语句的表达式2,这次不满足条件,所以结束外层循环的执行,继续执行外层循环的下一条语句,在本例中,没有下一条语句,因此结束整个程序的执行。

4.有规则图形打印的方法总结 图形的打印规律是:

1) 数清图形的行数,可以从0开始,也可以从1开始,如本案例是3行,从1数到3; 2) 找出每行符号的个数和行数的关系,如本案例,第一行1个*,第二行3个*,第三行5个*,

*的个数和行的关系是:2*行数-1,注意由于是一个正三角形,我们看到的是*,由于printf函数输出总是从光标当前位置开始,并不在我们希望的位置,因此还需要找出每一行需要输出的前导空格数,本案例前导空格和行数关系是:3-行数。

3) 程序结构 外层循环控制图形输出的行数,内层的第一个循环控制前导空格的输出,第二个

循环控制输出符号的个数,外循环循环体的最后一条语句是调用printf函数实现换行的语句,这一行千万不可少,否则所有的符号只会输出在一行上。 以上规则主要用于下列类似图形。

* *** *****

* *** *****

* *** *****

* * * * *

***** ***** *****

* *** ***** *** *

对于右侧的菱形图形,也是应用上述规则,只是应用时把菱形分成上下两段进行编程。要打印其它的有规律图形,只要灵活运用上述方法即可。

二、应用举例

【例 8-1】请编程打印下列由“8”组成的图形。

分析:根据前述的方法,该图有4行,每行的字符个数和行数相同,每行输出的8 前导空格数与行的关系是4-行数。(行从1 计数) 88 程序如下: 888 8888

50