如何用c++画圆(数组圆)

画圆

#include<fstream>
#include<cstdio>
using namespace std;
ofstream cout("circel.txt");
int a[1002][1002];
int pr()
{
	for(int i=1;i<=1001;i++)
	{
		for(int j=1;j<=1001;j++)
		{
			if(a[i][j]==1)
			cout<<"■";
			else
			if(a[i][j]==2)
			cout<<"●";
			else
			if(a[i][j]==3)
			cout<<"★";
			else
			cout<<"  ";
			//●★■□
		}
		cout<<endl;
	}
}
int main()
{
	int yx,yy,aa,bb;
	printf("请输入圆心坐标(x,y)\n");
	scanf("%d %d",&yx,&yy);
	printf("请输入半径范围");
	scanf("%d %d",&aa,&bb);
	int r,x,y,dx,dy,l,d,dl;
	for(r=aa;r<=bb;r++)
	{
		x=yx;
		y=yy;
		dx=x+r;
		dy=y;
		while(dx-dy!=x-y&&dx+1-dy!=x-y)
		{
			a[    dy][    dx]=r%3+1;
			a[2*y-dy][    dx]=r%3+1;
			a[    dy][2*x-dx]=r%3+1;
			a[2*y-dy][2*x-dx]=r%3+1;
			a[    dx][    dy]=r%3+1;
			a[    dx][2*y-dy]=r%3+1;
			a[2*x-dx][    dy]=r%3+1;
			a[2*x-dx][2*y-dy]=r%3+1;
			l=(dx-1-x)*(dx-1-x)+(dy-y)*(dy-y)-r*r;
			d=(dx-x)*(dx-x)+(dy-y+1)*(dy-y+1)-r*r;
			dl=(dx-1-x)*(dx-1-x)+(dy-y+1)*(dy-y+1)-r*r;
			l=l>=0?l:-l;
			d=d>=0?d:-d;
			dl=dl>=0?dl:-dl;
			if(l<d&&l<dl)
			dx--;
			if(d<l&&d<dl)
			dy++;
			if(dl<d&&dl<l)
			dx--,dy++;
		}
	}
	pr();
}
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值