VB程序设计:2011年计算机二级考试错题解析

需积分: 3 3 下载量 148 浏览量 更新于2024-07-31 2 收藏 900KB DOC 举报
"这是关于2011年计算机二级VB考试的练习题目,包含了程序改错和图形打印两个部分。" 在计算机二级VB考试中,考生需要掌握基础的Visual Basic编程知识,包括变量定义、循环结构、函数应用以及事件处理等。下面我们将详细解析给出的两道题目。 第一题是程序改错题,目的是计算C的公式,即阶乘的比值: ```vb Option Explicit Private Function fac(k As Integer) As Single Dim x As Single, j As Integer ' 错误1:x 应该初始化为1 x = 1 For j = 1 To k ' 错误2:应该是x *= j,即累乘 x = x * j Next j fac = x End Function Private Sub Form_Click() Dim C As Single Dim m As Integer, n As Integer m = Val(InputBox("请输入一个整数(m):")) n = Val(InputBox("请输入一个整数(n):")) ' 错误3:计算公式应避免除以0的情况,正确写法是使用括号或者除以单个阶乘 C = (fac(n) / fac(n - m)) * fac(m) Print "C="; C End Sub ``` 在上述代码中,我们修正了三个错误: 1. `fac`函数中的变量`x`应该初始化为1,因为阶乘是从1开始乘起的。 2. 循环体内,应使用`x = x * j`来累积乘积,而不是使用指数运算符`^`。 3. 在`Form_Click`事件中,计算`C`时,要确保不会出现除以0的情况,所以正确的公式应该是将阶乘结果直接相乘,或者分开除以单个阶乘。 第二题是图形打印题,目标是打印出星号(*)组成的金字塔: ```vb Option Explicit Private Sub Form_Click() Cls Dim i As Integer, j As Integer ' 错误1:金字塔层数应为5,而非7 For i = 1 To 5 ' 错误2:内层循环应根据外层循环递减,每次循环打印一个星号 For j = 1 To i Print "*"; Next j ' 错误3:每一层打印完后需换行 Print Next i End Sub ``` 在这段代码中,我们调整了三个错误: 1. 外层循环应当从1到5,因为我们要打印的是5层金字塔。 2. 内层循环应该从1到当前层的索引`i`,这样每层的星号数量会递增,形成金字塔形状。 3. 每打印完一层星号,需要使用`Print`语句换行,使得星号能按照金字塔的样式排列。 通过改正这些错误,程序就能正确地实现所要求的功能。对于计算机二级VB考试来说,理解并能正确应用这类基本编程概念是非常重要的。