/*在屏幕上用“*”画一个空心的圆。
问题分析与算法设计:
打印圆可以利用圆图形的对称性,根据圆方程x*x+y*y=r*r ((x-r)*(x-r)+y*y=r*r 圆的平移),
可以求出圆上每一点行和列的对应关系。
我打印的是单位圆(x-1)*(x-1)+y*y=1
列坐标扩大25倍(由于控制台窗口行间隔比列间隔大,故列间隔要扩大,扩大倍数由自己掌握)
且利用对称性。
*/
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int x,ix;
double y;
for(y=1;y>=-1;y-=0.1)
{
x=(sqrt(1-pow(y,2))+1)*25; //x对应的坐标,扩大25倍
for(ix=0;ix<=50;ix++) //坐标扩大25倍,x轴扩大为0~50
if(ix==x||ix==50-x)
cout<<"*"; //图形处打印'*'
else
cout<<" ";
cout<<endl;
}
return 0;
}