实验三
第1题四则运算题
设计如下窗体,为五个命令按钮编写5段代码完成四则运算及退出程序,其中在计算除法时,如果第二个数是零,在消息框中显示信息“除数为零”。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b As Single
a = TextBox1.Text
b = TextBox2.Text
TextBox3.Text = a + b
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a, b As Single
a = TextBox1.Text
b = TextBox2.Text
TextBox3.Text = a - b
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a, b As Single
a = TextBox1.Text
b = TextBox2.Text
TextBox3.Text = a * b
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim a, b As Single
a = TextBox1.Text
b = TextBox2.Text
If b = 0 Then
MessageBox.Show("除数为零")
Else
TextBox3.Text = a / b
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
End
End Sub
End Class
第2题一元二次方程求解
输入系数后,单击“求解”按钮后,根据判别式的3种不同情况,分别显示如下的不同结果。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c, delta As Double
a = TextBox1.Text
b = TextBox2.Text
c = TextBox3.Text
delta = b * b - 4 * a * c
If delta > 0 Then
Label5.Visible = True
Label6.Visible = True
Label4.Text = "方程有两个不相等实根"
Label5.Text = "X1=" & ((-b + Math.Sqrt(delta)) / 2 / a)
Label6.Text = "X2=" & ((-b - Math.Sqrt(delta)) / 2 / a)
ElseIf delta = 0 Then
Label4.Text = "方程有两个相等实根"
Label5.Visible = True
Label5.Text = "X1=X2=" & (-b / 2 / a)
Label6.Visible = False
Else
Label4.Text = "方程没有实根"
Label5.Visible = False
Label6.Visible = False
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class
第3题文本框中前景色和背景色的不同组合
目的:单选按钮的使用
(1)设计窗体
如下所示窗体中包含两组单选按钮、两个框架和一个命令按钮。
(2)程序功能:
分别单击不同的前景色和背景色按钮,在文本框中显示颜色的改变。
(3)设置控件的主要属性
1)窗体的文本属性为“不同前景色背景色的组合”
2)初始前景色为红色、背景色为黄色
3)其它属性根据图中显示来设置
(4)事件代码
Public Class Form1
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RadioButton1.CheckedChanged
TextBox1.ForeColor = Color.Red
End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RadioButton2.CheckedChanged
TextBox1.ForeColor = Color.Green
End Sub
Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RadioButton3.CheckedChanged
TextBox1.ForeColor = Color.Black
End Sub
Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RadioButton4.CheckedChanged
TextBox1.BackColor = Color.White
End Sub
Private Sub RadioButton5_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RadioButton5.CheckedChanged
TextBox1.BackColor = Color.Yellow
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
第4题三位整数的反序显示
在窗体中添加二个文本框、二个标签和一个命令按钮,在一个文本
框中输入一个三位的整数,单击命令按钮后,在另一个框中按相反顺序显示该数,例如,输入123,则在另一个文本框中显示321。
提示:本题先将每位上的数字分解出来,这要用到整除和计算余数的运算符,例如123整除100后的结果1就是百位,而123除以10的余数就是个位,至于十位,大家可以自己确定。
分解后的三位数再倒序组合成新的三位整数。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c, d, y As Single
a = TextBox1.Text
b = a \ 100
c = (a - 100 * b) \ 10
d = a - 100 * b - 10 * c
TextBox2.Text = d & c & b
End Sub
End Class
试验五
第1题累加
编写程序,计算1~100之间的所有偶数之和,程序窗口界面及控件自行设计。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, sum As Long
For i = 2 To 100 Step 2
sum += i
Next
TextBox1.Text = sum
End Sub
End Class
第2题使用循环求解水仙花数的问题
要求:
(1)参考教材上例4-3关于水仙花数的定义。
(2)程序窗口界面及控件与例4-3的结果即图4-3一样。
(3)单击“开始”按钮后,在文本框中显示求出的结果。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim M, k1, k2, k3 As Integer
TextBox1.Clear()
For M = 100 To 999
k1 = M \ 100
k2 = (M \ 10) Mod 10
k3 = M Mod 10
If M = k1 ^ 3 + k2 ^ 3 + k3 ^ 3 Then
TextBox1.Text += M.ToString() + " = "+ k1.ToString() + "^3+"+ k2.ToString() + "^3+" + k3.ToString() + "^3" + vbCrLf
End If
Next
End Sub
End Class
第3题统计整数的因子
编写程序,向一个文本框输入一个整数,单击“开始”按钮后,找出该数的所有因子,并统计因子的个数和总和,结果在另一个文本框中显示,共有三行,其中第一行该数的所有因子,第二行显示该数的因子个数,最后一行显示该数所有因子之和,窗体界面如下:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c, d As Long
c = 0
a = TextBox1.Text
b = 1
While b <= a
If a Mod b = 0 Then
c += 1
d += b
TextBox2.Text = "该整数的因子是:" & +=CStr(b) + "," + vbCrLf + "因子个数为:" + c.ToString() + vbCrLf + "因子之和为:" + d.ToString()
End If
b = b + 1
End While
End Sub
End Class
第4题判断素数
编写程序,判断某个整数是否是素数,在一个文本框中输入一个整数,单击命令按钮后,在另一个文本框中显示该数是否是素数,程序代码可以参考例4-10的代码,在此基础上改写。
以下是输入不同整数后的两种不同的结果,窗体结构也参照下图。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, j As Integer
Dim flag As Boolean = True
i = TextBox1.Text
j = 2
While j <= i - 1
If i Mod j = 0 Then
flag = False
Exit While
End If
j = j + 1
End While
If flag Then
TextBox2.Text = "是素数"
Else
TextBox2.Text = "不是素数"
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class
试验六
第1题元素交换
编写程序,通过使用inputbox将10个整数放入一个一维数组中,然后将前5个元素和5个元素交换,方法是将第一个元素与第10个元素,第2个元素与第9个互换,依次类推,要求在文本框中显示交换以前和交换以后的结果。
提示: 使用inputbox将10个整数放入一个一维数组中
For i = 1 To 10
a(i) = InputBox("请输入整数")
TextBox1.Text += a(i).ToString + " "
Next
k = 0
TextBox1.Text += vbCrLf + "交换后:"
For i = 1 To 10
If i > 5 Then
k = a(i)
a(i) = a(11 - i)
a(11 - i) = k
TextBox1.Text += a(11 - i).ToString + " "
Else
k = a(11 - i)
a(11 - i) = a(i)
a(i) = k
TextBox1.Text += a(i).ToString + " "
End If
Next
完整程序;
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(10), k As Integer
For i = 1 To 10
a(i) = InputBox("请输入整数")
TextBox1.Text += a(i).ToString + " "
Next
k = 0
TextBox1.Text += vbCrLf + "交换后:"
For i = 1 To 10
If i > 5 Then
k = a(i)
a(i) = a(11 - i)
a(11 - i) = k
TextBox1.Text += a(11 - i).ToString + " "
Else
k = a(11 - i)
a(11 - i) = a(i)
a(i) = k
TextBox1.Text += a(i).ToString + " "
End If
Next
TextBox1.Text = "交换前: " + TextBox1.Text
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
第2题元素平均
编写程序,通过使用inputbox将10个整数放入一个一维数组中,然后计算这10个整数的平均值,在文本框中显示平均值和这10个数中低于平均值的数
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(10), sum, i As Integer
Dim av As Single
For i = 1 To 10
a(i) = InputBox("请输入整数")
sum += a(i)
Next
av = sum / 10
For i = 1 To 10
If a(i) < av Then
TextBox1.Text += a(i).ToString + " "
End If
Next
TextBox1.Text = "该组数的平均值为:" + av.ToString + vbCrLf + "小于平均值的数有:" + TextBox1.Text
End Sub
End Class
第3题矩阵转置
编写程序,实现矩阵转置,即矩阵的行、列互换,将一个3行4列的矩阵转换为4行3列,要示在文本框中分别显示转换前后的两个矩阵。
提示:
str = "交换前:" + vbCrLf
For i = 0 To 3
For j = 0 To 2
str += a(i, j).ToString() + " "
b(j, i) = a(i, j)
Next
str += vbCrLf
Next
str += "交换后:" + vbCrLf
For i = 0 To 2
For j = 0 To 3
str += b(i, j).ToString + " "
Next
str += vbCrLf
Next
完整程序:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(,) As Integer = {{1, 2, 3, 4}, {4, 5, 6, 7}, {6, 7, 8, 9}}
Dim i, j, b(3, 2) As Integer, str As String
str = "交换前:" + vbCrLf
For i = 0 To 2
For j = 0 To 3
str += a(i, j).ToString() + " "
b(j, i) = a(i, j)
Next
str += vbCrLf
Next
str += "交换后:" + vbCrLf
For i = 0 To 3
For j = 0 To 2
str += b(i, j).ToString() + " "
Next
str += vbCrLf
Next
TextBox1.Text = str
End Sub
End Class
试验七:
第1题完全数
编写程序,找出2~2000之间的所有完全数。完全数是指某个整数的每个因子之和正好等于该数本身,例如:因为6=1+2+3,28=1+2+4+7+14,所以这两个数都是完全数。
要求:
(1)程序窗口界面及控件自行设计。
(2)单击“开始”按钮后,在文本框中显示求出的结果。
(3)请用进度条提示.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c, d, i As Integer
For a = 2 To 2000
c = 0
For b = 1 To a - 1
d = a Mod b
If d = 0 Then
c += b
End If
Next
If a = c Then
TextBox1.Text += a.ToString + " "
End If
ProgressBar1.Value = a
Next
End Sub
End Class
第2题杨辉三角形
打印以下的杨辉三角形(打印10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
┋
提示:
(1)使用一个二维数组a保存这些数据
(2)第0列、主对角线上元素都为1
(3)其它元素为其上一行元素与上一行左侧元素之和,
即: a(I,j)=a(i-1,j)+a(i-1,j-1)
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(10, 10) As Integer
Dim i, j As Integer
a(1, 1) = 1
For i = 2 To 10
a(i, 1) = 1
For j = 2 To i
a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
Next
Next
For i = 1 To 10
For j = 1 To i
TextBox1.Text += a(i, j).ToString + " "
Next
TextBox1.Text += vbCrLf
Next
End Sub
End Class
第3题求最小值
建立一个4行3列的二维数组,找出其中最小的元素所在的行和列,并在文本框中输出该值及其行、列位置。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(,) As Integer = {{45, 21, 13}, {42, 15, 16}, {37, 18, 29}, {39, 51, 62}}
Dim i, j, m, b As Integer
Dim min As Integer = 100
For i = 0 To 3
For j = 0 To 2
If a(i, j) < min Then
min = a(i, j)
m = i + 1 : b = j + 1
End If
Next
Next
TextBox1.Text += min.ToString + " " + m.ToString + "行" + b.ToString + "列"
End Sub
End Class
试验八:
第1题计算阶乘
设计如下的窗体,向第一个文本框中输入一个整数,单击“计算”按钮,在另外一个文本框中显示该整数的阶乘,要求,阶乘的计算在按钮的单击事件中完成。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c As Integer
a = TextBox1.Text
b = 1
For c = 1 To a Step 1
b = b * c
Next
TextBox2.Text = b
End Sub
End Class
第2题计算阶乘
设计窗体与第1题相同,向第一个文本框中输入一个整数,单击“计算”按钮,在另外一个文
本框中显示该整数的阶乘,要求采用SUB子过程计算阶乘,整数通过参数传递,阶乘在子过程
中显示。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer
a = TextBox1.Text
jch(a)
End Sub
Sub jch(ByVal n As Integer)
Dim i, s As Integer
s = 1
For i = 1 To n
s = s * i
Next
TextBox2.Text = s
End Sub
End Class
第3题计算阶乘
设计窗体与第1题相同,向第一个文本框中输入一个整数,单击“计算”按钮,在另外一个文本框中显示该整数的阶乘,要求采用FUCTION 函数过程,整数通过参数传递,阶乘由该过程
返回。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer
a = TextBox1.Text
TextBox2.Text = jch(a)
End Sub
Function jch(ByVal n As Integer)
Dim i, s As Integer
s = 1
For i = 1 To n
s = s * i
Next
Return s
End Function
End Class
第4题找出一维数组元素中的最大值和最小值
设计窗体如下图,单击“开始”按钮后,从键盘输入10个整数,输入到一维数组中,
输入时采用inputbox函数,见图(2),然后找出这10个数中的最大值和最小值,并在文本框中输出,见图,
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(9), b, c, i As Integer
a(0) = InputBox("输入第一个数")
a(1) = InputBox("输入第二个数")
a(2) = InputBox("输入第三个数")
a(3) = InputBox("输入第四个数")
a(4) = InputBox("输入第五个数")
a(5) = InputBox("输入第六个数")
a(6) = InputBox("输入第七个数")
a(7) = InputBox("输入第八个数")
a(8) = InputBox("输入第九个数")
a(9) = InputBox("输入第十个数")
b = a(0) :
c = a(0)
For i = 0 To 9
If a(i) < b Then
b = a(i)
End If
If a(i) > c Then
c = a(i)
End If
TextBox1.Text += a(i).ToString + " "
Next
TextBox1.Text = TextBox1.Text + vbCrLf + "最大数为:" + c.ToString + vbCrLf + "最小数为:" + b.ToString
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class
试验九:
第1题计算数列之和
求a+aa+aaa+aaaa+... ...+aa...a(n个),其中a为1~9之间的整数。
例如:当a = 1, n = 3时,求1+11+111之和;
当a = 5, n = 7时,求5+55+555+5555+55555+5555555之和。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, n, s, i, m, b As Integer
a = TextBox1.Text
n = TextBox2.Text
b = n
For i = 1 To n
m = a * (10 ^ (i - 1)) * b
b = b - 1
s = s + m
Next
TextBox3.Text = s
End Sub
End Class
第2题计算长方形的面积和周长
设计如下的窗体,向前两个文本框中分别输入长和宽,单击“计算”,在另外一个文本框中显示长方形的面积,要求采用FUNCTION 函数过程计算面积,长和宽通过参数传递。
Function area(ByRef a As Integer, ByRef b As Integer) As Long
Dim m As Long
m = a * b
Return m
End Function
Function ccc(ByRef a As Integer, ByRef b As Integer) As Integer
Dim n As Integer
n = 2 * (a + b)
Return n
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c As Integer
Dim s As Long
a = TextBox1.Text
b = TextBox2.Text
s = area(a, b)
c = ccc(a, b)
TextBox3.Text = s
TextBox4.Text = c
End Sub
End Class
第3题综合题,统计各个分数段的人数
设计窗体如下:
编程要求:
(1)单击“开始”按钮后,显示如下的消息框,向框中输入总的人数:
如果输入的人数小于1,则显示下列的消息框,然后重新输入人数
(2)输入人数后,接下来分别输入这些学生的分数,如果输入的分数不在0~100之间,则显示下面的消息框,然后重新输入
(3)输入分数时同时统计每个分数段的人数,每个分数段按下列的规定:
90~100:优
80~89:良
70~79:中
60~69:及格
60分以下:不及格
(4)最后按下图显示统计后的结果:(图中是输入10个分数后的结果)
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim str As String
Dim a As Integer
str = "请输入学生人数"
a = InputBox(str)
If a < 1 Then
MessageBox.Show("请重新输入")
End If
Dim s(a), i As Integer
For i = 1 To a
str = "请输入分数"
s(i) = InputBox(str)
If s(i) < 0 Or s(i) > 100 Then
MessageBox.Show("分数不对,请重新输入")
End If
Next
Dim you, liang, zhong, ji, bu As Integer
For i = 1 To a
If s(i) >= 90 Then
you += 1
ElseIf s(i) >= 80 Then
liang += 1
ElseIf s(i) >= 70 Then
zhong += 1
ElseIf s(i) >= 60 Then
ji += 1
Else : bu += 1
End If
Next
str = ""
For i = 1 To a
str += s(i).ToString + " "
Next
TextBox1.Text = "分数:" + vbCrLf + str + vbCrLf + "总人数" + "=" + a.ToString + vbCrLf + "各等级分数的人数:" + vbCrLf + "优秀" + "=" + you.ToString + vbCrLf + "良" + "=" + liang.ToString + vbCrLf + "中" + "=" + zhong.ToString + vbCrLf + "及格" + "=" + ji.ToString + vbCrLf + "不及格" + "=" + bu.ToString
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Clear()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End
End Sub
End Class
试验十:
第1题计算二维数组每行的最大元素
要求如下:
(1)程序运行时,显示如下的窗体,窗体中有两个标签、两个文本框和四个命令按钮:
(2)单击“显示二维数组”的按钮时,在第一个文本框中显示3行4列的二维数组,其中数组元素要求使用随机函数产生,范围在0~100之间,也就是每次单击都产生不同的数据,如下所示:
(3)单击“计算各行最大值”按钮时,计算二维数组各行的最大值,并在第二个文本框中显示,如下所示:
(4)单击“清除”按钮时,清除两个文本框中的内容。
(5)单击“退出”按钮,结束程序的执行。
编程提示
(1)由于两段事件代码都要用到同一个二维数组,因此,可以在过程之外定义如下的数组:Public a(2, 3) As Integer
(2)“显示二维数组”的按钮参考代码如下: