立山 发表于 2024-8-24 08:59:06

【杨辉三角】打印杨辉三角前10行

杨辉三角(Pascal's Triangle)是一个由数字组成的三角形,具有许多有趣的数学性质。每个数字是其上方两个数字之和。它的第一行和第一列都是1,形成的结构如下

         1
       1   1
     1   2   1
   1   3   3   1
 1   4   6   4   1
1   5  10  10   5   1
杨辉三角的性质:


[*]边界:每行的第一个和末了一个元素都是1。
[*]对称性:每行的元素是对称的,即第 nn 行的第 kk 个元素即是第 nn 行的第 n−kn−k 个元素。
[*]组合数:第 nn 行的第 kk 个元素表现组合数 C(n,k)C(n,k),即从 nn 个元素中选择 kk 个的方式数。
打印杨辉三角前10行,利用C语言实现

具体代码

#include<stdio.h>

int main(){
    int a;
    for(int i=0;i<10;i++){
      a=1;
      a=1;
    }
    for(int i=2;i<10;i++){
      for(int j=1;j<i;j++){
            a=a+a;
      }
    }

    for(int i=0;i<10;i++){
      for(int j=0;j<=i;j++){
            printf("%-5d",a);
      }
      printf("\n");
    }

    return 0;
} 输出结果:

https://i-blog.csdnimg.cn/direct/2cb105d005c64e168342ec072b5cbde4.png
标准输出则必要修改一下:

#include <stdio.h>

int main() {
    int a; // 用于存储杨辉三角的二维数组

    // 初始化杨辉三角的第一列和对角线
    for (int i = 0; i < 10; i++) {
      a = 1; // 每行的第一个元素为1
      a = 1; // 每行的最后一个元素为1
    }

    // 填充杨辉三角的其他元素
    for (int i = 2; i < 10; i++) {
      for (int j = 1; j < i; j++) {
            a = a + a; // 当前元素等于上方两个元素之和
      }
    }

    // 打印杨辉三角
    for (int i = 0; i < 10; i++) {
      // 打印每行前的空格,使其居中
      for (int j = 0; j < 10 - i; j++) {
            printf(" ");
      }
      // 打印每行的元素
      for (int j = 0; j <= i; j++) {
            printf("%-5d", a); // 使用%-5d格式化输出
      }
      printf("\n"); // 换行
    }

    return 0;
} 输出结果:

 https://i-blog.csdnimg.cn/direct/c2f3295ead8a46ef9ad040edea04ec43.png
输出精确!
以为有资助的话点个赞吧!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【杨辉三角】打印杨辉三角前10行