[C语言]杨辉三角形:编程计算并输出打印前n行杨辉三角形。请使用数组实现。

输入

输入一个正整数n(0 < n <= 20)。

输出

输出杨辉三角形的前n行,相邻两项之间用一个空格隔开。

输入示例

7

输出示例

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

数据范围

输入输出均为int范围的整数

先找到杨辉三角的规律:任意左右相邻两数和等于两数之下的数(图片来自网络)

题中打印案例为直角三角形而非等腰三角形,可使用2x2数组来表示,最后不需要的值不打印即可

定义2x2数组,我们分两部分来定义,一部分为1,另一部分为其他数

找出1的索引特点,[ i ][ j ],当i=j或者列数 j 为 0 时,为1,所以:

#include <stdio.h>
#include <stdlib.h>
int main() {
	int n,i,j;
	scanf("%d",&n);
	int a[n][n];
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(i==j||j==0){
				a[i][j]=1;
			}
			else{
				a[i][j]=a[i-1][j]+a[i-1][j-1];
			}
		}
	}

接着打印杨辉三角,直角形式,即2x2数组形式的杨辉三角特点:只有行数大于等于列数时有值

所以:

	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(j<=i){               //条件:行数>=列数
			    printf("%d ",a[i][j]);
	 	    }
		}
		printf("\n");    //每行打印完成后换行
	}

	return 0;
}

最后每行打印完成加上换行即可

综上,代码为:

#include <stdio.h>
#include <stdlib.h>
int main() {
	int n,i,j;
	scanf("%d",&n);
	int a[n][n];
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(i==j||j==0){
				a[i][j]=1;
			}
			else{
				a[i][j]=a[i-1][j]+a[i-1][j-1];
			}
		}
	}
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(j<=i){
			    printf("%d ",a[i][j]);
	 	    }
		}
		printf("\n");
	}

	return 0;
}

(代码,解法不唯一,仅供参考)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值