#include
int main()
{
int n,m,i,a,b,c,d,e,f;
int arr[1000]={0};
while(scanf("%d",&m)!=EOF)
{
f=0;
for(a=1;a<=m;a++)
{
c=0;
d=0;
e=0;
for(b=1;b<=a;b++)
{
if(b==a||b==1)
{
arr[b]=1;
if(e==0)
{printf("%d",arr[b]);
e++;
}
else
{
printf(" %d",arr[b]);
if(b>=3)
arr[b-1]=a-1;
}
}
else
{
c++;
printf(" %d",arr[b]+arr[b-1]);
if(c==2||d>=1)
{
arr[b-1]=arr[b-1]+arr[b-2];
d++;
}
}
}
printf("\n");
}
printf("\n");
}
return 0;
}
你这写的属实欣赏不来,看着太难受了,甚至一个注释都没有。建议删了重写。
#include <stdio.h>
int main()
{
int i, j, n;
while(scanf("%d", &n)!=EOF)
{
if(n <= 0)
break;
int a[n][n];
for(i=0; i<n; i++)
{
a[i][0] = 1; // 每行第一列元素的值为1
a[i][i] = 1; // 对角线元素值为1
}
for(i=2; i<n; i++)
{
for(j=1; j<i; j++)
{
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 ", a[i][j]);
}
printf("\n");
}
}
return 0;
}