实验任务6
课程名称:程序设计基础VB
实验名称——实验六程序设计基础
一、实验目的:
1.掌握常用的接收和输出数据的方法
2.进一步掌握常量、变量、运算符、表达式和常用函数的使用
二、实验内容(包括实验要求(题目)、实验步骤、程序清单、运行情况):
实验1请先手工写出以下表达式的值和类型,然后上机验证不同数据类型之间的运算,并判断结果的数据类型。
要求:请分别在窗体的单击事件过程中,按如下形式判断表达式的结果类型,比较不同类型常数运算的结果类型;观察算术运算符的不同,对结果有什么影响;记录验证结果,找出出错原因;
分析:在实际编程中我们应尽量避免不同类型的变量之间的运算和相互赋值,应为可能会引起“类型不匹配”的错误。但是我们应该清楚哪些情况是允许的,哪些情况会出错
注意:类型符省略为:%——Integer,&——Long,!——Single,#——Double,@——Currency,
结果转换方向:整型→长整型→单精度型→双精度型→货币型
Private Sub Form_Click()
Print TypeName(1& + 1!) 'TypeName()函数可以求出数据的类型名称
End Sub
第(1)组(求下面15个表达式的值和类型,若将运算符加号改为减号、乘号和除号又会有什么不同)
1% + 1% 1& + 1% 1! + 1% 1# + 1% 1@ + 1%
1& + 1& 1! + 1& 1#+ 1& 1@+ 1&
1! + 1! 1#+ 1! 1@+ 1!
1#+ 1# 1@+ 1#
1@+ 1@
第(2)组(求下面10个表达式的值和类型)
Dim a As Integer, b As Single, c As Single
a < 2 = 3 b^2 - 4*a*c > 0 "ABC">"ACB" "ABC" = "abc" 200 + True
#1/1/2007# - #1/1/2000# "30" + 140 "123" & 456 "123" + 456 "123ab" & 246
实验2请先手工写出以下程序段的运行结果,然后使用在窗体的Click事件过程中分别添加如下的程序段,运行验证,进一步理解和掌握运算符和表达式的应用。
(3
)
Print CInt(3.56),Int(3.56),Fix(3.56)
Print Round(3.56),format(3.56,”0”)
Print CInt(-3.56),Int(-3.56),Fix(-3.56)
Print Round(-3.56),format(-3.56,”0”)
Print CInt(3.5),Int(3.5),Fix(3.5)
Print Round(3.5),format(3.5,”0”)
Print CInt(2.5),Int(2.5),Fix(2.5)
Print Round(2.5),format(2.5,”0”)
Print Round(2.445,2),format(2.445,”0.00”) (4) 假定当前日期为2009-3-27 Print Day(Now) Print Month(Now) Print Year(Now) Print DateDiff(“d ”, Now, #2009/05/01#) Print Weekday(Now) Print Weekday(Now, vbMonday)
实验3 实验书62页 实验4-3
制作一个查看某年的元旦是星期几的万年历。要求在图4-4所示界面上输入年份,单击“查看”按钮,查看某年的元旦是星期几。
图4-4 实验4-3的运行界面
分析:确定某年的元旦是星期几的公式如下:
111Int((1)(1)1)4100400
Int(/7)*7X Y W X X =-+
-++=- 其中,Y 为公元年号,W 为计算出的结果星期几(0表示星期日,1表示星期一,依次类推)。请根据上述分析和参考界面自行编写代码。
实验4实验书63页实验4-4 利用文本框1和文本框2输入直角三角形的两条直角边长,计算直角三角形的周长和面积。
提示:
① 该题先设两条直角边为x ,y ,根据勾股定理可以计算出直角三角形的斜边,直角三角形面积S =(x *y )/2。可以利用文本框接收数据和输出结果,注意由于文本框的Text 属性为字符型,在计算时应使用Val 函数进行转换,数值型的结果输出时应使用Str 或Cstr 函数进行转换。
② 在窗体上放置4个标签控件、4个文本框和3个命令按钮,如图4-5所示。
实验5 实验书63页 实验4-5
加密整数。加密过程:对于一个4位正整数,将每一位上的数字加7,然后对10取余替代原来的数字,再将该4位整数进行左右两边数字互换,第1位与第4位互换,第2位与第3位互换。
提示:4位整数可用随机函数Rnd 和取整函数Int 生成,最后加密结果可以直接显示在窗体上(见图4-5),或采用文本框、标签显示。
图4-5 实验4-5的运行界面
提示:模仿参考例题的二种方案独立完成程序编写
[参考例题] 如图实现逆序输出用户输入的三位整数。例如:用户输入361,应逆序输出163。
分析:逆序输出整数,其实就是将原整数X 的每一位上的数字,重新改变所在位置后输出。关键:如何取得整数X 每一位上的数字?
运行界面
方案一:通过算术运算实现:
个位数字= X Mod 10 十位数字= X \ 10 Mod 10 百位数字= X \100
此时逆序后的数据= 个位数字* 100 + 十位数字* 10+ 百位数字
Option Explicit
Private Sub Form_Load()
TxtNum.MaxLength = 3 '设置文本框的MaxLength属性,限制用户输入>3位的整数End Sub
Private Sub CmdReverse_Click()
Dim X As Integer, indiv As Integer, ten As Integer, hundred As Integer X = Val(TxtNum.Text) '从文本框中取得待逆序的数据
indiv = X Mod 10 '通过取余方法获取个位上的数字
ten = X \ 10 Mod 10 '通过整除和取余方法获取十位上的数字
hundred = X \ 100 '通过整除方法获取百位上的数字
X = indiv * 100 + ten * 10 + hundred
'对每位上的数字重新赋予权值、累加构造逆序数
TxtRNum.Text = CStr(X) '输出逆序结果
End Sub
方案二:先将X转换成字符串形式,通过取子串Mid函数等实现:
个位数字字符= Mid(X, 3, 1) 十位数字字符= Mid(X, 2, 1) 百位数字字符= Mid(X, 1, 1)
最后逆序后的数据即为每一位上的数字字符用字符串连接符&的逆序连接。
Private Sub CmdReverse_Click()
Dim X As String * 3 ' 此处数据X主要参与的是字符串运算,因此定义其为字符串型 Dim indiv As String * 1, ten As String * 1, hundred As String * 1 X = TxtNum.Text ' 从文本框中取得待逆序的数据
indiv = Mid(X, 3, 1) '通过取子串Mid函数取得个位上的数字字符
ten = Mid(X, 2, 1) '通过取子串Mid函数取得十位上的数字字符
hundred = Mid(X, 1, 1) '通过取子串Mid函数取得百位上的数字字符
X = indiv & ten & hundred '将每一位上的数字字符用字符串连接符&的逆序连接 TxtRNum = X ' 逆序输出密文结果
End Sub
补充实验:
实验6 课本91页例题4-10
运行界面加密方法
分析:类似于钟表盘的循环问题,常常借助Mod运算符来解决,形式如下:
密文数字m =(明文数字n + 循环偏移量Δd + 10)Mod 10
根据题目要求,此处循环偏移量Δd = -2,所以该题的密文数字m =(明文数字n -2 + 10)Mod 10
Option Explicit
Private Sub CmdEncrypt_Click() '“加密”命令按钮的单击事件 Dim n As Integer, m As Integer
n = Val(TxtNum) '从文本框中获取用户输入的数字
m = _________ '加密
TxtCryptograph = CStr(m) '通过文本框显示加密结果
End Sub
思考:若要实现字母的循环移动加密,该如何改写上述代码呢?
实验7
三、实验体会(包括对于本次实验的小结,实验过程中碰到的问题等)