在屏幕上打印杨辉三角
输出样例:
1 1 1 1 2 1 1 3 3 1
方法一:
1、使用二维数组形成行和列;
2、data[i][j] = data[i-1][j-i] + data[i-1][j];//核心公式
3、按格式打印。
方法二:
双重循环控制行和列,按照每一层去打印。
方法一:使用二维数组
#include <stdio.h> #include <windows.h> #define N 5 //使用二维数组 int main() { int data[N][N]; int i, j, k; data[0][0] = 1; data[1][0] = 1; data[1][1] = 1; for (i = 1; i < N; i++) { for (j = 0; j < i + 1; j++) { if (j == 0 || j == i) { data[i][j] = 1; } else { data[i][j] = data[i - 1][j - 1] + data[i - 1][j]; } } } //打印 printf("当N为5时,杨辉三角如下:\n"); for (i = 0; i < N; i++) { for (k = 0; k < N - i - 1; k++) { printf(" "); } for (j = 0; j < i + 1; j++) { printf("M", data[i][j]); } printf("\n"); } system("pause"); return 0; }
方法二:使用一维数组
void main() { int num[N]; int temp[N]; int i, j, k; printf("使用一维数组实现:\n"); for (i = 0; i < N; i++) { if (i == 0) { for (k = 0; k < N - i - 1; k++) { printf(" "); } printf("m\n", 1); } else if (i == 1) { for (k = 0; k < N - i - 1; k++) { printf(" "); } printf("mm\n", 1, 1); num[0] = 1; num[1] = 1; } else { for (j = 0; j < i + 1; j++) { if (j == 0 || j == i) { if (j == 0) { for (k = 0; k < N - i - 1; k++) { printf(" "); } } printf("m", 1); temp[j] = 1; } else { temp[j] = num[j - 1] + num[j]; printf("m", temp[j]); } } printf("\n"); for (k = 0; k < j; k++) { num[k] = temp[k]; } } } system("pause"); return 0; }对比:
很显然,二维数组更容易理解,而且代码整洁,小编推荐使用二维数组方式。