浙大版《C语言程序设计(第4版)》题目集参考答案
本题要求按照规定格式打印前N行杨辉三角。
输入格式:
输入在一行中给出N(1≤N≤10)。
输出格式:
以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。
输入样例:
6
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
提交结果:
基本思路:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
把杨辉三角当成矩阵,用二维数组来实现 ,第一列和主对角线元素全为一,第二行开始两者所夹部分的值该元素上一行左边元素和正上方元素的和
代码实现:
#include<stdio.h>
#define MAXN 10
int main()
{
int N = 0;
scanf("%d", &N);
int arr[MAXN][MAXN] = { 0 };//杨辉三角
//杨辉三角初始化
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (j == 0)//第一列全1
{
arr[i][j] = 1;
}
if (i == j)//主对角线全1
{
arr[i][j] = 1;
}
if (i > 1 && j > 0 && j < i)//第一列与主对角线所夹部分
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
//打印杨辉三角
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N - i - 1; j++)//每行空格部分
{
printf(" ");
}
for (int j = 0; j <= i; j++)//第j行的杨辉三角
{
printf("%4d", arr[i][j]);
}
printf("\n");//下一行
}
return 0;
}
欢迎提问和纠错,共同讨论一起进步!