V1
#include <stdio.h>
#define rows 10 /*在此更改打印行数*/
int main()
{
int a[10][rows] = {1, 0}, i, j, b; /*i行,j项,b输出数,{1,0}是给第二行用*/
for (i = 1; i < rows; i++) /*将所有行第一列置1*/
a[i][0] = 1;
for (i = 1; i < rows; i++)
{
for (j = 1; j <= i; j++) /*第i行的数字有j项*/
a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; /*=上一行左右相加*/
}
for (i = 0; i < rows; i++)
{
for (j = 0; j <= i; j++)
printf("%-4d", a[i][j]); /*“-4”与打印的行数有关*/
printf("\n");
}
return 0;
}
V2
#include <stdio.h>
int main()
{
unsigned int a[35][35] = {0}, i, j, b; /*i行,j项,b输出数*/
printf("输入要打印的行数(<=34):");
scanf("%d", &b);
for (i = 0; i < b; i++) /*将所有行第一列置1*/
a[i][0] = 1;
for (i = 1; i < b; i++)
{
for (j = 1; j <= i; j++) /*第i行的数字有j项*/
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
for (i = 0; i < b; i++)
{
printf("%2d行", i+1);
for (j = 0; j <= (b - i); j++)/*以三角形输出*/
printf(" ");
for (j = 0; j <= i; j++)
printf("%4d", a[i][j]);
putchar('\n');
}
return 0;
}