⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 例4-22.c

📁 王为青 刘变红 编著《C语言高级编程及实例剖析》源代码
💻 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 + -