应用题 1. 在考生文件夹下有一个工程文件sjt5.vbp。程序运行时,单击“装入数据”按钮,则从考生文件夹下的in5.txt文件中读入所有城市名称和距离,城市名称按顺序添加到列表框List1中,距离放到数组a中;当选中列表框中的一个城市时,它的距离就在Text1中显示,如图所示;此时,单击“计算运费”按钮,则计算到该城市的每吨运费(结果取整,不四舍五入),并在Text2中显示。
    每吨运费的计算方法是:距离×折扣×单价。
    其中,单价为0.3。
    折扣为  距离<500     折扣为1
500≤距离<1000    折扣为0.98
1000≤距离<1500  折扣为0.95
1500≤距离<2000  折扣为0.92
2000≤距离   折扣为0.9
    单击“保存”按钮,则把距离和每吨运费存到文件out5.txt中。
    已经给出了所有控件和部分程序,要求:
    ①去掉程序中的注释符,把程序中的?改为正确的内容。
    ②编写“计算运费”按钮的Click事件过程。
    ③编写列表框的Click事件过程。
    注意:不得修改已经存在的程序;在退出程序之前,必须至少计算一次运费,且必须使用“保存”按钮存储计算结果,否则无成绩。最后,程序按原文件名存盘。
   
【正确答案】【操作步骤】
   步骤1:打开本题工程文件。
   步骤2:打开代码编辑窗口,去掉程序中的注释符“'”,将问号改为正确的内容,并编写相应的代码。
   参考答案(字体加粗部分是需考生填入的内容)
   Dim a(10)As Integer,n As Integer
   Private Sub Command1_Click()
   Open App.Path&"\in5.txt" For Input As #1
   While Not EOF(1)
   n=n+1 '下标循环加1
   Input #1,ch $,a(n) '将文件依次读入ch,a(n)中
   List1.AddItem ch将城市名添加到LiSt1中
   Wend
   Close #1
   End Sub
   Private Sub Command2_Click()
   '需要考生编写的内容
   b=Val(Text1)
   If b>=0 And b<500 Then '判断b的范围
   m=0.3*b
   ElseIf b>=500 And b<1000 Then
   m=0.3*b*0.98
   ElseIf b  >=  1000 And b  <1500 Then
   m=0.3*b*0.95
   ElseIf b  >=  1500 And b  <2000 Then
   m=0.3*b*0.92
   ElseIf b>=2000 Then
   m=0.3*b*0.9
   End If
   Text2=int(m)
   End Sub
   Private Sub List1_Click()
   '需要考生编写的内容
   Text1=a(List1.ListIndex+1)
   '通过List1.ListIndex+1来确定所选城市对应的距离
   End Sub
   步骤3:调试并运行程序,关闭程序后按题目要求存盘。
   【易错提示】对于数组a的数组下标以及ListIndex属性是从0开始的理解是本题解题的关键。
   
【答案解析】[考点] 本题考点有:Val()函数、int()函数、列表框的ListIndex属性、列表框的AddItem方法、While语句、If选择判断语句以及文件操作。
单击“装入数据”按钮,从考生文件夹下的in5.txt文件中读入所有城市名称和距离,通过List1的AddItem方法把城市名称ch按顺序添加到列表框List1中,将距离放到数组a中,在读入数据时,同时注意While语句,其中数组下标n的下限为1,即数组中第1个元素为a(1);Command2_Click事件过程实现单选列表框中的一个城市时,使它的距离显示在Text1中,a(List1.ListIndex+1)表示的是所选城市对应的距离,通过List1的ListIndex属性确定数组的下标,但是ListIndex属性是从0开始的,因此要加1才能与之对应。通过Val()函数使Text1中的字符转化为数值型,运用表达式,计算结果。因为题目要求“结果取整,不四舍五入”,所以是截尾取整,可以用int()函数实现。