输出杨辉三角(C 语言)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//杨辉三角的长度
#define Length 9

//返回需要打印的字符串
//s为数组
//index为当前的行数
char* getPrintLine(int nums[],int index,char *s)
{
	int i=0;
	int strs=0;
	index += 1;//具体的行数
	//填补指定的头部空格数
	for ( i = 0; i < Length - index; i++)
	{
		s[i] = ' ';
		strs++;
	}
	//加上自身+空格
	for (i = 0; i < index; i++)
	{
		if(i==0)
		{
			s[strs] = nums[i];
			strs++;
		}
		else
		{
			s[strs] =  ' ';
			strs++;
			s[strs] =  nums[i];
			strs++;
		}
	}
	s[strs]='\0';
	return s;
}

//输出杨辉三角
void main(void)
{
	//斜边都是由1组成的,其余的数都是它肩上的两数之和
	int s[Length][Length]={0},i,j;
	char str[100];
	//遍历每行
	for (i = 0; i < Length; i++)
	{
		//确定每行
		for (j = 0; j <= i; j++)
		{
			if(j==0 || i==j)
			{
				s[i][j] = 1; 
			}
			else
			{
				s[i][j]=s[i-1][j-1] + s[i-1][j];
			}
		}
	}
	//输出杨辉三角
	for ( i = 0; i < Length; i++)
	{
		char *a = getPrintLine(s[i],i,str);
		while (*a!='\0')
		{
			if(*a==' ')
			{
				printf(" ");
			}
			else
			{
				printf("%d",*a);
			}
			*a++;
		}
		printf("\r\n");
	}
	system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝创精英团队

你的支持是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值