数字总和程序,得到错误的答案

时间:2018-04-21 18:25:43

标签: vbscript asp-classic

我使用查询字符串接受我的经典asp代码中的数字,然后程序将输出数字的数字之和。

<%
dim n,d,sum
sum = 0
d = 0
n = request.querystring("n")  //Taking value from querystring
while n<>0
d = n mod 10
response.write("<br>"&d)
sum = sum + d``
n = Cint(n/10)
wend
response.write("<br>Sum of digits of "&request.querystring("n")&" is : 
"&sum)
%>

但问题是它没有显示几个值的正确答案 例如。 n = 91 ....然后输出将是11 但是对于n = 123 ......输出将是6。 请帮助。

2 个答案:

答案 0 :(得分:1)

将n视为字符串可能更容易,它实际上是一个字符数组。因为字符串是一个字符数组,所以我们可以遍历数组并对每个值求和。

Dim n, d, sum
sum = 0
d = 0
n = Request.QueryString("n")
If IsNumeric(n) Then
    For i = 1 To Len(n)
        d = CInt(Mid(n,i,1))
        Response.Write("<br />" & d)
        sum = sum + d
    Next
    Response.Write("<br />Sum of digits of " & n & " is : " & sum)
End If

答案 1 :(得分:0)

只需在代码中进行一次更改,即使用运算符 \ 而不是 / 当你减少你的号码....

即。代替 n = CInt(n / 10)使用 n = n \ 10

因此代码可以正常工作:

<%
dim n,sum,d
sum = 0
n = request.querystring("n")    'taking value from querystring

while n <> 0
d = n mod 10
sum = sum +d
n = n\10                       'using \ for integer division
wend
response.write("Sum of digits of : "&request.querystring("n")&" is = "&sum)
%>

对于那些不明白刚刚发生了什么的人,请参阅下文:

  1. 运营商 / :执行浮动部门。
  2. 运算符 \ :执行整数除法。
  3. 这就是为什么我没有得到正确的结果。 希望这有帮助!