1.问题描述
在屏幕上用“*”画一个空心的圆。
2.问题分析
该问题可以利用圆的左右对称性来解决。圆的方程为:X2(平方)+Y2(平方)=R2(平方)其中R为圆的半径。根据圆的方程可以计算出圆上每一点所在行和所在列的对应关系。
3.完整程序
#include <stdio.h>
#include <math.h>
int main(void)
{
double x,y,i;
for(y=1;y>=-1;y=y-0.1)
{
x=sqrt(1-y*y);
for(i=-1;i<-x;i=i+0.1)
{
printf(" ");
}
printf("*");
for(i=-x+0.1;i<x;i=i+0.1)
{
printf(" ");
}
printf("*\n");
}
return 0;
}
4.运行结果
注意:可对横坐标乘系数来改变图形的横纵比,否则屏幕将显示椭圆形(如图所示)。