在屏幕上打印杨辉三角

    xiaoxiao2025-03-19  23

    问题描述:

    在屏幕上打印杨辉三角

    输出样例:

    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; }

    对比:

    很显然,二维数组更容易理解,而且代码整洁,小编推荐使用二维数组方式。

    最新回复(0)