我正在编写一个qb64 / QBasic软件程序,将数字等级0-100转换为字母等级(a,b,c,d,f)。我已经设置了它,以便使用字符串/数组来允许输入无限等级。然而,当我试图计算字母等级,并将它用calcGrade!(MyList(Index%))调用回打印时,我会收到错误的“函数所需的数字”,有人能帮我吗?
ReDim MyList(0) As String
Dim Grade
Dim Index%
_Title "Letter Grade Calculator"
Print "Enter your numerical grades. To finish enter (exit)"
Do While Grade$ <> "exit"
Input "Enter Grade"; Grade$
If Grade$ <> "exit" Then
Index% = Index% + 1
ReDim _Preserve MyList(Index%)
MyList(Index%) = Grade$
End If
Loop
Cls
For Index% = 1 To UBound(MyList)
Print MyList(Index%);
Print "Letter Grade:"; calcGrade!(MyList(Index%))
Next Index%
Function calcGrade! (numGrade)
Select Case val(numGrade)
Case is > 100
calcGrade! = "A+"
Case Is > 90
calcGrade! = "A"
Case Is > 80
calcGrade! = "B"
Case Is > 70
calcGrade! = "C"
Case Is > 60
calcGrade! = "D"
Case Is > 50
calcGrade! = "F"
Case Else
calcGrade! = "ERROR: Invalid character"
End Select
End Function发布于 2022-09-19 16:50:19
然而,当我试图计算字母等级并将其拨回用
打印时,我会收到“函数所需的号码”。
您为calcGrade!(MyList(Index%))接收的错误“函数所需的数字”意味着calcGrade函数期望从您那里收到一个数值参数,该参数将分配给它的numGrade参数。
Function calcGrade! (numGrade)
没有任何显式声明,numGrade参数默认为单一数值格式。但是,您正在通过提供一个MyList字符串参数。
另一个错误是函数名称上的感叹号声明函数以返回单个值。因此,您不能将"A+“、"A”、"B“、"C”、"D“、"F”和“错误:无效字符”字符串值分配给它。
解决方案是将$字符串后缀用于Calculate$和numGrade$。
...
Cls
For Index% = 1 To UBound(MyList)
Print MyList(Index%); " -> ";
Print "Letter Grade:"; calcGrade$(MyList(Index%))
Next Index%
Function calcGrade$ (numGrade$)
Select Case val(numGrade$)
Case Is > 100
calcGrade$ = "A+"
Case Is > 90
calcGrade$ = "A"
Case Is > 80
calcGrade$ = "B"
Case Is > 70
calcGrade$ = "C"
Case Is > 60
calcGrade$ = "D"
Case Is > 50
calcGrade$ = "F"
Case Else
calcGrade$ = "ERROR: Invalid character"
End Selecthttps://stackoverflow.com/questions/73711222
复制相似问题