c - 使用数组的帕斯卡半金字塔
问题描述
我是新手,我的问题是我无法使用数组打印帕斯卡半金字塔。我知道如何使用以下代码在没有数组的情况下做到这一点:
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]);
但我无法弄清楚。
解决方案
在您的第二个程序中,您没有存储在 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");
}
}