#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
int main()
{
int n = 0;
int i = 0;
int j = 0;
int arr[20][20] = { 0 };
printf("打印行数:");
scanf("%d", &n);
//打印杨辉三角
//下面的循环将第一列元素和对角线元素赋值为1
for (i = 0; i < n; i++)
{
arr[i][0] = 1;
arr[i][i] = 1;
}
//下面的循环用于求其他元素的值,为它正上方和斜上方两元素的和
for (i = 1; i < n; i++)
{
for (j = 1; j <= i - 1; j++)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
//下面的循环用于按行输出求得的二维数组元素的值
for (i = 0; i < n; i++)
{
for (j = 0; j <= i; j++)
{
printf("%5d", arr[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
优化:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
#define N 10 //打印行数
int main()
{
int i;
int j;
int arr[N][N] = { 0 };
//打印杨辉三角
for (i = 0; i < N; i++)
{
for (j = 0; j <= i; j++)
{
if (j == 0 || j == i) //下面的循环将第一列元素和对角线元素赋值为1
arr[i][j] = 1;
else //下面的循环用于求其他元素的值,为它正上方和斜上方两元素的和
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
//下面的循环用于按行输出求得的二维数组元素的值并打印空格
for (i = 0; i < N; i++)
{
printf("%*d", 30 - i * 2, arr[i][0]);
for (j = 1; j <= i; j++)
{
printf("%4d", arr[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}