內(nèi)容提要
案例比較簡單,已經(jīng)有人給出了解決方法。我本來不打算弄它的,但仔細(xì)研究了一下別人的代碼,我忽然有了不同的思路。我們一起來看一下: 數(shù)據(jù)表格: Function getScore( _ totalScore As Integer, _ rightAnswer As String, _ studentAnswer As String) '//totalScore:單題總分 '//rightAnswer:正確答案 '//studentAnswer:學(xué)生答案 Dim unitScore As Double Dim currScore As Double Dim i As Integer unitScore = Round(totalScore / Len(rightAnswer), 2) For i = 1 To Len(studentAnswer) If InStr(rightAnswer, Mid(studentAnswer, i, 1)) > 0 Then currScore = currScore + unitScore Else getScore = 0 Exit Function End If Next getScore = currScoreEnd Function 完整示例代碼詳見當(dāng)天另一條推文。 后記 1、這個(gè)案例雖然簡單,但是解決思路還是蠻有意思的。我看有人是這么做的,循環(huán)標(biāo)準(zhǔn)答案中的每個(gè)字符,如果包含于學(xué)生答案中,則得一次分,然后把學(xué)生答案中已經(jīng)得分的選項(xiàng)去掉(用Replace函數(shù)),最后,再判斷一下學(xué)生答案的長度是否大于0,如果大于0,則表明有錯(cuò)誤選項(xiàng),得0分。 2、不管用什么方法,只要能達(dá)到目的都可以。只是在數(shù)據(jù)量特別大的情況下,我們要考慮一下程序運(yùn)行效率的問題。當(dāng)然,我們總是考慮效率問題,也不是什么壞事。 好,今天就到這里,我們下期再會(huì)! |
|