int main(int argc, const char *argv[])
{
int a[10][10]={};
int i,j;
a[0][0]=1;
a[1][0]=1;
a[2][0]=1;
a[3][0]=1;
a[4][0]=1;
a[5][0]=1;
a[6][0]=1;
a[7][0]=1;
a[8][0]=1;
a[9][0]=1;
for(i=0;i<10;i++)\\行的输入
{
for(j=0;j<=i;j++)列的输入
{
a[i+1][j+1]=a[i][j]+a[i][j+1];
}
//在第一次行的循环完成之后,就要完成输出,底下的两个for循环是为了完成二维平面的打印,但应该是行的一次循环完成,所以此时应该跳出行的循环。
{
for(j=0;j<=i;j++)
{
printf("%d\n",a[i][j]);
}
}
}
return 0;
}
1.for(i=0;i<10;i++)\\行的输入
{
1.1for(j=0;j<=i;j++)列的输入//此段程序执行的过程:当进入1时,对i初始化为0;进入1.1,对j初始化为0;a[1] [1]=a[0][0]+a[0][1],进入1.21,打印a[0][0],再次执行1.21,j=1,不满足条件,回 到1.2循环,i=1,输出a[1][0],1.21继续执行,输出a[1][1],再次跳到1.2,可以发现 程序在i=10以前,一直在1.2内部执行,而1.1计算的部分没有执行,导致输出的不是
实际计算的值。
{
a[i+1][j+1]=a[i][j]+a[i][j+1];}
1.2for(i=0;i<10;i++){
1.21for(j=0;j<=i;j++)
{
printf("%d\n",a[i][j]);
}}
这的换行也不对,这样表示,每输出一个元素都会换行。
应该改成:1.2for(i=0;i<10;i++)
{
1.21for(j=0;j<=i;j++)
{
printf("%d",a[i][j]);
}
printf("\n");//表示当j=某一个数的循环完成之后,也就是这一列的输入完成之后,在跳入到下一行之前进行换行。
}