您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第五章 循环结构程序设计 > 【5.2 多重循环程序设计案例】

5.2 多重循环程序设计案例

 

5.2  多重循环程序设计案例

案例5.4  九九乘法表

【项目任务】

实现九九乘法表。

【设计思路】

实现九九乘法表的流程图如图5-3所示。

5-3  九九乘法表流程图

【程序代码】

#include <stdio.h>

main()

{

    int i,j;

   

    for(i=1;i<=9;i++)

    {

        for(j=1;j<=i;j++)

            printf("%d*%d=%-3d",j,i,i*j);

        printf("\n"); /*换行,整个九九乘法表有9行,所以该语句应被执行9*/

    }

}

【运行结果】

1*1=1 

1*2=2  2*2=4 

1*3=3  2*3=6  3*3=9 

1*4=4  2*4=8  3*4=12 4*4=16

1*5=5  2*5=10 3*5=15 4*5=20 5*5=25

1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

【知识拓展】

1.一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。

2.在一个循环体内如果有多个语句,应该用大括号括起来,这样就构成了复合语句。

案例5.5  金字塔图形

【项目任务】

输出以下图形。

                                                           *

                                                          ***

                                                         *****

                                                        *******

                                                        *********

【设计思路】

从以上图形可以看出,每一行的星号数为该行行数乘以2再减1,每一行前面的空格数为5减去该行行数。用变量i控制行数,用变量j控制行前的空格数以及打印的星号数,循环5次。

【程序代码】

#include <stdio.h>

main()

{

    int i,j;

   

    for(i=1;i<=5;i++)

    {

        for(j=1;j<=5-i;j++)      /*打印5-i个空格*/

            printf(" ");

 

        for(j=1;j<=2*i-1;j++)    /*打印2i-1个星号*/

            printf("*");   

 

        printf("\n");

    }

}

【运行结果】

                                                            *

                                                           ***

                                                          *****

                                                         *******

                                                        *********

【知识拓展】

1.该程序中临时变量ij不断地被重新赋值,原值均被新值所替代。

2.一般来说,对于输出图形的任务,只要认真找出其中的规律,按照规律来编写代码就相对容易了。

3.参照给出的案例,编写相应的程序代码,输出以下图形。

                                                        * * * * *

                                                          * * * * *

                                                            * * * * *

                                                              * * * * *

                                                                * * * * *

案例5.6  杨辉三角形

【项目任务】

输出以下杨辉三角形(要求输出6行)。

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10  10  5  1

【设计思路】

1)杨辉三角形最本质的特征是:它的竖直边和斜边都是由数字1组成的,而其余数则是等于这个数正上一行与左上一行的两个数之和。从杨辉三角形的特点出发,可以总结出:第n行有n+1个值(设起始行为第0行)。

2)对于第n行的第j个值:(n>=2)

j=1j=n+1时,其值为1

j!=1j!=n+1时,其值为第n-1行的第j-1个值与第j个值之和。

【程序代码】

#include <stdio.h>

#define N 6

main()

{

    int n,i,j,k,a[N][N];

   

    for(i=0;i<N;i++)

    {

        a[i][0]=1;

        a[i][i]=1;

    }

 

    for(i=2;i<N;i++)             /*从第3行开始*/

        for(j=1;j<=i-1;j++)      /*从第2列开始*/

            a[i][j]=a[i-1][j-1]+a[i-1][j];

 

    for(i=0;i<N;i++)

    {

        for(j=0;j<=i;j++)

            printf("%-4d",a[i][j]);

        printf("\n");

    }

}

【运行结果】

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10 10  5  1

知识拓展

1.本程序用到了二维数组,其定义的形式为:

类型说明符 数组名[常量表达式][常量表达式]

2.程序中,首先使用一个循环体对数组中代表杨辉三角形的两边赋值为1,第二个多重循环体的作用是对数组中代表杨辉三角形的非1数字进行计算和赋值。计算完毕后,值被存储在二维数组的相应位置,第三个多重循环体的作用是打印数组的值。