#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#define N 20
#define Max 20
#define Min 1
#define swap(x,y) x^=y;y^=x;x^=y
#define random(x,y) rand()%(x-y)+y
#define Sq(x) ((x)*(x))
#define L(x,y) sqrt(Sq(x)+Sq(y))
//#define PRINT
typedef struct P{
int x,y;
}Point,*pPoint;
void main(){
srand((unsigned int)time(NULL));
Point a[N];
//生成N个坐标
int i,j;
for(i=0;i<N;i++){
a[i].x = random(Max,Min);
a[i].y = random(Max,Min);
printf("x=%d,y=%d\n",a[i].x,a[i].y);
}
//坐标排序
for(i=0;i<N;i++){
for(j=i+1;j<N;j++)
if(a[i].y>a[j].y){
swap(a[i].y,a[j].y);
swap(a[i].x,a[j].x);
}
}
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if((a[i].y==a[j].y)&&(a[i].x>a[j].x)){
swap(a[i].x,a[j].x);
}
//计算中心,以及半径
float avex,avey,aver;
avex=avey=0;
for(i=0;i<N;i++){
avex+=a[i].x;
avey+=a[i].y;
}
avex = avex/N;
avey = avey/N;
for(i=0;i<N;i++)
aver += L(a[i].x-avex,a[i].y-avey);
aver/=N;
printf("\n");
printf("%f,%f,%f\n",avex,avey,aver);
int t,tt;
t = tt = 0;
for(i=0;i<N;i++)
{
if(t!=a[i].y){
for(j=1;j<a[i].y-t;j++)
j+t<10?printf("\n0%d",j+t):printf("\n%d",j+t);
t = a[i].y;
t<10?printf("\n0%d ",t):printf("\n%d ",t);
for(j=1;j<a[i].x;j++)
printf(" ");
if(L(a[i].x-avex,a[i].y-avey)>aver)
printf("#");
else
printf("*");
}else{
for(j=1;j<a[i].x-tt;j++)
printf(" ");
if(tt!=a[i].x)
if(L(a[i].x-avex,a[i].y-avey)>aver)
printf("#");
else
printf("*");
}
tt = a[i].x;
t = a[i].y;
}
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考