第38~40讲-循环章节大习题讲解

第38~40讲-循环章节大习题讲解

Sub 练习题1() '高空落球
    Dim ballTrace As Double, fantan As Double, currentFall As Double, i As Long
    For i = 1 To 10
        If i = 1 Then
            ballTrace = 100
            currentFall = 100
        Else
            fantan = currentFall / 2 '反弹高度是当次坠落的高度的一半
            currentFall = fantan '坠落的高度 = 反弹高度
            ballTrace = ballTrace + currentFall + fantan
        End If
    Next
MsgBox "第10次球落到地面上时总运行距离为" & ballTrace & "米。" & vbCr & _
    "反弹高度为" & fantan & "米。"
End Sub
Sub 练习题2() '输入一个正整数对它进行质因数分解
    Dim input_n As Long, divN As Long, pi As Long
    'pi 代表质因数,divN 代表辗转相除法的被除数
    Dim pStr As String
    input_n = InputBox("请输入一个正整数")
    divN = input_n
    pi = 2
    pStr = input_n & "="
    Do While divN <> pi
        If divN Mod pi = 0 Then
            divN = divN / pi
            pStr = pStr & pi & "*"
        Else
            pi = pi + 1
        End If
    Loop
    pStr = pStr & pi
    Debug.Print pStr
End Sub
'1,2,3,4 能组成多少个不重复的3位数
Sub 练习题3()
    Dim i&, j&, k&, count&
    For i = 1 To 4
        For j = 1 To 4
            For k = 1 To 4
                If i <> j And j <> k And i <> k Then
                    count = count + 1
                    Debug.Print i * 100 + j * 10 + k
                End If
            Next k
         Next j
    Next i
    MsgBox "共有" & count & "个不同的3位数组合"
End Sub
Sub 练习题4() '小喵分鱼
    Dim cats As Long, fishes As Long
    '总鱼数是一定的
    'cats *6 -20 = cats*5+15
    Do While cats * 6 - 20 <> cats * 5 + 15
        cats = cats + 1
    Loop
    fishes = cats * 6 - 20
    MsgBox "共有小喵" & cats & "只,参与分配" & fishes & "条鱼。"
End Sub
'规则是 第i 个业务员 之前的总额/2 +他的顺序*100
Sub 练习题5()
    Dim 奖金总额 As Double, 待分配金额 As Double, i As Long
    奖金总额 = 100
   
    Do While 待分配金额 <> 100
        奖金总额 = 奖金总额 + 1
        待分配金额 = 奖金总额
        For i = 1 To 4
            待分配金额 = 待分配金额 - (待分配金额 / 2 + i * 100)
        Next
    Loop
    '============ 上面部分是计算奖金总额的===============
    '=========== 下面部分是为了输出每个人的分配奖金==========
    待分配金额 = 奖金总额
    
    For i = 1 To 4
        Debug.Print "第" & i & "个业务员的奖金分配是" & (待分配金额 / 2 + i * 100) & "元"
        待分配金额 = 待分配金额 - (待分配金额 / 2 + i * 100)
    Next
    Debug.Print "第5个业务员的奖金分配额度是" & 100 & "元"
    Debug.Print "分配的总奖金数是" & 奖金总额
End Sub
'喝啤酒问题:1瓶啤酒卖2元 ,4个盖能换一瓶酒,2个瓶也能换一瓶酒
'张三有10块钱,最多能喝多少酒
'第二问

Sub 喝啤酒()
    Dim beers As Long, caps As Long, bottles As Long
    Dim 当次盖换酒&, 当次瓶换酒&
    beers = 10 / 2
    caps = beers
    bottles = beers
    '换的过程
    Do While caps >= 4 Or bottles >= 2
        当次盖换酒 = Int(caps / 4)
        当次瓶换酒 = Int(bottles / 2)
        beers = beers + 当次盖换酒 + 当次瓶换酒
        caps = caps Mod 4 + 当次盖换酒 + 当次瓶换酒
        bottles = bottles Mod 2 + 当次瓶换酒 + 当次盖换酒
    Loop
    MsgBox "张三共喝了" & beers & "瓶啤酒" & vbCr & _
    "还剩下" & bottles & "个空瓶。" & caps & "个瓶盖."
End Sub

Sub 喝啤酒第二问()
    Dim beers As Long, caps As Long, bottles As Long
    Dim 当次盖换酒&, 当次瓶换酒&
    beers = 10 / 2
    caps = beers + 1
    bottles = beers + 1
    '换的过程
    Do While caps >= 4 Or bottles >= 2
        当次盖换酒 = Int(caps / 4)
        当次瓶换酒 = Int(bottles / 2)
        beers = beers + 当次盖换酒 + 当次瓶换酒
        caps = caps Mod 4 + 当次盖换酒 + 当次瓶换酒
        bottles = bottles Mod 2 + 当次瓶换酒 + 当次盖换酒
    Loop
    MsgBox "张三共喝了" & beers - 1 & "瓶啤酒" & vbCr & _
    "还剩下" & bottles - 1 & "个空瓶。" & caps - 1 & "个瓶盖."
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值