有如下Visual FoxPro程序: ACCEPT \请输入准考证号:\OPEN DATABASE ZKSCORE ALTER TABLE CJB ADD X2 N(2,0)
SELECT 准考证号,姓名,学校名称,班级名称,总分,X2 FROM CJB ORDER BY; 学校名称,班级名称,总分 DESC INTO TABLE CJTMP GO TOP X=1 Y=X
NX1=CJTMP.总分 BJ=CJTMP.班级名称 XX=学校名称 DO WHILE NOT EOF()
IF BJ=CJTMP.班级名称 AND XX=CJTMP.学校名称 REPLACE X2 WITH IIF(NX1=CJTMP.总分,Y,X) Y=CJTMP.X2 X=X+1
BJ=CJTMP.班级名称 XX=学校名称 NX1=CJTMP.总分 ELSE X=1 Y=X
NX1=CJTMP.总分 REPLACE X2 WITH X X=X+1
BJ=CJTMP.班级名称 XX=CJTMP.学校名称 ENDIF SKIP ENDDO
SELECT 准考证号,姓名,X2 WHERE 准考证号=ZKZ FROM CJTMP INTO TABLE TMPJG ?准考证号,姓名,X2
运行上面的程序,输入“801510114”,显示的结果是: 。
17
七、Visual Basic程序改错(本大题共2小题,每题5分,共10分,每个小题的程序有两个错误行,请在
答题纸上写出错误行代码和对应的改正后代码,错误行代码和改正后代码完全正确方可得分) 1.下面的程序是利用InputBox函数依次输入两个长度小于20的、均由数字字符组成的字符串,依次存
入到两个字符串变量中,然后从两个字符串的起始位置开始依次取出一个字符进行操作,操作的规则是:
(1)把取出的字符转换成数字分别存入到数组a和数组b中,将两个数组中下标相同的元素值相加,如
果它们的和大于9,则存入数组c中,否则不存入。然后再分别取下一个字符,进行同样的操作。 (2)如果某个字符串中的字符已经取完,则把另一个未取完的字符串中的字符单个取出,转换成数字后
加上10直接存入到数组c中。
例如输入的字符串是:“123456789”和“96666666666”,则最后数组c中存入的应该是:10,10,11,12,13,14,15,16,16。
Option Base 1
Private Sub Command1_Click() Dim a(20) As Integer Dim b(20) As Integer Dim c(20) As Integer Dim i As Integer Dim j As Integer Dim len1 As Integer Dim len2 As Integer Dim str1 As String Dim str2 As String
str1 = InputBox(\请输入第一个数字字符串:\str2 = InputBox(\请输入第二个数字字符串:\len1 = Len(str1) len2 = Len(str2) i = 1: j = 1
Do While i <= len1 And i <= len2 a(i) = Val(Mid(str1, i, 1)) b(i) = Val(Mid(str2, i, 1))
If a(i) + b(i) > 9 Then c(j) = a(i) + b(i): j = j + 1 i = i + 1 Loop
If len1 > len2 Then str1 = Mid(str1, i) Else
18
Str2 = Mid(str2, i) End If
len1 = Len(str1) i = 1
Do While i <= len1
c(j) = Val(Mid(str1, i, 1)) + 10 i = i + 1: j = j + 1 Loop
For i = 1 To j Print c(i); Next i
End Sub
2.下面程序的功能是:定义一个4行4列的数组并赋值, 要求第1行至第4行产生的数分别在10至19、20至29、30至39、40至49之间,再用Inputbox函数输入一个1到4之间的数字,然后求该数字所对应行与列元素的和。如产生的数组是: 10 17 18 19
21 24 25 23 35 32 30 38 41 44 47 42
若输入一个数字2,则求第2行与第2列元素的和,结果为210。
Option Base 1
Private Sub Command1_Click() Dim a(4, 4) As Integer Dim num As Integer Dim s As Integer
Dim i As Integer, j As Integer For i = 1 To 4 For j = 1 To 4
a(i, j) = 10 + Int(Rnd * 10) Print a(i, j); Next j Print Next i
num = InputBox(\请输入一个1至4的数字:\s = a(num, num) For i = 1 To 4 For j = 1 To 4
If i = num Or j = num Then
19
s = s + a(num, num)
End If
Next j Next i Print s End Sub
八、程序填空(本大题共7个空,每空5分,共35分,按程序要求在答题纸上填入相应的内容,使程序
完整正确)
1.(Visual Basic试题)下面程序的功能是输入一个大于等于10小于500的数字,然后把10到该数字之
间的所有素数找出并存入到数组a中,并输出此数组。请在划线位置填写正确的内容。
Option Base 1
Private Sub Command1_Click() Dim num As Integer Dim a(100) As Integer Dim n As Integer Dim k As Integer Dim i As Integer Dim j As Integer n = 1
num = InputBox(\请输入一个数字:\For i = 10 To num k = Sqr(i) For j = 2 To k
If i Mod j = 0 Then ______________ Next j If j > k Then
____________: n = n + 1 End If Next i If n = 1 Then
Print \一个也没有\Else
For i = 1 To n - 1 Print a(i); Next i
20