#include<stdio.h>
#define N 50
int main()
{
int a[N][N],i,j,n;
scanf("%d",&n); //输入打印行
for(i=0;i<=n;i++)
for(j=0;j<=i;j++)
{
if(j==0||i==j)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");}
return 0;
}
这是结果:
1 0 0 0 0 0 0
1 1 0 0 0 0 0
1 2 1 0 0 0 0
1 3 3 1 0 0 0
1 4 6 4 1 0 0
1 5 10 10 5 1 0
1 6 15 20 15 6 1
这是预期结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
该怎么做
#include <stdio.h>
#define N 50
int main()
{
int a[N][N], i, j, n;
scanf("%d", &n); //输入打印行
for (i = 0; i <= n; i++)
for (j = 0; j <= i; j++)
{
if (j == 0 || i == j)
a[i][j] = 1;
else
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
for (i = 0; i < n; i++)
{
for (j = 0; j <= i; j++)
printf("%d\t", a[i][j]);
printf("\n");
}
return 0;
}
printf("%d\t",a[i][j]);
判断一下a[i][j]
是否=0:
if(a[i][j])
printf("%d\t",a[i][j]);
另外a[][]
定义成全局,这样保证有初值。
改正:
#include<stdio.h>
#define N 50
int a[N][N];
int main()
{
int i, j, n;
scanf_s("%d", &n); //输入打印行
for (i = 0; i <= n; i++)
for (j = 0; j <= i; j++)
{
if (j == 0 || i == j)
a[i][j] = 1;
else
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
if(a[i][j])
printf("%d\t", a[i][j]);
printf("\n");
}
return 0;
}
判断a[i][j]是否为0,不为0,就输出
#include<stdio.h>
#define N 50
int main()
{
int a[N][N],i,j,n;
scanf_s("%d", &n); //输入打印行
for (i = 0; i <= n; i++)
for (j = 0; j <= i; j++)
{
if (j == 0 || i == j)
a[i][j] = 1;
else
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
if(a[i][j]!=0)
printf("%d\t", a[i][j]);
printf("\n");
}
return 0;
}