📄 例4-22.c
字号:
/* Note:Your choice is C IDE */
#include <stdio.h>
#include <math.h>
#include <graphics.h>
#define PI 3.1416
main()
{
char s[30];
float values[10]={12.0,16.0,22.0,8.0,10.0,13.0,20.0,14.0,9.0,19.0};
char *categories[10]={"1","2","3","4","5","6","7","8","9","10"};
double x,y,bega,enda,midangle;
float total;
int radius,begangle,endangle;
int i,graphdriver,graphmode;
graphdriver=VGA;
graphmode=VGAHI;
initgraph(&graphdriver,&graphmode,"");
cleardevice();
setviewport(10,10,639,479,1); /* 开一个视图窗口 */
setcolor(3);
rectangle(20,20,600,460); /* 画一矩形框 */
total=0;
for(i=0;i<=9;i++)
total=total+values[i]; /* 得到总量 */
begangle=0; /* 开始角为0 */
radius=140; /* 半径 */
rectangle(530,40,590,180);
for(i=0;i<=9;i++)
{
endangle=360*values[i]/total+begangle; /* 画扇形的结束角 */
bega=begangle*PI/180; /* 换成弧度 */
enda=begangle*PI/180; /* 得出扇形的中间角 */
midangle=(bega+enda)/2;
x=300+cos(midangle)*radius*1.5;
y=240-sin(midangle)*radius*1.2;
sprintf(s,"%3.2f%",values[i]/total*100);
setcolor(WHITE);
outtextxy(x,y,s);
setfillstyle(1,i+2);
pieslice(300,240,begangle,endangle+4,radius);
rectangle(540,55+12*i,560,60+12*i); /* 画代表各扇形的颜色条 */
floodfill(550,57+12*i,WHITE);
outtextxy(565,57+12*i,categories[i]); /* 标上号 */
begangle=endangle; /* 上一个扇形的结束角,就是下一个扇形的开始角 */
}
getch();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -