填空题
	阅读以下说明和C代码,将应填入 (n) 处的字句写在对应栏内。
	[说明]
	在一个简化的绘图程序中,支持的图形种类有点(point)和圆(ckcle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape_t、point_t和circle_t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。
	[C代码]
	typedef enumpoint,circle)shape_type; /*程序中的两种图形:点和圆*/
	typedef struct /*基本的图形类型*/
	shape_type type; /*图形种类标识:点或者圆*/
	void(*destroy)(); /*销毁图形操作的函数指针*/
	void(*draw)(); /*绘制图形操作的函数指针*/
	shape_t;
	typedef struct(shape_t common;int x;int y;)point_t;
	/*定义点类型,x、y为点坐标*/
	void destroyPoint(point_t* this) free(this);printf("Point destoryed!\n");
	/*销毁点对象*/
	void drawPoint(point_t* this) printf("P(%d,%d)",this->x,this->y);
	/*绘制点对象*/
	shape_t* createPoint(va_list* ap)/*创建点对象,并设置其属性*/
	point_t* p_point;
	if((p_point=(point_t*)malloc(sizeof(point_t)))==NULL)return NULL;
	p_point->common.type=point;p_point->common.destroy=destroyPoint;
	p_point->common.draw=drawPoint;
	p_point->x=va_arg(*ap,int); /*设置点的横坐标*/
	p_point->y=va_arg(*ap,int); /*设置点的纵坐标*/
	return(shape_t*)p_point; /*返回点对象指针*/
	
	typedef struct/*定义圆类型*/
	shape_t common;
	point_t*center; /*圆心点*/
	int radius; /*圆半径*/
	circle_t;
	void destroyCircle(Circle_t* this)
	free( (1) );free(this);printf("Circle destoryed!\n");
	
	void drawCircle(Circle_t* this)
	printf<"C<">;
	(2) .draw(this->center); /*绘制圆心*/
	printf(".%d)",this->radius);
	
	shape_t* createCircle(va_list* ap) /*创建一个圆,并设置其属性*/
	Circle_t* p_circle;
	if((p_circle=(circle_t*)malloc(Sizeof(circle_t)))==NULL)return NULL;
	p_circle->common.type=circle;p_circle->common.destroy=destroyCircle;
	p_circle->common.draw=drawCircle;
	(3) =createPoint(ap); /*设置圆心*/
	p_circle->radius=va_arg(*ap,int); /*设置圆半径*/
	return p_circle;
	
	shape_t* createShape(shape_type st,…)/*创建某一种具体的图形*/
	va_list ap; /*可变参数列表*/
	shape_t* p_shape=NULL;
	(4) (ap,st);
	if(st==point)p_shape=createPoint(&ap); /*创建点对象*/
	if(st==circle) p_shape=createCircle(&ap); /*创建圆对象*/
	va_end(ap);
	return p_shape;
	
	int main()
	int i; /*循环控制变量,用于循环计数*/
	shape_t* shapes[2]; /*图形指针数组,存储图形的地址*/
	shapes[0]=createShape(point,2,3);/*横坐标为2,纵坐标为3*/
	shapes[1]=createShape(Circle,20,40,10);
	/*圆心坐标为(20,40),半径为10*/
	for(i=0;i<2;i++)(shapes[i]->draw(shapes[i]);printf("\n");
	/*绘制数组中图形*/
	for(i=1;i>=0;i--) shapes[i]->destroy(shapes[i]);
	/*销毁数组中图形*/
	return 0;
	
	[运行结果]
	P(2,3)
	(5) 
	Circle destoryed!
	Point destoryed!