实验7-2-6-二维数组 打印杨辉三角

玩原神玩的 软件23 2023-11-20 22:19:29

本题要求按照规定格式打印前N行杨辉三角。

输入格式:

输入在一行中给出N(1≤N≤10)。

输出格式:

以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。

输入样例:

6

输出样例:

        1
       1   1
      1   2   1
     1   3   3   1
    1   4   6   4   1
   1   5  10  10   5   1

对于这一题,初见可能会吓一跳,来来回回数着空格的多少,忘却了本质上题目的思考 

依托题干,可以得知本题运用二维数组来求解

但是!问题来了,这玩意长得也不像个方阵啊?而且上下两行中间隔着若干个空格?这可咋整?

别急~你先别急

 我们不妨先不管空格,把它左对齐

1
1   1
1   2   1
1   3   3   1
1   4   6   4   1
1   5  10  10   5   1

诶?你发现了什么?我们不妨手再贱一点

1   0   0   0   0   0
1   1   0   0   0   0
1   2   1   0   0   0
1   3   3   1   0   0
1   4   6   4   1   0
1   5  10 10  5   1

这玩意是不是就长得像二维数组了?

我们再思考一下数组中元素的关系我们不难看出一个公式

a [h] [l] = a [h-1] [l-1] + a [h-1] [l] ;    (h,j>=1)

  h,j为行和列的简写

还是没看懂?

 在这里,根据这张图,我们可以得出上述普遍结论了a [h] [l] = a [h-1] [l-1] + a [h-1] [l] ;    (h,j>=1)

即该位置的数由它的上边那个加上它左上角的那个

那么我们怎么算出各个位置上的数呢?总不能一个个手打吧?

我们不妨先利用原神高等元素论必修一当中的知识点把整个矩阵的所有元素全部初始化为0,然后再初始化第一列元素为1

再利用上述公式将剩下的数补全

但是!!!!!!!!!我们发现题目的输出不仅有很多byd空格,还没有输出byd0

这就对我们的格式化输出功底有所考察了

运用我们练习的功底,避免毕业直接上工地!

先解决不输出0的问题,然后再解决空格问题

直接上程序!

#include <stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    int a[n][n];
    for(int h=0;h<n;h++)
        for(int l=0;l<n;l++)
            a[h][l]=0;                         //初始化byd0

    for(int h=0;h<n;h++)
        a[h][0]=1;                             //初始化第一列byd1
    
    
    for(int h=1;h<n;h++)
        for(int l=1;l<n;l++)
            a[h][l]=a[h-1][l-1]+a[h-1][l];     //补全byd杨辉三角

int k=n-1;
    for(int h=0;h<n;h++){
        for(int i=0;i<n-(n-k);i++)
            printf(" ");                       //输出byd空格
        for(int l=0;l<n-k;l++){                //输出byd数字
            printf("%4d",a[h][l]);
            if(k<0)
                break;
        }
        k--;
        printf("\n");
    }
}

稳啦!!!

...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zeroization 2023-11-20
  • 打赏
  • 举报
回复 1

非常好作业报告,使我杨∠放缩

Rinnate 2023-11-20
  • 打赏
  • 举报
回复 1

非常好报告,使我数组转置

玩原神玩的 软件23 2023-11-20
  • 打赏
  • 举报
回复 1

很好报告,使我的滨州炸裂

fgdrgghfth 2023-11-20
  • 打赏
  • 举报
回复 1

很好报告,使我的数组旋转

212

社区成员

发帖
与我相关
我的任务
社区描述
程序设计基础课程教学群
c语言c++ 高校 福建省·厦门市
社区管理员
  • xmzq001
  • 鹿饮涧鸣
  • jiangxiaoju
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

请加入学习社区的软件23级同学修改社区昵称为学号+姓名,以便登记作业提交情况。

试试用AI创作助手写篇文章吧