首页 > 解决方案 > 使用数组的帕斯卡半金字塔

问题描述

我是新手,我的问题是我无法使用数组打印帕斯卡半金字塔。我知道如何使用以下代码在没有数组的情况下做到这一点:

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

当我尝试使用具有相同逻辑的数组来执行此操作时,我无法将其打印出来:

#define N 11
int main() {
  int pin[N][N];
  for (int i = 1; i < 5; i++) {
    for (int j = 1; j < i; j++) {
      printf("%d", pin[i][j]);
    }
    printf("\n");
  }
}

我认为这是我的错-->printf("%d" , pin[i][j]); 但我无法弄清楚。

标签: carraysloops

解决方案


在您的第二个程序中,您没有存储在 array 中的值pin。一个简单的解决方案是首先存储数据,同样的方式,你在第一个程序中打印它,在数组中,然后打印它。

在这个循环中,我存储了在第一个程序中打印的数据,pin唯一的一点是因为数组索引从你开始,也从0你开始你的循环0并使用j++而不是j

    int pin[N][N];
    //store data
    for (int i = 0; i < 5; ++i) {
        for (int j = 0; j < i+1 ; ++j)
        {
            pin[i][j] = j + 1;
        }
    }

这是带有打印数据的完整代码:

#define N 11
int main() {
    int pin[N][N];
    //store data
    for (int i = 0; i < 5; ++i) {
        for (int j = 0; j <= i; ++j)
        {
            pin[i][j] = j + 1;
        }
    }
    //print data
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j <= i; j++) {
            printf("%d ", pin[i][j]);
        }
        printf("\n");
    }
}

推荐阅读