C语言:利用二维数组输出十行杨辉三角

博客内容讲述了如何初始化和填充一个特殊的二维数组,该数组的特定位置遵循特定规律:第一列和对角线上的元素全为1,其余元素由上一行和左一列的元素相加得出。代码示例展示了如何生成并输出这种数组,以及如何将代码推广到指定的行数。还提到了错误的遍历方式会导致只输出对角线元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

 题目分析:定义一个二维数组yh[10][10](yh[行][列])
//不难发现在二维数组yh[0][0]--yh[9][9]中
//(1) yh[i][0]第i行(每一行)的第0个(第一个)都是1 (i:0~n-1)
//(2) yh[i][i]第i行(每一行)的第i个(最后一个)都是1 (i:0~n-1)
//(3) yh[i][j]=yh[i-1][j]+yh[i-1][j-1] (i:1~n-1  j:1~n-1) #意为每一个数等于这个数肩膀上两个数的和。

代码如下:

#include<stdio.h>
int main()
{
	int yh[10][10],i,j;
	for(i=0;i<10;i++)
	{
		yh[i][0]=1;
		yh[i][i]=1;
	}
	
	for(i=1;i<10;i++)
	{
		for(j=1;j<i;j++)
		{
			yh[i][j]=yh[i-1][j]+yh[i-1][j-1];
		}
	}
	for(i=0;i<10;i++)
	{
		for(j=0;j<=i;j++)
		{
			printf("%d ",yh[i][j]);
		}
		printf("\n");
	}
	return 0;
}

输出结果:

 代码推广到指定输出行数:

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

输出结果:

 注意:不可以这样写for循环语句,以下是i和j同时变化,这样只能输出yh[0][0] yh[1][1] yh[2][2]....即每行的最后一个数,不能遍历整个二维数组。

for(i=0,j=0;i<n&&j<n;i++,j++)
	{
		printf("%d ",yh[i][j]);
		printf("\n");
	}

结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值