《VisualBasic程序设计》第二次作业讲评.docx
- 文档编号:25636845
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:14
- 大小:118.52KB
《VisualBasic程序设计》第二次作业讲评.docx
《《VisualBasic程序设计》第二次作业讲评.docx》由会员分享,可在线阅读,更多相关《《VisualBasic程序设计》第二次作业讲评.docx(14页珍藏版)》请在冰豆网上搜索。
《VisualBasic程序设计》第二次作业讲评
《VisualBasic程序设计》第二次作业讲评
同学们好:
第二次作业主要覆盖教材第3-4章的内容,要求在第七周以前完成。
第一部分:
选择题
选择题主要考核概念,对于能够在书中找到答案的题目不再赘述,此处只讲几个编程题以及答题技巧。
第2题,可获得ASCII码的函数是Asc,答题时注意答题技巧,Asc这个函数其实很好记,就是取的ASCII的前三个字母。
第3题,不同的循环有不同的退出语句,记住exit是退出的意思,ExitFor就是退出For循环,ExitDo就是退出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数组名(1To上界)
第8题,注意Sub过程不会返回一个值,而Function过程可以有返回值。
第15题,因为%表示整型变量,则变量a被声明为整型变量,即使将a赋值为一个小数3.14159,a的值也只是取小数的整数部分3,所以答案为3。
第三部分:
写出程序的运行结果
1.PrivateSubForm_Click()
StaticSumAsInteger
ForI=1To100
Sum=Sum+I
NextI
PrintSum
EndSub
答案:
5050
【讲评】这个程序的核心部分是for循环,该循环的功能是求1、2、3、……、100的累加,变量Sum为累加器,这里没有给出初始值,因为用Static声明了,所以默认值为0,“初值为0”是累加器必须具备的条件;变量I负责记住100以内的自然数,初值为1,每次将I的值累加到Sum后,就通过“NextI”使得I的值增1,实现I=I+1的操作。
最后打印出Sum的值,就是1+2+3+…+100的值
2.PrivateSubForm_Click()
A=10:
b=15:
c=20:
d=25
PrintA;Spc(5);b;Spc(7);c
PrintA;Spc(8);b;Space$(5);c
Printc;Spc(3);"+";Spc(3);d;
PrintSpc(3);"=";Spc(3);c+d
EndSub
答案:
【讲评】这个程序中一行有多个语句,那么各语句之间需要插入冒号“:
”;
Spc(n)用来在输出中插入空白字符,n为空白字符数;
逗号“,”分界符分隔要显示的多个项目,每个项目之间距离一个制表符(TAB);
分号“;”表示所有的项目并列显示(尽管下一个Print语句已经换行),中间没有空格
3.PrivateSubForm_Click()
Fori%=1To3
Forj%=1Toi
PrintLTrim(Str(i%))+"*"+LTrim(Str(j%))+"=";i%*j%;
Nextj%
Nexti%
EndSub
答案:
【讲评】%表示整型变量,Ltrim是去掉字符串左面的空格
这个题目中的循环是双重循环,注意内部循环的终值是随着i的值定的,以下来演示循环的执行过程,这里我们把外面的循环称为i循环,里面的循环称为j循环:
当i=1时,第一次进入i循环,j=1,此时j循环的终值为i的值1,因为j=1没有超过终值,所以第一次进入j循环打印当前i*j的值,为1*1=1,j循环体结束,执行Nextj,则j=2,此时已经超过j循环的终值1,所以结束j循环,执行后面的print,打印空语句,即换行;执行Nexti,则i=2,回到i循环的开头,因为i的终值为3,所以没有超过终值,继续循环
当i=2时,第二次进入i循环,j=1,此时j循环的终值为i的值2,因为j=1没有超过终值,所以第一次进入j循环打印当前i*j的值,为2*1=2,j循环体结束,执行Nextj,则j=2,此时没有超过j循环的终值2,第二次进入j循环打印当前i*j的值,为2*2=4,j循环体结束,执行Nextj,则j=3,此时已经超过j循环的终值2,所以结束j循环,执行后面的print,打印空语句,即换行;执行Nexti,则i=3,回到i循环的开头,因为i的终值为3,所以没有超过终值,继续循环
当i=3时,第三次进入i循环,j=1,此时j循环的终值为i的值3,因为j=1没有超过终值,所以第一次进入j循环打印当前i*j的值,为3*1=3,j循环体结束,执行Nextj,则j=2,此时没有超过j循环的终值3,第二次进入j循环打印当前i*j的值,为3*2=6,j循环体结束,执行Nextj,则j=3,此时没有超过j循环的终值3,第三次进入j循环打印当前i*j的值,为3*3=9,j循环体结束,执行Nextj,则j=4,此时已经超过j循环的终值3,所以结束j循环,执行后面的print,打印空语句,即换行;执行Nexti,则i=4,回到i循环的开头,因为i的终值为3,所以结束i循环
4.PrivateSubCommand1_Click()
Dima,bAsInteger
a=3.4
b=3.4
Text1.Text=a
Text2.Text=b
EndSub
答案:
Text1显示3.4,Text2显示3。
如下图所示。
【讲评】注意定义语句Dima,bAsInteger中a和b的区别,这里只是规定了b的类型为Interger,而不包括a的数据类型,所以a就默认为变体类型,执行a=3.14,则a就是小数类型,而执行b=3.14,则只取整数部分
5.PrivateSubForm_Click()
Fori=1To5
PrintTab(11-i);
ForJ=1Toi*2-1
Print"*";
Next
Nexti
EndSub
答案:
【讲评】这是一个典型的打印正三角形的例题,能够打印出这样的图形,是通过控制每行的空格数和“*”的数目来确定的。
第四部分:
程序设计题
1.购物优惠程序。
某商场为了加速促成商品流通,采用购物打折的优惠办法,每位顾客一次购物
(1)在100元以上者,按九五折优惠;
(2)在200元以上者,按九折优惠;(3)300元以上者,按八折优惠;(4)500元以上者,按七折优惠。
在窗体上添加两个文本框和一个命令按钮,要求在Text1中输入购物商品的总金额,单击命令按钮,在Text2输出优惠后的价格。
程序运行结果如图4所示。
图4
答案:
PrivateSubCommand1_Click()
x=Val(Text1.Text)
SelectCasex
CaseIs>=500
Text2.Text=x*0.7
CaseIs>=300
Text2.Text=x*0.8
CaseIs>=200
Text2.Text=x*0.9
CaseIs>=100
Text2.Text=x*0.95
EndSelect
EndSub
2.输出100~200之间不能被3整除的数,要求用Do语句的一种形式实现,程序运行结果如图5所示。
图5
答案:
程序代码:
PrivateSubForm_Load()
x=101
Text1.Text="100"
DoWhilex<=200
IfxMod3<>0Then
Text1.Text=Text1.Text+Chr(13)+Chr(10)+Trim(Str(x))
EndIf
x=x+1
Loop
EndSub
3.编写程序,打印如下的乘积表:
图6
答案:
程序代码:
PrivateSubForm_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"
EndSub
4.设计一个计算程序。
该程序用户界面如图7所示。
要求程序运行后,用户选中单选按钮,则程序作10和2的相应计算,并把计算结果在文本框中显示出来。
如用户选中加法单选按钮,则程序作10和2的相加,计算结果12在文本框中显示出来。
按结束,则退出。
图7
答案:
程序代码:
PrivateSubForm_Load()
Option1(0).Value=False
Option1
(1).Value=False
Option1
(2).Value=False
Option1(3).Value=False
EndSub
PrivateSubOption1_Click(IndexAsInteger)
SelectCaseIndex
Case0
Text1.Text=10*2
Case1
Text1.Text=10/2
Case2
Text1.Text=10+2
Case3
Text1.Text=10-2
EndSelect
EndSub
PrivateSubCommand1_Click()
End
EndSub
6.编写输入一个0~6数字,显示汉字对照输出星期的Function过程。
程序运行结果如图8所示。
图8
DimxAsInteger
PrivateFunctionMystring(xAsInteger)AsString
SelectCasex
Case1
Mystring="星期一"+Chr(13)+"Monday"
Case2
Mystring="星期二"+Chr(13)+"Tuesday"
Case3
Mystring="星期三"+Chr(13)+"Wednesday"
Case4
Mystring="星期四"+Chr(13)+"Thursday"
Case5
Mystring="星期五"+Chr(13)+"Friday"
Case6
Mystring="星期六"+Chr(13)+"Saturday"
Case7
Mystring="星期日"+Chr(13)+"Sunday"
EndSelect
Label1.Caption=Mystring
EndFunction
PrivateSubText1_Change()
x=Val(Text1.Text)
Mystring(x)
EndSub
6.编写一个程序,当鼠标移到Picture1控件上时,鼠标指针改变形状;当在Picture1控件上单击鼠标右键时,通过消息框显示“YouPressedbutton”,并再次改变鼠标指针形状。
答案:
程序代码:
PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then
MsgBox"YouPressedrightbutton",0,"提示"
EndIf
EndSub
PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Picture1.MousePointer=5
EndSub
7.列表框应用程序。
要求从文本框再输入姓名,然后“按”添加“按钮,把姓名添加到列表框中;当选择列表框中某一项时,按“删除”按钮,从列表框中删除;当选择列表框中某一项时,按“修改“按钮,把列表框中选择的项送到文本框且“修改“按钮变为“修改确认”。
在文本框的内容修改好后,按“修改确认”按钮,再把文本框中修改后的信息送到列表框且“修改确认”按钮变为“修改”。
程序运行结果如图9所示。
图9
答案:
程序代码:
PrivateSubForm_Load()
flag=False
EndSub
PrivateSubCommand1_Click()
List1.AddItemText1.Text
Text1.Text=""
EndSub
PrivateSubCommand2_Click()
List1.RemoveItemList1.ListIndex
EndSub
PrivateSubCommand3_Click()
flag=Notflag
Ifflag=TrueThen
Text1.Text=List1.Text
List1.RemoveItemList1.ListIndex
Command3.Caption="修改确认"
Else
List1.AddItemText1.Text
Command3.Caption="修改"
Text1.Text=""
EndIf
EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualBasic程序设计 VisualBasic 程序设计 第二次 作业 讲评