正六边形C语言输出算法记录

正六边形C语言输出算法记录

要求:输入一个正整数n,输出一个边长为n的六边形。

#include<stdio.h>
int n,re=-1;
void print(int *bealoon)					//对应的打印函数
{
	int i;
	for(i=0;i<3*n-2;i++)
	{
		if(bealoon[i]==1) printf("*");
		if(bealoon[i]==0) printf(" ");
	}
	printf("\n");
}
void eva(int left,int right,int *bealoon)
{
	int i;
	for(i=0;i<3*n-2;i++) bealoon[i]=0;
	if(right-left==n-1)						//顶层与底层的特殊赋值处理
	{
		for(i=left;i<=right;i++) bealoon[i]=1;
		if(re==1) return;
	}
	if(left==0) re=1;
	bealoon[left]=1;
	bealoon[right]=1;
	print(bealoon);
	eva(left+re,right-re,bealoon);
	return;
}	
int main()
{
	scanf("%d",&n);
//	n=100;							//测试数据 
	int left,right; 
	int bealoon[3*n-2];
	left=n-1;
	right=2*n-2;
	eva(left,right,bealoon);
	print(bealoon);
	return 1;
} 

注:本来对数组归零时想使用memset函数,但是没有成功,所以使用老土办法清零,把错误百度一下记在这里

int some_func(struct something *a)
{
    …
    …
    memset(a,0,sizeof(a));}
/*摘自百度百科
	其实这个错误严格来讲不能算用错memset,
	但是它经常在使用memset的场合出现这里错误的原因是VC函数传参过程中的指针降级,
	导致sizeof(a),返回的是一个 something*指针类型大小的的字节数,如果是32位,就是4字节。
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值