在考生文件夹下有一个工程文件sjt5.vbp。程序运行时,单击“装入数据”按钮,则从考生文件夹下的in5.txt文件中读入所有城市名称和距离,城市名称按顺序添加到列表框Listl中,距离放到数组a中;当选中列表框中的一个城市时,它的距离就在Textl中显示

admin2020-04-08  34

问题 在考生文件夹下有一个工程文件sjt5.vbp。程序运行时,单击“装入数据”按钮,则从考生文件夹下的in5.txt文件中读入所有城市名称和距离,城市名称按顺序添加到列表框Listl中,距离放到数组a中;当选中列表框中的一个城市时,它的距离就在Textl中显示,如图所示;此时,单击“计算运费”按钮,则计算到该城市的每吨运费(结果取整,不四舍五入),并在Text2中显示。
    每吨运费的计算方法是:距离×折扣×单价。
    其中,单价为0.3。
折扣为距离<500    折扣为l
    500≤距离<1000    折扣为0.98
    1000≤距离<1500  折扣为0.95
    1500≤距离<2000  折扣为0.92
    2000≤距离    折扣为0.9
    单击“保存”按钮,则把距离和每吨运费存到文件out5.txt中。
    已经给出了所有控件和部分程序,要求:
①去掉程序中的注释符,把程序中的?改为正确的内容。
    ②编写“计算运费”按钮的Click事件过程。
    ③编写列表框的Click事件过程。
    注意:不得修改已经存在的程序;在退出程序之前,必须至少计算一次运费,且必须使用“保存”按钮存储计算结果,否则无成绩。最后,程序按原文件名存盘。

选项

答案 【操作步骤】 步骤l:打开本题工程文件。 步骤2:打开代码编辑窗口,去掉程序中的注释符“′”,将问号改为正确的内容,并编写相应的代码。 参考答案 Dim a(10)As Integer,n As Integer Private Sub Commandl_C1ick() 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)中 Listl.AddItemch将城市名添加到Listl中 Wend Close#1 End Sub Private Sub Command2 Cl ick() ′需要考生编写的内容 b=Val(Textl) 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 Listl C1ick() ′需要考生蝙写的内容 Textl=a(Listl.ListIndex+1) ′通过Listl.ListIndex+1来确定所选城市时应的距离 End SUb 步骤3:调试并运行程序。关闭程序后按题目要求存盘。 【易错提示】对于数组a的数组下标以及ListIn-dex属性是从0开始的理解是本题解题的关键。

解析 单击“装入数据”按钮,从考生文件夹下的in5.txt文件中读入所有城市名称和距离,通过List1的Addltem方法把城市名称ch按顺序添加到列表框List!中,将距离放到数组a中,在读入数据时,同时注意While语句,其中数组下标n的下限为1,即数组中第1个元素为a(1);Command2_Cliek事件过程实现单选列表框中的一个城市时,使它的距离显示在Textl中,a(Listl.Listlndex+1)表示的是所选城市对应的距离,通过List]的Listlndex属性确定数组的下标,但是Listlndex属性是从0开始的,因此要加1才能与之对应。通过Val()函数使Textl中的字符转化为数值型,运用表达式,计算结果。因为题目要求“结果取整,不四舍五入”,所以是截尾取整,可以用int()函数实现。
转载请注明原文地址:https://kaotiyun.com/show/2ATp777K
0

最新回复(0)