/*判断是是否在圆上*/
intisAtCircle(intx,inty,intr)
{
/*将(x,y)转换为相当圆心(r,r)的坐标*/
intrx=x-r;
intry=y-r;
doubled=sqrt(rx*rx+ry*ry)-r;/*计算到圆心的距离*/
if(fabs(d)<0.5)/*判断到圆心的距离是否为r(允许0.5的误差)*/
return1;
else
return0;
return(int)d;
}
voidprintCircle(intr)
{
intx,y;
for(y=0;y<2*(r+1);y++)
{
for(x=0;x<2*(r+1);x++)
{
if(isAtCircle(x,y,r))/*如果这个点在圆上,打印’*’,否则,打印”*/
printf(“*”);/*因为字符高比宽大,所以加一个空格调整外观*/
else
printf(“”);
}
printf(“\n”);
}
}
intmain(){
intr;
/*输入圆的半径*/
printf(“输入圆半径\nr=”);
scanf(“%d”,&r);
printCircle(r);
return0;
}
最后的结果是下面这样的。