首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一非常奇怪的函数调用有关问题

2012-03-14 
一非常奇怪的函数调用问题用中点画圆法画圆,下面的程序中有两个模块,如果用第二个模块的话,能画出一个完整

一非常奇怪的函数调用问题
用中点画圆法画圆,下面的程序中有两个模块,如果用第二个模块的话,能画出一个完整的圆,但是如果用第一个模块的话,只能画出第四象限的部分,这两个模块的功能应该都一样的啊,真不知道怎么回事.
#include   <graphics.h>

/*第一个模块的开始
void   CirclePoints(int   x,int   y,int   color)
{
putpixel(x+200,y+200,color);
putpixel(y+200,x+200,color);

putpixel(-x+200,y+200,color);
putpixel(-y+200,x+200,color);

putpixel(-x+200,-y+200,color);
putpixel(-y+200,-x+200,color);

putpixel(y+200,-x+200,color);
putpixel(x+200,-y+200,color);
}
第一模块的结尾*/

/*第二个模块的开始*/
void   CirclePoints(int   x,int   y,int   color)
{
putpixel(x,y,color);
putpixel(y,x,color);

putpixel(-x,y,color);
putpixel(-y,x,color);

putpixel(-x,-y,color);
putpixel(-y,-x,color);

putpixel(y,-x,color);
putpixel(x,-y,color);
}
/*第二个模块的结尾*/

void   IntMidPointCircle(int   r,int   color)
{
int   x,y,d,i;
x=0;
y=r;
d=1-r;
CirclePoints(x+200,y+200,color);/*用第一个模块时改为CirclePoints(x,y,color);*/
while(x <y)
  {
  if(d <0)
    d+=2*x+3;
      else
        {
        d+=2*(x-y)+5;
        y--;
        }
    x++;
  CirclePoints(x+200,y+200,color);)/*用第一个模块时改为CirclePoints(x,y,color);*/

  }
}

main()
{
int   gdriver,gmode;
gdriver=DETECT;
initgraph(&gdriver,&gmode, " ");
IntMidPointCircle(30,6);
getch();
closegraph();
}

[解决办法]
putpixel(x+200,y+200,color);
putpixel((y+200),(x+200),color);

putpixel(-(x+200),(y+200),color);
putpixel(-(y+200),(x+200),color);

putpixel(-(x+200),-(y+200),color);
putpixel(-(y+200),-(x+200),color);

putpixel((y+200),-(x+200),color);
putpixel((x+200),(-y+200),color);

热点排行