VB程序设计练习题(一)

9 篇文章 23 订阅

VB程序设计练习题(一)

文章目录

目录

VB程序设计练习题(一)

文章目录

前言

内容

1、十进制转二进制数

2、购买贺卡问题

三、用滚动条改变标签颜色

4.猴子吃桃,递推举法

5、比赛最高分与最低分

6、人口问题

7.二维数组矩阵输出

8.二维数组4*4矩阵输出

9、(二维数组)求二维数组四周元素的和

10.输出5*5矩阵求对角线之和

11、输出三角形

12.单击窗体,利用双重循环输出如下的图案。

13、输出连续和为1250的正整数范围

14、求Π的值

15、单词首字母大写

16、辗转相除法求最大公约数

17、累乘与累加

18、双胞胎数

19、for语句输出三角形

20、杨辉三角形


 


前言

备考技能考的一些陌生的VB练习题

难度比较大

有什么问题可以在评论区发表


内容

1、十进制转二进制数

答案:

Private Sub Command1_Click()

Dim i As Integer

a = Val(Text1.Text)

If a >= 0 And a <= 255 Then

For i = 1 To 8

If a Mod 2 = 1 Then

      a = a \ 2

      b = b & "1"

Else

      a = a / 2

      b = b & "0"

End If

Next

Else

      MsgBox "请输入正确的十进制数:"

End If

Text2.Text = StrReverse(b)

End Sub


2、购买贺卡问题

程序实现功能:小明过年要给他的40位同学各寄一张贺卡,贺卡的价格有3元、2元和1元三种,他一共有100元,怎样购买正好把钱用完。把所有可能的组合显示出来。

答案:

Private Sub Form_Click()

dim a,b,c,d,e,f

a = 3

b = 2

c = 1

For d = 0 To 34

For e = 0 To 50

For f = 0 To 100

If a * d + b * e + c * f = 100 And d + e + f = 40 Then

      Print d; Space(5); e; Space(5); f

End If

Next

Next

End Sub


三、用滚动条改变标签颜色

答案:

 

Private Sub HSB_Change()

Text3.Text = HSB.Value

Label4.BackColor = RGB(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text))

End Sub

 

Private Sub HSB_Scroll()

Text3.Text = HSB.Value

Label4.BackColor = RGB(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text))

End Sub

 

Private Sub HSG_Change()

Text2.Text = HSG.Value

Label4.BackColor = RGB(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text))

End Sub

 

Private Sub HSG_Scroll()

Text2.Text = HSG.Value

Label4.BackColor = RGB(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text))

End Sub

 

Private Sub HSR_Change()

Text1.Text = HSR.Value

Label4.BackColor = RGB(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text))

 

End Sub

 

Private Sub HSR_Scroll()

Text1.Text = HSR.Value

Label4.BackColor = RGB(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text))

End Sub


4.猴子吃桃,递推举法

要以上一个本身做铺垫才能求出下一个的值的,如果把i设为循环值,在循环中的i只是它的下标签,在循环中不需要把i当系数,也就是说循环中不出现i

答案:

Private Sub Command1_Click()

x = 1

Print "第8天的桃子数量是1个"

For i = 7 To 1 Step -1

      x = (x + 1) * 2         #循环中不需要出现i

      Print "第" & i & "天的桃子数量是" & x & "个"

Next

End Sub


5、比赛最高分与最低分

某次歌曲大奖赛,有7个评委对某个参赛者的打分数,按照去掉一个最高分和最低分的计算办法,求出该参赛者的平均得分以及最高分和最低分。

答案:

Private Sub Command1_Click()

Dim a(1 To 7), i, s, b As Integer

s = 0

For i = 1 To 7      ‘先定义ifor循环,用对话框的方式输入每个评委的得分。

      a(i) = Val(InputBox("第" & i & "个评委得分"))

      s = s + a(i)         ‘把所有评委的得分加起来

Next

Min = a(1)          ‘先定义Min等于a(1)的值

For i = 1 To 7

      If a(i) > Max Then     ‘让每个数都于Max比较,若大于则替换值。(Max初始最为0

            Max = a(i)

      End If

Next

For i = 1 To 7          ‘让每个数都于Min比较,若小于则替换值。(Min=a1))

      If a(i) < Min Then

            Min = a(i)

      End If

Next

s = s - (Max + Min)        ‘最后减掉最大值与最小值

b = s / 5                  ‘求平均值

Print "最大值" & Max & vbCrLf & "最小值" & Min & vbCrLf & "去掉最高分与最低分的平均值是" & b     ‘输出

End Sub


6、人口问题

