《VisualBasic程序设计》第二次作业讲评

  • 格式:doc
  • 大小:137.00 KB
  • 文档页数:10

《Visual Basic程序设计》第二次作业讲评同学们好:第二次作业主要覆盖教材第3-4章的内容,要求在第七周以前完成。

第一部分:选择题选择题主要考核概念,对于能够在书中找到答案的题目不再赘述,此处只讲几个编程题以及答题技巧。

第2题,可获得ASCII码的函数是Asc,答题时注意答题技巧,Asc这个函数其实很好记,就是取的ASCII的前三个字母。

第3题,不同的循环有不同的退出语句,记住exit是退出的意思,Exit For就是退出For循环,Exit Do就是退出Do…Loop循环,选项C是一个干扰选项。

第4题,答题技巧和第2题一样,把数值转换为字符串需要使用的函数是Str,这个函数就是取的字符串String的前三个字母,选项A正好相反,Val是把字符串转换为数值的函数,取的是值Value 的前三个字母。

第6题,这个题目考的是操作符的优先级,参看82页“3.4.7运算符和表达式”中的算术运算符,6+10Mod4*2+1,这个表达式中共涉及三种运算,+、mod、*,三者的优先级别从高到低依次是*、mod、+,注意这里mod是取余数的运算,运算步骤如下:6+10Mod4*2+1=6+10Mod8+1=6+2+1=9第7题,变量名的命名规则参看教材91页的命名规则。

第8题,表达式中的两个函数Abs和Len分别是求绝对值和求字符串的长度,所以运算结果为:Abs(-5)+Len(“ABCDE”)=5+5=10第9题,参看教材92页的编程风格中的“长语句分行”。

第11题,注意用VB表达式表示“x是小于80的非负数”和数学表达式不一样,选项A是数学表达方式。

第19题,计算数组的元素个数,方法是用“上界值-下界值+1”,所以本题5-(-3)+1=9。

第二部分:填空题填空题考核概念较多,多数答案可从书中找到。

第4题,定义数组时,如果按照Dim 数组名(上界)的定义方法,则数组的下界从0开始,题目要求要使数组的默认下标从“1“开始,则需要设置下界为1:Dim 数组名(1 To 上界)第8题,注意Sub过程不会返回一个值,而Function过程可以有返回值。

第15题,因为%表示整型变量,则变量a被声明为整型变量,即使将a赋值为一个小数3.14159,a的值也只是取小数的整数部分3,所以答案为3。

第三部分:写出程序的运行结果1.Private Sub Form_Click()Static Sum As IntegerFor I = 1 To 100Sum = Sum + INext IPrint SumEnd Sub答案:5050【讲评】这个程序的核心部分是for循环,该循环的功能是求1、2、3、……、100的累加,变量Sum为累加器,这里没有给出初始值,因为用Static声明了,所以默认值为0,“初值为0”是累加器必须具备的条件;变量I负责记住100以内的自然数,初值为1,每次将I的值累加到Sum后,就通过“Next I”使得I的值增1,实现I=I+1的操作。

最后打印出Sum的值,就是1+2+3+…+100的值2.Private Sub Form_Click()A = 10: b = 15: c = 20: d = 25Print A; Spc(5); b; Spc(7); cPrint A; Spc(8); b; Space$(5); cPrint c; Spc(3); "+"; Spc(3); d;Print Spc(3); "="; Spc(3); c + dEnd Sub答案:【讲评】这个程序中一行有多个语句,那么各语句之间需要插入冒号“:”;Spc(n) 用来在输出中插入空白字符,n为空白字符数;逗号“,”分界符分隔要显示的多个项目,每个项目之间距离一个制表符(TAB);分号“;”表示所有的项目并列显示(尽管下一个Print语句已经换行),中间没有空格3.Private Sub Form_Click()For i% = 1 To 3For j% = 1 To iPrint LTrim(Str(i%)) + "*" + LTrim(Str(j%)) + "="; i% * j%;Next j%PrintNext i%End Sub答案:【讲评】%表示整型变量,Ltrim是去掉字符串左面的空格这个题目中的循环是双重循环,注意内部循环的终值是随着i的值定的,以下来演示循环的执行过程,这里我们把外面的循环称为i循环,里面的循环称为j循环:当i=1时,第一次进入i循环,j=1,此时j循环的终值为i的值1,因为j=1没有超过终值,所以第一次进入j循环打印当前i*j的值,为1*1=1,j循环体结束,执行Next j,则j=2,此时已经超过j循环的终值1,所以结束j循环,执行后面的print,打印空语句,即换行;执行Next i,则i=2,回到i循环的开头,因为i的终值为3,所以没有超过终值,继续循环当i=2时,第二次进入i循环,j=1,此时j循环的终值为i的值2,因为j=1没有超过终值,所以第一次进入j循环打印当前i*j的值,为2*1=2,j循环体结束,执行Next j,则j=2,此时没有超过j循环的终值2,第二次进入j循环打印当前i*j的值,为2*2=4,j循环体结束,执行Next j,则j=3,此时已经超过j循环的终值2,所以结束j循环,执行后面的print,打印空语句,即换行;执行Next i,则i=3,回到i循环的开头,因为i的终值为3,所以没有超过终值,继续循环当i=3时,第三次进入i循环,j=1,此时j循环的终值为i的值3,因为j=1没有超过终值,所以第一次进入j循环打印当前i*j的值,为3*1=3,j循环体结束,执行Next j,则j=2,此时没有超过j循环的终值3,第二次进入j循环打印当前i*j的值,为3*2=6,j循环体结束,执行Next j,则j=3,此时没有超过j循环的终值3,第三次进入j循环打印当前i*j的值,为3*3=9,j循环体结束,执行Next j,则j=4,此时已经超过j循环的终值3,所以结束j循环,执行后面的print,打印空语句,即换行;执行Next i,则i=4,回到i循环的开头,因为i的终值为3,所以结束i循环4.Private Sub Command1_Click()Dim a, b As Integera = 3.4b = 3.4Text1.Text = aText2.Text = bEnd Sub答案:Text1显示3.4,Text2显示3。

如下图所示。

【讲评】注意定义语句Dim a, b As Integer中a和b的区别,这里只是规定了b的类型为Interger,而不包括a的数据类型,所以a就默认为变体类型,执行a=3.14,则a就是小数类型,而执行b=3.14,则只取整数部分5.Private Sub Form_Click()For i = 1 To 5Print Tab(11 - i);For J = 1 To i * 2 - 1Print "*";NextNext iEnd Sub答案:【讲评】这是一个典型的打印正三角形的例题,能够打印出这样的图形,是通过控制每行的空格数和“*”的数目来确定的。

第四部分:程序设计题1.购物优惠程序。

某商场为了加速促成商品流通,采用购物打折的优惠办法,每位顾客一次购物(1)在100元以上者,按九五折优惠;(2)在200元以上者,按九折优惠;(3)300元以上者,按八折优惠;(4)500元以上者,按七折优惠。

在窗体上添加两个文本框和一个命令按钮,要求在Text1中输入购物商品的总金额,单击命令按钮,在Text2输出优惠后的价格。

程序运行结果如图4所示。

图4答案:Private Sub Command1_Click()x = Val(Text1.Text)Select Case xCase Is >= 500Text2.Text = x * 0.7Case Is >= 300Text2.Text = x * 0.8Case Is >= 200Text2.Text = x * 0.9Case Is >= 100Text2.Text = x * 0.95End SelectEnd Sub2.输出100~200之间不能被3整除的数,要求用Do语句的一种形式实现,程序运行结果如图5所示。

图5答案:程序代码:Private Sub Form_Load()x = 101Text1.Text = "100"Do While x <= 200If x Mod 3 <> 0 ThenText1.Text = Text1.Text + Chr(13) + Chr(10) + Trim(Str(x))End Ifx = x + 1LoopEnd Sub3.编写程序,打印如下的乘积表:图6答案:程序代码:Private Sub Form_Click()Print "*", "3", "6", "9", "12"Print "15", "45", "90", "125", "180"Print "16", "48", "96", "144", "192"Print "17", "51", "102", "153", "204"Print "18", "54", "108", "152", "216"End Sub4.设计一个计算程序。

该程序用户界面如图7所示。

要求程序运行后,用户选中单选按钮,则程序作10和2的相应计算,并把计算结果在文本框中显示出来。

如用户选中加法单选按钮,则程序作10和2的相加,计算结果12在文本框中显示出来。

按结束,则退出。

图7答案:程序代码:Private Sub Form_Load()Option1(0).Value = FalseOption1(1).Value = FalseOption1(2).Value = FalseOption1(3).Value = FalseEnd SubPrivate Sub Option1_Click(Index As Integer)Select Case IndexCase 0Text1.Text = 10 * 2Case 1Text1.Text = 10 / 2Case 2Text1.Text = 10 + 2Case 3Text1.Text = 10 - 2End SelectEnd SubPrivate Sub Command1_Click()EndEnd Sub6.编写输入一个0~6数字,显示汉字对照输出星期的Function过程。