目标输出:
分析:
这个问题与普通输出杨辉三角形差别不大,但我没输出过正杨辉三角形。这里的核心思想在于对数组的处理。
实现代码:
include<stdio.h>
int main() {
int row;
scanf_s("%d", &row);
//正序定义数组,根据杨辉三角形的特点
int arr[100][100]; //设置二维数组来存储数据
for (int i = 0; i < row; i++) {
arr[i][0] = 1; //每行第一个数为1
arr[i][i] = 1; //每行最后一个数为1
if (i >= 2) {
for (int j = 1; j < i; j++) {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; //计算中间数
}
}
}
int count = 0; //控制空格数
for (int i = row-1; i >= 0; i--) { //控制行数
for (int k = 0; k <= count; k++) {
printf(" "); //输出空格
}
for (int j = i; j >= 0; j--) { //输出每行的数字
printf("%2d ", arr[i][j]);
}putchar('\n');
count++;
}
return 0;
}
ps.这里的数组处理后再输出数组中的值来绘制图形的思想是我没有试过的。
成品图: