打印杨辉三角

打印杨辉三角


一、目的

-掌握对于上一行取值的判断方式
-掌握如何固定值的大小


二、实验内容与设计思想

打印杨辉三角

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

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

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

输入样例:
6
输出样例:

题目分析:

看题目可知,代码量大概并不复杂,重点在于如何获得并正确输出值


函数相关伪代码

1.int a,sum[1000];
2.for(i=a;i>0;i--)
|for(k=i;k>1;k--)
||printf(" ")
|printf("%4d",1)
|p++
|for(l=a-i;l>0;l--)
||k=(a-i)*(a-i-1)/2+l-1;
||sum[p]=sum[k]+sum[k+1];
||printf("%4d",sum[p]);
||p++;
|if(i<a)
|printf("%4d",1);
|sum[p]=1;
|p++;

函数代码

#include<stdio.h>
int main()
{
    int a,i,l,sum[1000],p=0,k;
    scanf("%d",&a);
    for(i=a;i>0;i--){
        for(k=i;k>1;k--){
        printf(" ");
        }
        printf("%4d",1);
        sum[p]=1;
        p++;
        for(l=1;l<a-i;l++){
            k=(a-i)*(a-i-1)/2+l-1;
            sum[p]=sum[k]+sum[k+1];
             printf("%4d",sum[p]);
            p++;
        }
        if(i<a){
             printf("%4d",1);
            sum[p]=1;
            p++;
 }
        printf("\n");
    }
        return 0;

}

三、实验使用环境

以下请根据实际情况编写

  • 操作系统:Windows 11专业版
  • 编程语言:C
  • 开发工具:[DevC++]

四、实验步骤和调试过程

简单计算器

本机运行截图


五、实验小结

遇到的问题及解决方法:

  1. 问题:sum[p]无法获得正确的值
  • 解决方法:修改代码,改正方法

实验体会和收获:

这段代码用于根据要求打印杨辉三角(有特定的格式)。
首先,通过scanf函数读取输入的int型 a来确定要打印出几行杨辉三角形,定义sum1000来储存每一行的值(为了计算每行要打印出的数值).
接着,使用两层嵌套循环来控制每一行的打印。外层循环变量i从a递减至1,a-i表示行数,从0行开始,通过i的个数来循环打印每一行的空格数,使输出图形可以呈现三角形,然后打印第一个数字1(由于要固定格式,输出要写出%4d,不可以是%.4d,这会使0占位)并将其存储在数组sum中。
接着,先输出一个1,再通过一个循环计算并打印每一行的数字,每一行个数由a-i来决定,这些数字是上一行相邻两个数字之和,由于每个值都存储在sum数组中,可以通过求从0行到打印行的个数再加上处于打印行的第几个个数,减一(因为第一个固定为1,是从第二个开始不确定)来求出相加的两个数在sum数组里的下标,如果当前行不是第一行,还会在行尾打印数字1。每打印完一行后,输出一个换行符。这样,就完成了杨辉三角形的打印。

posted @ 2025-04-29 21:11  穗和  阅读(71)  评论(0)    收藏  举报