题库 高中信息

题干

趣味数学题:n的阶乘n!=1*2*3*4*5*…*n,当n≥5时,其结果末尾必然包含多个0,求n!(5≤n≤32 726)末尾包含0的个数。
算法思路:n较大时,n!的值将超出long类型范围,求出n!的结果再数0的个数不现实。那么末尾的0到底是从哪里来的?每一个因子5与任一偶数相乘就会产生一个0。所以末尾有多少0是由因子5的个数决定的,求出因子5的个数即是末尾0的个数。程序运行界面和代码如图所示。

(1)为使窗体加载时,窗体标题栏自动显示为“第14题程序”,则可以在___________过程(填写过程名)中添加代码:Form1. Caption="第14题程序"。
(2)实现上述算法的VB程序如下,请补充程序中画线处的代码。
Private Sub Command1_Click()
Dim n As Integer
n=Val(Textl. Text)
i=1
Do While___________
s=s+n\5^i
i=i+1
Loop
List1. AddItem Str(n)+"!末尾包含0的个数:"+_______
End sub
(3)根据上述算法,2018!末尾包含0的个数是个________个。
上一题 下一题 0.99难度 None 更新时间:2020-03-30 11:11:22

答案(点此获取答案解析)

同类题5

在一个文档中,每行包含一个字符串。现使用如下规则对其压缩:压缩时,对于每个字符串求其与前一字符串的公共前缀,然后使用公共前缀的长度和字符串的剩余部分(以空格隔开)表示该字符串,每个空格和字符都会占用一个字节空间。图a所示为该压缩规则示意图。小明为此编写了VB程序,功能如下:运行程序时,在列表框List1中显示原字符串内容,单击“压缩”按钮Command1,在列表框List2中显示压缩后字符串,并在标签Label2中显示压缩后容量。程序运行界面如图b所示。

实现上述功能的 VB 代码如下,但划线处代码有错,请改正。
Dim word(3000) As String, pre(3000) As String
Const n = 2000
Private Sub Form_Load()
'该过程的作用是从数据库读取 n 个单词,按字典顺序存储在数组 word 中,并在 Label1输出单词数量和容量
'代码略
End Sub
Private Sub Command1_Click()
Dim conp As Integer '存储压缩后的容量
Dim f As Boolean,m As Integer,k As Integer   'k 存储公共前缀的长度
conp=0
For i=1 To n
k=0
If i=1 Then f=False Else f=True
k=Len(word(i)) '(1)______________
Do While k<m And f=True
If Mid(word(i),1,k+1)=Mid(word(i-1),1,k+1) Then    
k=k-1 '(2)____________
Else
f=False
End If
Loop
pre(i)=CStr(k)+" "+Mid(word(i),k+1,Len(word(i)))
'Cstr()函数能够将数字类型的值转换为字符类型的值,并却掉前导空格。
List2.AddItem pre(i)
conp=conp+Len(word(i))   '(3)______________
Next i
Label2.Caption="压缩后容量为"+Str(conp)+"字节"
End Sub