/*在屏幕上用“*”画一个空心的圆。
问题分析与算法设计:
打印圆可以利用圆图形的对称性,根据圆方程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;
}
本文介绍了一种使用C++编程语言和基本的数学原理来在控制台上绘制空心圆形的方法。通过圆的方程计算并利用对称性,文章提供了一个具体的实现示例。
532

被折叠的 条评论
为什么被折叠?



