用C语言实验杨辉三角形的打印

    杨辉三角形按我的理解来说就是一个两边都是1,内部的每个数都是其上面两个数的和。所以用C语言实现printf这个三角形最好使用二维数组。a[i][0]=1;a[i][i]=1;就实现了两边都是1。从第2行(第0行,第1行,第二行。。。第i行)依次第1列(第0列,第1列,第2列。。。第j列)a[i][j]=a[i-1][j-1]+a[i-1][j];就实现了三角形内部数组的迭代。然后依次打印第i行的第0列到第j列(j=i)。我的代码是打印到第10行。         具体C代码如下:

#include<stdio.h> int main()

{

     int a[10][10]={};

     int i;

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

     {

          a[i][0] = 1;

          a[i][i] = 1;      }      int j;

     for(i = 2;i <10;i++)

     {

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

               a[i][j] = a[i – 1][j – 1] + a[i – 1][j];       }      for(i = 0;i < 10;i++)

     {

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

               printf(“%d “,a[i][j]);

                     printf(“\n”); 

     }

}

    这段代码是经过很多次修改后的正确打印结果,中间过程遇到过几个问题。我分析了一下,主要考察的是C语言中很重要的迭代思想和对数组下标的理解。1.因为计算机可以很快完成很多次的重复工作,和数学期望的理解差不多,只要找到第N次与第N+1次之间的关系就可以完成迭代。2.数组在开始学习的时候总忘记是从第0行和第0列开始,对for语句来说是i<=n,还是i<n还是i<n+1需要具体问题具体分析。3.一个问题拿来应该对问题具体分析,最好可以画流程图,找到各个数据对应的关系。最后编译出现问题需要对每个流程进行复查,如这一题。我刚开始以为是printf那个for语句有问题,然后再查是填入数组数据那个for语句有问题。

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/Lee_580/article/details/80342974
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