四、编程及上机调试
1.新建一个工程,在窗体中放置一个Image (图像)控件,通过属性窗口设置Image 控件的如下属性:
Width (宽)
3000 Height (高) 2300
Stretch (调整图形大小) True
Left (左边位置) 800
Top (顶边位置) 300
Picture (加载图形) 图形由本地磁盘中搜索
启动运行程序,观察图形有什么变化。将图像控件的Stretch 属性值改为False 后运行程序,图形又有什么变化。
2.新建一个工程,在窗体上放置一个标签控件,当单击窗体时,在标签上显示“你单击了窗体”;当双击窗体时,在标签上显示“你双击了窗体”。
第2章
四、编程及上机调试
1.在窗体上放置三个命令按钮,如图2.20所示,单击按钮分别使窗体最大化、还原或最小化。(提示:使用窗体的WindowState 属性)。
2.设计一个程序,窗体上有“显示”和“退出”两个命令按钮,如图2.21所示。单击“显示”按钮时,窗体上显示一个图片,同时将两个命令按钮隐藏,如图2.22所示。单击图2.22的窗体时,恢复为图2.21。单击“退出”按钮,结束程序的运行。
图2.20 改变窗体的运行状态
图2.21 运行程序显示两个按钮 图2.22 单击“显示”按钮出现图片
三、编程及上机调试
1.按图3.15所示界面,编程实现其功能。
2.编写能对列表框中的项目进行添加、删除和统计的应用程序。要求:单击“添加”按钮,可将文本框中输入的内容添加到下面的列表框中;单击“删除”按钮,可删除列表框中选定的项目,如果没有选定要删除的项目,则“删除” 按钮不可用;单击“统计人数”按钮,可将列表框中的项目总数输出到右边的文本框(文本框不允许用户编辑)。初始运行时的窗体如图3.16所示,运行中的窗体如图3.17所示。
第4章
三、编程及上机调试
1.随机产生一个4位正整数,求出该数的倒序数,输出该数及倒序数。如产生的数为1234,则倒序数为4321。通过上机调试来完成下列程序代码。
Private Sub Form_Load()
Dim x As Integer, s As String, d As String
Randomize
x = Int(________)
s = ________(x)
d = Right(s, 1) +________
Show
图3.15 标准控件的应用
图3.16 初始运行界面 图3.17输入姓名后的界面
Print "产生的数:"; x, "倒序数:"; d
End Sub
2.设计程序,从键盘输入字符时,在窗体上立即显示所键入的字符和该字符的ASCII 码,如图4.12所示。双击窗体时,清除窗体上显示的内容。(提示:利用窗体的KeyPress 事件)
3.根据如图4.13所示的消息框,写出相应的实现语句。
第5章
二、编程及上机调试
1.利用If 语句、Select Case 语句两种方法计算分段函数:
???????<<+≤≤->++=100,12010,2320,232x x x
x x x x x y
2.在窗体上以每行两个数的格式输出所有的“水仙花数”。所谓“水仙花数”是指该数的各位上的数字的立方和恰好等于该数的一个三位数。(提示:首先分离出每位数字)
3.目前世界人口为60亿,如果以每年1.4%的速度增长,多少年后世界人口达到或超过70亿?(提示:使用公式p = p0 * (1 + r),p0为当前人口,r 为增长率)
4.计算表达式
,6543215432 +-+-+-=x
x x x x S x>1 要求计算精度为第n 项的绝对值小于10 – 5。
第6章
二、编程及上机调试
1.随机生成一个包含10个元素的一维数组,然后将其前5个元素与后5个元素对换,即,第1个元素与第10个元素对换,第2个元素与第9个元素对换,…,第5个元素与第6个元素对换。分别输出数组原来各元素的值和对换后各元素的值。
2.有一个3行4
列的数组,编写程序,找出其中最大的那个元素所在的行和列,并输出其图4.12 输出字符及其ASCII 码
图4.13 信息输出对话框
值及行号和列号。
3.参照图6.21所示界面,编写程序求每一行与每一列之和。
4.编写程序,实现矩阵转置。例如,如下矩阵A 转置后成为矩阵B 。
,623142??????=A ????
??????=623142B 5.编写程序,建立并输出一个10行10列的矩阵,该矩阵对角线元素为0,其余元素均为1。
6.编写程序,设有一包含10个元素的数组,从键盘上输入一个数,将该数从数组中删除。
7.某单位开运动会,共有10人参加男子100米短跑,运动员号码和成绩见下表,编写程序,按名次输出运动员的名次、号码和成绩。
第7章
四、编程及上机调试
1.编写过程,用下面的公式计算π的近似值:
1
21)1(715131141
--+-+-=-n n π 在事件过程中调用该过程,输出当n 分别为100,600,1100,1600时π的近似值。
2.编写程序,验证一个大于2的偶数可以表示为两个素数之和。
3.利用随机函数Rnd 生成10个两位的整数,将其降序排列输出到一个文本框中。
4.编写程序,求出1000之内的所有完数。所谓“完数”是指一个数恰好等于它的因子之和。如6的因子为1、2、3,而6 = 1 + 2 + 3,所以6是完数。
5.创建一个包含两个窗体的工程,用户界面如图7.24与图7.25所示。添加一个标准模块,在标准模块中定义两个通用过程:一个是Function 过程Max ,用于求数组a 中10个数的最大值;另一个是Sub 过程Sort ,用于对数组a 中10个数按从小到大顺序排序。
图6.21 求行与列的和
要求:(1) 窗体Form1为主窗体,当单击“生成随机数”按钮时,生成10个[10,99]区间内的随机整数,将这10个随机整数存入数组a ,同时显示在“随机数”文本框中。单击“求最大数”按钮时,调用标准模块中的Function 过程Max ,求这l0个数的最大数并显示在“最大值”文本框中。
当单击“打开排序窗口”按钮时,打开窗体Form2。
(2) 在窗体Form2中,当单击“排序”按钮时,调用标准模块中的Sub 过程Sort ,对数组a 中的10个数按从小到大的顺序排序,并将排序后的结果显示在“排序结果”文本框中。
单击“返回”按钮返回到窗体Form1。
第8章
二、上机调试题
1.求下面数列的和,计算到第n 项的值小于10-4为止。
++++++++=--2
11815131211n n f f y 式中,3),(,2,12121≥+===--n f f f f f n n n (本程序运行结果是:y=2.359646)。
【含有错误的程序代码】
Option Explicit
Private Sub Form_Click()
Dim a() As Single, i As Integer
Dim y As Single
i = 1
Do
ReDim a(i)
a(i) = 1 / fib(i)
If a(i) <= 0.0001 Then Exit Do
y = y + a(i)
i = i + 1
Loop
Print "y="; y
For i = 1 To UBound(a)
Print a(i)
Next i
End Sub
图7.24 Form1窗体界面 图7.25 Form2窗体界面
Private Function fib(i As Integer) As Integer
If i = 1 Then
fib = 1
ElseIf i = 2 Then
fib = 2
Else
fib(i) = fib(i - 1) + fib(i - 2)
End If
End Function
【要求】
(1) 新建工程,输入上述代码,改正程序中的错误。
(2) 改错时,可以调换语句位置,但不得增加或删除语句。
2.所谓的完全数是一个整数N的因子和(不包括N)等于N。例如,6=1+2+3,6是完全数。编写程序验证:两位以上的完全数,把它们的各位数字加起来得到一个数,再把这个数的各位数字加起来又得到一个数,一直做下去,直到得到一个以位数,这个数是1。过程WanShu的功能是找完全数。图8.32是程序运行界面。
【含有错误的程序代码】
Option Explicit Array Private Sub Command1_Click()
Dim i As Integer, k As Integer, st As String
For i = 10 To 500
If wanshu(i) Then
st = CStr(i)
Text1.Text = Text1.Text & st
Call test(st)
Text1.Text= Text1.Text & Chr(13) & Chr(10)
End If
图8.32 程序运行界面Next i
End Sub
Private Function wanshu(n As Integer) As Boolean
Dim i As Integer, sum As Integer
For i = 2 To n - 1
If n Mod i = 0 Then
sum = sum + i
End If
Next i
If sum = n Then wanshu = True
End Function
Private Sub test(s As String)
Dim i As Integer, sum As Integer
sum = 0
Do While Len(s) > 1
For i = 1 To Len(s)
sum = sum + Val(Mid(s, i, 1))
Next i
Text1.Text = Text1.Text & "->" & Str(sum)
s = Str(sum)
Loop
End Sub
【要求】
(1) 新建工程,输入上述代码,改正程序中的错误。
(2) 改错时,可以调换语句位置,但不得增加或删除语句。
第9章
三、编程及上机调试题
1.在d:\my文件夹下建立一个顺序文件text1.txt,该文件用于存储一批学生的学号,要求在文本框输入学号,每当输入一个学号后按下回车键时,就可以写入一个记录,并清除文本框中的内容。当键入“0000”时结束程序的运行。请完成下列程序。
Private sub Form_Load( )
Open "d:\my\text2.txt" For Output As #1
End Sub
Private Sub Text1_keyPress(KeyAscii As Integer)
If KeyAscii = _______ Then
If ________ Then
Close #1
End
End If
Write #1, _________
Text1.Text=""
End if
End Sub
2.下述程序的功能是建立一随机文件(d: \ my \ text2.txt),用于存放学生的姓名和年龄,然后把该文件中数据读出并显示。阅读下列程序,请在空格处填入相应的语句,使之完成上述功能。
Option Explicit
Private Type Student
name As String * 10
age As Integer
End Type
Private Sub Command1_Click()
Dim Stu As Student
Open "d: \ my \ text2.txt" For Random As #1 Len = Len(Stu)
Stu. name = "WangYing"
Stu. age = 20
Close #1
Open "d: \ my \ text.txt" For Random As #1 Len=Len(Stu)
Print "姓名:", stu. name
Print "年龄:", stu. age
Close # 1
End Sub