VB 任意输入一个1到100以内的整数,并求出它的阶乘

Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim s As Integer
s = 1
i = Val(InputBox("请您输入一个1到100以内的整数"))
For j = 1 To i
s = s * j
Next j
Print i & "的阶乘等于" & s
End Sub
为什么输入9之后会有溢出问题?怎么改

Integer 变量存储为 16位(2 个字节)的数值形式,其范围为
-32,768 到 32,767 之间,8的阶乘为40320,所以不到9就已经溢出了,

Long(长整型)变量存储为 32 位(4 个字节)有符号的数值形式,其范围从
-2,147,483,648 到 2,147,483,647,也不适合,所以s可以设为变体类型

Private Sub Command1_Click()
    Dim i As Integer
    Dim j As Integer
    Dim s‘ As Integer
    s = 1
    i = Val(InputBox("请您输入一个1到100以内的整数"))
    For j = 1 To i
        s = s * j
    Next j
    Print i & "的阶乘等于" & s
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-24

用自定义吧:

LONG也要出错!下面这个可以

Private Sub Command1_Click()
    Dim i
    Dim j
    Dim s
    s = 1
    i = Val(InputBox("请您输入一个1到100以内的整数"))
    For j = 1 To i
        s = s * j
    Next j
    Print i & "的阶乘等于" & s
End Sub

本回答被提问者采纳
第2个回答  推荐于2018-04-12
貌似把s定义成double类型就行了,自定义的格式不是个好习惯本回答被网友采纳
相似回答