C语言课程设计
一、基本要求题目
1、有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。
直到最后只剩下一个人为止。
问此人原来的位置是多少号。
二、程序改错题
程序1:
main()
{
int x=1; y;
y=x++;
printf("y=%d ",y);
int z;
z=++x;
print("z=%d\n",z);
三、综合题目
设计课题:设计实现K均值聚类算法
一、问题描述:
K均值(K-means)聚类算法是无监督聚类(聚类(clustering)是将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇(cluster)”)算法中的一种,也是最常用的聚类算法。
K表示类别数,Means表示均值。
K-means 主要思想是在给定K值和若干样本(点)的情况下,把每个样本(点)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。
二、功能要求:
a.将数据集的数据,分别聚成2,3,4类,观察分析实验结果。
b.数据集如下所示。
-25 22.2 35.34
31.2 -14.4 23
32.02 -23 24.44
-25.35 36.3 -33.34
-20.2 27.333 -28.22
-15.66 17.33 -23.33
26.3 -31.34 16.3
-22.544 16.2 -32.22
12.2 -15.22 22.11
-41.241 25.232 -35.338
-22.22 45.22 23.55
-34.22 50.14 30.98
15.23 -30.11 20.987
-32.5 15.3 -25.22
-38.97 20.11 33.22
三、算法提示:
(1)随机选取K个初始cluster center
(2)分别计算所有样本到这K个cluster center的距离(欧氏距离)
(3)如果样本离cluster center Ci最近,那么这个样本属于Ci点簇;如果到多个cluster center的距离相等,则可划分到任意簇中
(4)按距离对所有样本分完簇之后,计算每个簇的均值(最简单的方法就是求样本每个维度的平均值),作为新的cluster center
(5)重复(b)(c)(d)直到新的cluster center和上轮cluster center变化很小或者达到指定的迭代次数,算法结束
四、其它:
对该算法有兴趣的同学可以在实现上述基本功能后,进行算法的改进优化,使其分类性能提高。