C程序:
#include "stdio.h"
/* X:首数字,N:行数 */
void display(int X, int N)
{
int i, j
for(i=0 i<N i++)
{
/* 输出每一行的前导空格 */
for(j=0 j<N-1-i j++)
printf(" ")
/* 输出数字部分的前一半(0..i) */
for(j=0 j<=i j++)
printf("%3d", X+i+j)
/* 输出数字部分的后一半(0..i-1) */
for(j=0 j<i j++)
printf("%3d", X+2*i-1-j)
printf("\n")
}
}
void main()
{
int X, N
printf("input first figure : ")
scanf("%d", &X)
printf("input rows : ")
scanf("%d", &N)
display(X, N)
}
运行测试:
如果是(j=1j<=6-ij++}而for(i=1i<=6i++)
第一次输出5个空格
第二次j=2,i=2,6-i=4,只循环3次,输出3个空格
再下次就1个
再后面就没有了
所以用(j=1j<=20-2*ij++}