黄浩老师cpp平时作业(四)杨辉三角

//by YewLi 
#include <iostream> 
using namespace std; 
void YangHuiData(int *, int); 
void YangHuiShow(int *, int); 
int main() { 
	int n;
	cout<<"请输入杨辉三角形的行数"<<endl;
	cin>>n;
	//计算杨辉三角并保存到二维数组
	//cout<<endl; 
	int a[n][n];
	int *p;
	p = a[0];
	YangHuiData(p,n); //在屏幕上打印等腰三角形的杨辉三角 
	YangHuiShow(p,n);//n是杨辉三角形的行数 
	return 0;
}
void YangHuiData(int *p,int n){ 
//完成杨辉三角形的计算,没有显示的位置填0 
	//p[1][1] = p[1][2] = p[2][2] = 1;
	//memset(p,0,sizeof(int));
	for(int i = 0;i < n;i++)
		for(int j = 0;j < n;j++)
			p[i*n + j] = 0;
	for(int i = 0;i < n;i++){
		p[i*n] = p[i*n + i] = 1;
		for(int j = 1;j < i;j++)
			p[i*n + j] = p[(i - 1)*n + j - 1] + p[(i - 1)*n + j];
	}
//	for(int i = 0;i < n;i++){
//		for(int j = 0;j < n;j++)
//			cout<<p[i*n+j]<<" ";	
//		cout<<endl;
//	}
//		for(int i = 0;i < n;i++){
//	for(int j = 0;j <= (n - i);j++)
//		cout<<" ";
//	for(int j = 0;j <= i;j++)
//		cout<<p[i*n +j]<<" ";
//	for(int j = 0;j <= (n - i);j++)
//		cout<<" "; 
//		cout<<endl;
//	}
	 
} 
void YangHuiShow(int *a,int n){ 
//根据数据a指向的二维数组在屏幕上打印 
//杨辉三角形,每行前面填充合适的空格 
//以显示成等腰三角形,左右对称 
//	cout<<"1111"<<endl;
for(int i = 0;i < n;i++){
	for(int j = 0;j <= (n - i);j++)
		cout<<" ";
	for(int j = 0;j <= i;j++)
		cout<<a[i*n +j]<<" ";
	for(int j = 0;j <= (n - i);j++)
		cout<<" "; 
		cout<<endl;
}
}

手动对齐,目前还没找到cpp输出的居中功能,叹气。

到9以后可能就不太齐了,真 强迫症可以用条件判断再对的齐一点。

然而我懒。

算是留了个不太好的小坑吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值