您还没有绑定微信,更多功能请点击绑定

解决“排名次”问题

喻远霖 2001年 30期??近来,我在学生考试完毕排定学习成绩的时候大伤了一番脑筋。后来,我试着用VB编写了一个“排名次”的程序:将已经统计好总分的一张成绩汇总表,按总分排出每个学生的名次。下面我就给大家简单介绍一下,希望能够对大家有所帮助。  ??首先,定义两个数组。一个数组CJ(N),用于存储每个学生的总分成绩(N为学生数),一个数组MC(N),用于存储相应的每个学生的名次。MC数组初始化为:  ??MC(1)=1,MC(2)=2,……,MC(N)=N  ??然后按照各人的总分,重新确定MC(N)的值:从第一个学生开始,将总分依次与其后的学生总分比较,根据比较的结果改变名次的值,方法如下:  ??先比较CJ(I)和CJ(J):  ??若CJ(I)<CJ(J),则MC(I)=MC(I)+1,MC(J)=MC(J)-1;  ??若CJ(I)=CJ(J),则MC(I)=MC(I)+1;  ??若CJ(I)>CJ(J),则MC(I)、MC(J)的值都不改变。  ??按此算法,可得到各人的名次(分数相等,名次相同)。可将此算法编写为一个过程,代码如下:  ??Sub pmc()??  ??For I=1 to n  ??Mc(i)=I  ??Next I  ??For I=1 to n-1  ??For j=I+1 to n  ??If cj(i)<cj(j)then  ??Mc(i)=mc(i)+1  ??Mc(j)=mc(j)-1  ??Else if cj(i)=cj(j) then  ??Mc(i)=mc(i)+1  ??End if  ??End if  ??Next j  ??Next I  ??End sub  ??具体的程序这里就不赘述了。若你有更好的算法,敬请奉献给大家共享。

0 个评论

游客无法查看评论和回复, 请先登录注册

推荐文章

文章状态

  • 发布时间: 2009-02-25 13:09
  • 浏览: 821
  • 评论: 0
  • 赞: 0