记录打印椭圆的有趣过程

[来源] 达内    [编辑] 达内   [时间]2013-03-11

椭圆不是单调函数应该怎么快速打印呢首先因为圆是特殊的椭圆,所以我们先想想如何打印圆形,我们可以先想把圆分成1/4,一个1/4圆当然是单调的嘛,利用x*x + y*y = r*r这个圆的标准方程打印输出

  记得大一刚学C语言的时候,书后有道打印三角形的题,记得当时做了一个多小时才做出来,相信大家初学编程也做过类似的问题,今天突发奇想想打印个特殊曲线,于是把目标锁定为打印一个椭圆,大家都知 编程语言打印输出一个图形,如果它是单调递增或者单调递减是非常容易的,如果非单调的函数就得费一些周折。椭圆不是单调函数应该怎么快速打印呢首先因为圆是特殊的椭圆,所以我们先想想如何打印圆形,我们可以先想把圆分成1/4,一个1/4圆当然是单调的嘛,利用x*x + y*y = r*r这个圆的标准方程打印输出,代码如下:

  [cpp] view plaincopyprint?

  #include

  int main()

  {

  int R = 10;

  int x,y;

  for(y = 0; y <= R; y++)

  {

  for(x = 0; x <= R; x++)

  {

  if(x*x + y*y < R*R)

  printf("*");

  else

  printf(" ");

  }

  printf("\n");

  }

  }

  #include

  int main()

  {

  int R = 10;

  int x,y;

  for(y = 0; y <= R; y++)

  {

  for(x = 0; x <= R; x++)

  {

  if(x*x + y*y < R*R)

  printf("*");

  else

  printf(" ");

  }

  printf("\n");

  }

  }

  打印结果:

  

 

  诶妈呀,咋出个这个畸形?我们仔细看会发现,原因是圆的行间距和列间距不同造成的,解决方法是把打印一个星'*',改成打印两个星'**'就成了,代码如下:

  [cpp] view plaincopyprint?

  #include

  int main()

  {

  int R = 15;

  double x,y;

  for(y = 0; y <= R; y++)

  {

  for(x = 0; x <= R; x++)

  {

  if(x*x + y*y < R*R)

  printf("**");

  else

  printf(" ");

  }

  printf("\n");

  }

  return 0;

  }

  #include

  int main()

  {

资源下载