我国目前有13亿的人口,按人口年增长率0.8%计算,多少年后我国人口将超过26亿

答案:

Private Sub Command1_Click()

a = 13      ‘先定义a为13

s = 0

Do While a <= 26   

      a = a * (1 + 0.008)   

      s = s + 1        

Loop              

Print s             

End Sub


7.二维数组矩阵输出

(二维数组)随机生成一个整型的二维数组,范围在[10,20]之间,以下三角形形式输出该数组。

答案:

Private Sub Command1_Click()

Dim a(1 To 10, 1 To 10) As Integer

For i = 1 To 10

      For j = 1 To 10

            a(i, j) = Int(Rnd * (20 - 10 + 1) + 10)

      Next

Next

For i = 1 To 10

      For j = 1 To i

            Print Spc(3); a(i, j);

      Next

Print

Next

End Sub


8.二维数组4*4矩阵输出

(二维数组)利用随机函数生成一个4*4的矩阵(即二维数组),范围是[20,50]内的整数,输出该矩阵所有数据的之和。

答案:

Private Sub Command1_Click()

Dim a(1 To 4, 1 To 4) As Integer

For i = 1 To 4

      For j = 1 To 4

            a(i, j) = Int(Rnd * (50 - 20 + 1) + 20)

            Print a(i, j);

            s = s + a(i, j)

      Next

Print

Next

Print "和为" & s

End Sub


9、(二维数组)求二维数组四周元素的和

答案:

Dim a(4, 4)
Private Sub Command1_Click()
For i = 1 To 4

For j = 1 To 4

If i = 1 Or j = 1 Or i = 4 Or j = 4 Then

Sum = Sum + a(i, j)

 End If

 Next

Next

Print "四周元素之和为" & Sum

End Sub

Private Sub Form_Click()
For i = 1 To 4
    For j = 1 To 4
        a(i, j) = Int(Rnd * (99 - 10 + 1) + 10)
        Print a(i, j);
        
    Next
    Print
    
Next

End Sub


10.输出5*5矩阵求对角线之和

(二维数组)用二维数组加双重循环输出5*5的方阵,每个数组的值的区间[10,99]之间,并且输出对角线的值的之和。

答案:

Private Sub Command1_Click()

Dim a(1 To 5, 1 To 5) As Integer

For i = 1 To 5

      For j = 1 To 5

            a(i, j) = Int(Rnd * (99 - 10 + 1) + 10)

            If i = j Then

                  s = s + a(i, j)

            End If

           If i + j = 6 Then

                 b = b + a(i, j)

           End If

           Print a(i, j);

      Next

Print

Next

Print "对角线之和为:" s + b - a(3, 3)

End Sub


11、输出三角形

利用双重循环输出以下的图案。

答案:

Private Sub Command1_Click()

