问题:巴斯卡三角形
这个题的一般方法是利用二维数组,这里没有使用二维数组,利用了两个一维数组,减少了空间的使用。
排版没做好,数字多了,会有些错位。
/* 题目:巴斯卡三角形 */ #include<stdio.h> void show(int i, int* priot_row, int* row, int count) { for (int k = i; k <= count; k++) { printf(" "); } for (int j = 0; j <= i; j++) { priot_row[j] = row[j]; printf("%d ", row[j]); } puts(""); } void PASCAL(int i, int* priot_row, int* row, int count) { for (int j = 0; j <= i; j++) { if (j == 0 || j == i) { row[j] = 1; } else { row[j] = priot_row[j - 1] + priot_row[j]; } } show(i, priot_row, row, count); } int main() { int i, count;//层数 int priot_row[40], row[40]; printf("请输入需要输出的层数:"); scanf("%d",&i); count = i; for (int j = 0; j < i; j++) { PASCAL(j, priot_row, row, count); } return 0; }