用C语言输出杨辉三角形前十行,请问我哪里编错了?(出现很多零)谢谢!

如题所述

第1个回答  2024-12-11
在尝试用C语言输出杨辉三角形的前十行时,我遇到了一个问题。我的程序输出了许多零,而我期望得到的是杨辉三角形。下面是我的初始代码:

#include

int main() {

int a[10][11];

int x,y;

for (x=0;x<10;x++) {

for (y=0;y<11;y++) {

a[x][y]=0;

}

}

a[0][1]=1;

printf("%d\n",a[0][1]);

for (x=1;x<10;x++) {

for(y=1;y<=x+1;y++) {

a[x][y]=a[x-1][y-1]+a[x-1][y];

printf("%d",a[x][y]);

if (a[x][y]<10) printf(" ");

else if (a[x][y]>9&&a[x][y]<100) printf(" ");

else printf(" ");

}

printf("\n");

}

}

经过对比,我发现了一个问题。在初始设置时,我将所有元素初始化为零。然而,正确的方法应该是直接在循环中计算每个位置的值,而不是在循环之前将所有元素设置为零。我尝试了另一种方法:

#include

void main() {

int a[10][10]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}};

int i,j;

for(i=0;i<=9;i++) {

for(j=0;j<=i;j++) {

printf("%d ",a[i][j]);

if(i==j) printf("\n");

a[i+1][j+1]=a[i][j]+a[i][j+1];

/*

if(i==j) a[i][j]=1;

*/

}

printf("\n");

}

}

这样修改后,程序可以正确地生成杨辉三角形的前十行,而无需所有元素初始为零。这说明了正确的初始化对于某些算法的重要性。
    官方电话
相似回答
大家正在搜