永发信息网

会C语言的大哥哥大姐姐们帮我解决下,十万火急!

答案:1  悬赏:20  手机版
解决时间 2021-05-03 12:52

#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

void mysector(int x,int y,int startangle,int endangle,int rx,int ry);

main()
{
int graphdriver=VGA,graphmode=VGAHI;
int x0=320,y0=240;
int degree=0;
int size=0;
void *buffer=NULL;
int xt=0,yt=0;
struct palettetype palette;
initgraph(&graphdriver,&graphmode,"C:\bc");
cleardevice();
size=imagesize(160,80,320,320);
buffer=malloc(size);
getimage(160,80,320,320,buffer);
getpalette(&palette);

while(!kbhit())
{
putimage(160,80,buffer,COPY_PUT);
setcolor(15);
circle(x0,y0,160);
degree=(degree+10)%360;
xt=(int)80* sin( (degree+90)*(2*M_PI)/360 ) ;
yt=(int)80* cos( (degree+90)*(2*M_PI)/360 ) ;
setfillstyle(1,15);
mysector(x0,y0, 0+degree,180+degree,160,160);
setfillstyle(1,0);
mysector(x0,y0,180+degree,360+degree,160,160);
setcolor(0);
setfillstyle(1,0);
mysector(x0+xt,y0+yt, 0+degree,180+degree,80,80);
setfillstyle(1,15);
mysector(x0-xt,y0-yt,180+degree,360+degree,80,80);
setcolor(15);
setfillstyle(1,15);
mysector(x0+xt,y0+yt,0,360,30,30);
setcolor(0);
setfillstyle(1,0);
mysector(x0-xt,y0-yt,0,360,30,30);
getimage(160,80,320,320,buffer);
}
getch();
closegraph();
}

void mysector(int x,int y,int startangle,int endangle,int rx,int ry)
{
if(startangle<360 && endangle>360)
{
sector(x, y,startangle, 360,rx,ry);
sector(x, y, 0, endangle-360,rx,ry);
}
else if(startangle==360)
sector(x, y,0,endangle-360,rx,ry);
else if(startangle>360 && endangle>360)
sector(x,y,startangle-360,endangle-360,rx,ry);
else sector(x,y,startangle,endangle,rx,ry);
}

帮我把这个图形的半径放小,最好是圆心为(233,240)半径为100的太极图,要会转的

最佳答案
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

void mysector(int x,int y,int startangle,int endangle,int rx,int ry);

main()
{
int graphdriver=VGA,graphmode=VGAHI;
int x0=233,y0=240;
int degree=0;
int size=0;
void *buffer=NULL;
int xt=0,yt=0;
struct palettetype palette;
initgraph(&graphdriver,&graphmode,"C:\bc");
cleardevice();
size=imagesize(100,50,320,320);
buffer=malloc(size);
getimage(100,50,320,320,buffer);
getpalette(&palette);

while(!kbhit())
{
putimage(100,50,buffer,COPY_PUT);
setcolor(15);
circle(x0,y0,100);
degree=(degree+10)%360;
xt=(int)50* sin( (degree+90)*(2*M_PI)/360 ) ;
yt=(int)50* cos( (degree+90)*(2*M_PI)/360 ) ;
setfillstyle(1,15);
mysector(x0,y0, 0+degree,180+degree,100,100);
setfillstyle(1,0);
mysector(x0,y0,180+degree,360+degree,100,100);
setcolor(0);
setfillstyle(1,0);
mysector(x0+xt,y0+yt, 0+degree,180+degree,50,50);
setfillstyle(1,15);
mysector(x0-xt,y0-yt,180+degree,360+degree,50,50);
setcolor(15);
setfillstyle(1,15);
mysector(x0+xt,y0+yt,0,360,15,15);
setcolor(0);
setfillstyle(1,0);
mysector(x0-xt,y0-yt,0,360,15,15);
getimage(100,50,320,320,buffer);
}
getch();
closegraph();
}

void mysector(int x,int y,int startangle,int endangle,int rx,int ry)
{
if(startangle<360 && endangle>360)
{
sector(x, y,startangle, 360,rx,ry);
sector(x, y, 0, endangle-360,rx,ry);
}
else if(startangle==360)
sector(x, y,0,endangle-360,rx,ry);
else if(startangle>360 && endangle>360)
sector(x,y,startangle-360,endangle-360,rx,ry);
else sector(x,y,startangle,endangle,rx,ry);

}

按你的要求改好了。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在爱情和亲情里该如何选择呢?
问问妇产科审核不公,该删掉的不删,不该删的
怎样-用PC蓝牙浏览手机文件
什么是手机令牌,有什么用
家庭书法名言名句大全,关于书法的诗词
上了一年高中没上完,不练了。第二年能不能到
有一个聊天软件,里面都是常州人,每次进入那
跃兴汽车快修美容服务中心骆驼店在哪里啊,我
我没有老婆怎么办?
好听的忧伤的安静的歌曲,要偏一点的,不有明
QQ校友谁能给我个注册码?
周迅清唱版的《外面》哪里可以下载?
地下城气功师四十五级打四十二级的怪,怎么还
求!夜色无边的《逃脱》
空间怎么弄不了
推荐资讯
QQ三国要抢号吗?
QQ申诉时,最常见的问题是什么啊?????
七夕了,要不要跟他说我喜欢你呢?
Mr·马美发工作室我想知道这个在什么地方
到底怎樣做老公才不會亂花錢
关于 internet explorer
长时间对着电脑会有什么不好的反应吗
婴儿洗衣皂哪个牌子好,婴幼儿洗衣皂哪个牌子
有谁知道左旋肉减的减肥效果如何呢?
跪求白手连招
快乐在哪里
5230诺基亚手机 用手机QQ1.0的怎么进去就会自
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?