📄 al13_4.c
字号:
/*案例代码文件名:AL13_4.C*/
/*功能:班级考试等级分布饼状图*/
#include "math.h"
#include "graphics.h"
#define PI 3.141593
#define M 10 /*全班总人数*/
main()
{char s[10]; /*临时字符串*/
int score[M]={98,72,82,84,75,78,88,65,14,71}; /*全班成绩*/
int grade[5]={0,0,0,0,0}; /*成绩等级清零*/
char *class[5]={"100-90","90-80","80-70","70-60","<60"};
double x,y,bega,enda,midangle;
int radius,begangle,endangle;
int i,gdriver=VGA,gmode=VGAHI;
for(i=0;i<M;i++)
grade[score[i]<60?4:(100-score[i])/10]++; /*计算各等级人数*/
initgraph(&gdriver,&gmode,"");
cleardevice();
setviewport(10,10,639,479,1); /*设置一个视窗*/
setcolor(3);
rectangle(20,20,600,460); /*画一个矩形框*/
begangle=0; /*扇形起始角*/
radius=140; /*饼图圆半径*/
for(i=0;i<5;i++)
{endangle=360*grade[i]/M+begangle; /*扇形终止角*/
bega=begangle*PI/180;
enda=endangle*PI/180;
midangle=(bega+enda)/2; /*扇形中间角*/
x=300+cos(midangle)*radius*1.2-22; /*标注X点坐标*/
y=240-sin(midangle)*radius*1.2; /*标注Y点坐标*/
sprintf(s,"%.2f%",100.0*grade[i]/M); /*将标注内容存入S数组*/
setcolor(WHITE);
outtextxy(x,y,s); /*在标注点标注*/
setfillstyle(1,i+4); /*设置充填格式*/
pieslice(300,240,begangle,endangle,radius); /*画扇形*/
rectangle(500,75+30*i,530,95+30*i); /*画图例框*/
floodfill(520,85+30*i,WHITE); /*充填图例框*/
outtextxy(535,80+30*i,class[i]); /*标注图例*/
begangle=endangle;
}
getch();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -