#include int 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 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;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(); } 因篇幅问题不能全部显示,请点此查看更多更全内容