#define MAX 1000int m, i, j; int types;
struct str//定义结构体 {
float x;    float y;     float distance;   int type; };
str data[MAX];//输入的已知类别的数据
str point;//需要根据kNN判断类别的未知数据 str temp;
void input_data() {
printf(\"请输入已知点的个数:\"); scanf(\"%d\
for ( i = 1; i <= m; i++) {  printf(\"请输入点\");  scanf(\"%d\ printf(\"坐标x , y 和所属类别:\");  scanf(\"%f %f %d\   } }
void Distance()//计算未知类别点与所有已知类别点的距离 {for ( i = 1; i <= m; i++ )
data[i].distance = sqrt  (  (data[i].x - point.x) * (data[i].x - point.x) + (data[i].y - point.y) * (data[i].y - point.y) );  /*for(i=1;i<=m;i++)  {   printf(\"  %f  \ }*/ }
void sort()//对距离进行从小到大排序 {
for( i = 1; i for(j = i+1; j < m+1; j++)   {if(data[i].distance>data[i+1].distance)    {
temp=data[i];     data[i]=data[i+1];     data[i+1]=temp;    }   }
/*for(i=1;i<=m;i++)  {   printf(\"  %f  \ }*/   }
void kNN( )//KNN算法  {
int the_type= 0,
int num,k,a[4],MAX1; num=k;
printf(\"请输入kNN的k值:\"); scanf(\"%d\
for(i=1;iMAX1=a[0]; for(i=0;i<3;i++) {  if(a[i]>=MAX1)  {   MAX1=a[i];   the_type=i;  }   }printf(\"属于  %d  类\
}
void main()
{   int m, i, j,the_type;     struct str;   input_data();
printf(\"请输入未知类别点的坐标x,y(输入0 0退出):\");    scanf(\"%f  %f\
Distance();   sort();   kNN(); }