For i = 1 To 9    

      For j = 1 To I         以上是先输出一个直角三角形的1i的数。(循环会先把上面的j

           Print j;              循环全部输出出来再输出下一个循环,即e

      Next               

      If i >= 2 Then          这里开始输出e的循环 i-11的数。

            For e = i - 1 To 1 Step -1

                  Print e;

            Next

      End If

      Print

Next

End Sub


12.单击窗体,利用双重循环输出如下的图案。

答案:

Private Sub Form_Click()

For i = 65 To 75

      Print Space(75 - i);

      For j = 129 To 2 * i - 1

            Print Chr(i);

      Next

      Print

Next

End Sub


13、输出连续和为1250的正整数范围

在窗体上创建一个命令按钮,标题为“计算并输出”;程序运行后,如果单击命令按钮,程序将计算500以内两个数之间(包括开头和结尾的数)所有连续数的和为1250的正整数,并在窗体上显示出来,这样的数有多组,程序输出每组开头与结尾的正整数,并用“~”连接起来,如图所示。

答案:

Private Sub Command1_Click()

Print "连续和为1250的正整数是:"

For i = 1 To 500   首先定义一个双重循环。I1500ji500,所以j的循环要取

      For j = i To 500    决于i

            s = s + j           累加

            If s > 1250 Then   看看累加的s大于1250吗,若大于则停止j循环,接着i循环。

                  Exit For

            ElseIf s = 1250 Then 若等于s后,则输出i循环所用的值,也就是开头,再输出j循环的值,

                  Print i; "~"; j        也就是结尾。

                  Exit For           这里还是要停止循环,

            End If

      Next

s = 0            s=0,初始化,让下一次循环用

Next

End Sub


14、求Π的值

布局如下图。单击按钮,根据下面的公式计算Π的值:

Π/4=1-1/3+1/5-1/7+…….1/10001

用do….while 实现程序。

答案:

Private Sub Command1_Click()

Dim r , s, i 

r = 0

s = 1

i = 1

Do While 1 / i >= 0.0001

      r = r + s / i

      i = i + 2

      s = -s

Loop

Text1.Text = r * 4

End Sub


15、单词首字母大写

按照如下图布置,程序运行后,单击按钮,文本框中的每个单词的首字母变成大写。

 

答案:

Private Sub Command1_Click()

Dim i, a, f, c

f = 0                                首先定义f=0c=””

c = ""

For i = 1 To Len(Text1.Text)              循环i=1text1.text的长度

      a = Mid(Text1.Text, i, 1)                 a=循环等于每个字母

      If i = 1 Then                          当第一个字母的时,第一个字母转化为大写

            a = UCase(a)

      End If

      If f = 1 Then                         f=1时,这里只有运行下面那个a=” ”,才能触发

            a = UCase(a)                         当运行下面的a=” “的时候,f才会为1。也就是说

            f = 0                                空格的后一项字母为大写。

      End If

      If a = " " Then

            f = 1

      End If

      c = c & a

Next

Text1.Text = c

End Sub


16、辗转相除法求最大公约数

创建3个文本框,计算text1和text2的正整数的最大公约数,并显示在text3中。

(要求使用do…….loop语句来实现)

答案:

Private Sub Command1_Click()

m = Val(Text1.Text)

n = Val(Text2.Text)

If n > m Then
             t = n
             n = m
             m = t
        End If

Do

     r = m Mod n

     If r = 0 Then Exit Do

     m = n

     n = r

Loop

Text3.Text = n

End Sub

 


17、累乘与累加

点击窗体,已知s=1+1/3!+1/5!+1/7!+1/9!.将s的结果输出到窗体上。使用do while….loop语句完成程序。

答案:

Private Sub Form_Click()

Dim i As Integer

i = 1           这相当于for的初始值

s = 1

Do While i <= 9  这相当于for的结束值

     i = i + 1         公差,相当于for循环里的step(必须定义)

     s = s * i

If i Mod 2 = 1 Then

     p = p + 1 / s

End If

Loop          这里相对于next

Print p

End Sub

 


18、双胞胎数

若两个素数之差为2,则称这两个素数为双胞胎数。求出[200,1000]之内有多少对双胞胎数。

答案:

Private Sub Form_Click()

For i = 200 To 1000

f = 0

For j = 2 To i - 1

If i Mod j = 0 Then

f = 1

Exit For

Else

f = 0

End If

Next

If f = 0 Then            1.当求出2001000之间第一个素数时(从小到大),就循环下

For e = 200 To 1000        组素数。

    n = 0

    For a = 2 To e - 1

    If e Mod a = 0 Then

        n = 1

        Exit For

    Else

        n = 0

    End If

    Next

    If f = 0 Then        2.当是素数时

        If i + 2 = e Then .则判断第一组中的素数是否加2等于第二组中的素数。(相差为2

           s = s + 1  ,若满足则s1.

            Exit For  ,退出循环(因为已经找到了,就不可能有第二个一样的)

        End If

    End If

Next

End If

Next

Print "总共有" & s & "对"

End Sub


19、for语句输出三角形

(新思路)用for语句输出如下图案。

答案:

Private Sub Command1_Click()

Dim i, j As Integer

a = "123456"            先定义一个a字符串是16

For i = 1 To 6

      Print Space(10 - i); Mid(a, 1, i)  利用mid函数来选择

      Next

End Sub


20、杨辉三角形

编写适当的事件过程,在窗体上输出相对应行数的杨辉三角形,点击窗体弹出inputbox对话框,在对话框中输入行数,打印出如下图所示的杨辉三角形

答案:

Private Sub Form_Click()

Dim i As Integer, j As Integer

Dim a As Integer

a = Val(InputBox("请输入行数"))

Dim c(9, 9) As Integer

If a > 0 Then

For i = 1 To a

    Print Space(3 * a - 3 * i);

    For j = 1 To i

        If i = 1 Or j = i Then       ‘当为三角形两边的时候,输出1

            c(i, j) = 1

        End If

        If i = 2 Or j = i - 1 Then              ‘当为三角形的两边里面一个的时候输出行数-1

            c(i, j) = i - 1

        End If

        If i > 2 And j < i - 1 Then                    否则都以自身上面一行对角线两个数的和。

            c(i, j) = c(i - 1, j - 1) + c(i - 1, j)

        End If

        Print c(i, j) & "     ";                       ‘输出

    Next

    Print

Next

End If

End Sub


点赞、关注

  • 21
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依然,顽强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值