题目

【排名次问题】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。 分数 100 99 98 97 96 95 94 … 0 个数 (A数组) 2 0 0 0 1 0 3 … 0 名次 (B数组) 1 3 4 … 程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题: (1) 如表所示,若分数93的个数为2,则该分数对应的名次为。 (2) 请在划线处填入合适的代码 Dim sName (1To50) As string    ‘ 存放学生姓名 Dim sScore (1To50) As Integer    ‘ 存放学生分数 Dim recCount As Integer    ‘ 存放学生人数 Private Sub Form_Load ( ) ‘ 本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示 ‘ 代码略 End sub ‘ 整数转换成长度固定的字符串 Function ads (x As Integer, n As Integer) As string Dim sx As String, nx As Integer, i As Integer sx = Str (x):nx = Len (sx) For i =1 To n-nx   sx = “”+ sx Next i       ①      End Function Private Sub Command1_Click ( ) Dim A (0 To 100) As Integer    ‘存放每个分数的个数 Dim B (0 To 100) As Integer    ‘存放每个分数的名次 Dim mc As Integer, score As Integer, i As Integer For i = 0 To 100   A(i) = 0 Next i For i = 1 To recount ‘ 计算每个分数的个数        ②       Next i mc = 1 For i = 100 To 0 step -1    ‘ 计算每个分数的名次   If A(i) <> 0 Then     B(i) = mc          ③         End If Next i List2. clear List2. AddItem “姓名  分数  名次  ” List2. Additem “------------------------------” For i = 1 To recCount   score = sScore(i)   mc = B (sScore(i))   List2. AddItem sName(i) + ads ( score,5) + "第" + ads(mc,3) + "名” Next i End sub ① ② ③  答案: 【1】7 【1】ads=sx【2】A(sScore(i)) = A(sScore (i)+1)【3】mc=mc+a(i)
信息技术 试题推荐
最近更新