杨辉三角是一个由数字排列成的三角形数表:
/* yh-2d.c - 二维数组迭代 */
#include<stdio.h>
#define M 10 // 行数
#define PYRAMID // 金字塔,会额外填充空格
#define REVERSE // 反向再来一次,得到菱形
int main(void)
{
int a [M][M], i, j; // 二维数组和循环变量,a[行][列]
for (i = 0; i<M; i++) // 每一行
{
#ifdef PYRAMID
for (j = 0;j <= M-i; j++) printf (" ");
#endif // 填充结束
for (j = 0; j <= i; j++) // 赋值打印
printf("%4d", (a[i][j] = (i == j || j == 0) ? 1 : // 首尾置 1
a[i - 1][j] + a[i - 1][j - 1] )); // 使用上一行计算
printf("\n");
}
#ifdef REVERSE
for(i = M-2; i >= 0; i--)
{
#ifdef PYRAMID
for (j = 0;j <= M - i; j++) printf(" ");
#endif // 填充结束
for (j = 0;j <= i; j++) printf("%4d",a[i][j]); // 直接使用以前求得的值
printf("\n");
}
#endif // 菱形结束
getchar(); // 暂停等待
}
其中#ifdef 和#endif表示如果对#ifdef的标示符定了的话,执行语句,否则Else(可选)