|
本帖最后由 开心妙妙 于 2014-5-5 18:13 编辑
C16:开心妙妙
暂时先交这些,第二题有时间再想想- Sub 第一题A()
- Dim i&, i1 As Double, sum As Double, t As Single
- t = Time
- i = 1
- Do
- i1 = 1 / i '需要累加的值
- sum = sum + i1 '累加值
- i = i + 2 'i为分母作为循环步长
- Loop While i1 > 10 ^ -7 '当i1大于10^-7,继续循环
- MsgBox "sum:" & sum & Chr(10) & "运行时间:" & Time - t
- End Sub
- Sub 第一题B()
- Dim i&, i1 As Double, sum As Double, t As Single
- t = Time
- For i = 1 To (10 ^ 7) + 2 Step 2
- '分母作为循环值,步长为2,终值用10^7,1/10^7值和10^-7是相同的
- '终值+2是因为步长为2,不加2的话到99就不循环,就无法循环最小值为10^-7
- sum = sum + 1 / i '值累加
- Next i
- MsgBox "sum:" & sum & Chr(10) & "运行时间:" & Time - t '显示累加值及运行时间
- End Sub
- Sub 第二题()
- Dim i&, st$, n As Byte
- 100:
- i = Val(InputBox("请输入: " & Chr(10) & "大于等于1及小于等于16384的列号", "输入框")) '用Val将输入的数字转为数值
- If Len(i) <> 0 And i > 0 And i < 16384 Then
- st = Cells(1, i).Address(0, 0) '用Address 取单第1行第I列的单元格地址
- st = Replace(st, "1", "") '用Replace将单元格地址行号1替换为""
- MsgBox "列标是 : " & st, , "提示框"
- Else
- MsgBox "输入错误,请重新输入", 64
- n = n + 1 '计算错误次数
- If n > 3 Then
- MsgBox "错误输入超过三次了,退出程序!", 64
- Exit Sub
- End If
- GoTo 100
- End If
- End Sub
- Sub 第三题()
- Dim x%, y%, st$, n%
- Dim Arr(1 To 11, 1 To 5) '定义数组 Arr(1 TO 11,1 TO 5)
- For x = 1 To 11 '行循环
- For y = 1 To 5 '列循环
- If x <= 6 Then '判断如果 x<=6, 6是三角形顶点行的行号
- If x + y - 1 = 6 Then '如果 行+列-1=6 则等于"*"
- Arr(x, y) = "*"
- Else '否则等于" "
- Arr(x, y) = " "
- End If
- st = st & " " & (Arr(x, y)) 'st=st & "" & (Arr(x,y)) '将数组的值连接到字符串
- Else '如果x>6 的,用5,4,3,2,1的行号去加列号
- n = x Mod 6 '行号 Mod 6,用余数计算行号的差值
- If x - n * 2 + y - 1 = 6 Then '判断行号-行的差值+列号-1=6 则等于"*"
- Arr(x, y) = "*"
- Else '否则等于" "
- Arr(x, y) = " "
- End If
- st = st & " " & (Arr(x, y)) 'st=st & "" & (Arr(x,y)) '将数组的值连接到字符串
- End If
- Next y
- st = st & " " & "*" '最后1列固定不变的直接连接上"*"
- Debug.Print st '立即窗口打印连接的字符串
- st = "" '将字符串初始化
- Next x
- End Sub
- Sub 第四题()
- Dim i%, c% '定义行列变量
- Dim Arr(1 To 4, 1 To 4), Arr1(1 To 4, 1 To 4) '定义原数组、目标数组大小
- For i = 1 To 4 '行循环
- For c = 1 To 4 '列循环
- Arr(i, c) = Int((10 - 5 + 1) * Rnd() + 5)
- '生成5-10的随机数赋值给数组,10表示最大值,5表示最小值
- Next c
- Next i
- Range("A1").Resize(4, 4) = Arr
- For c = 1 To 4 '列循环
- For i = 1 To 4 '行循环
- Arr1(c, i) = Arr(5 - i, c)
- Next i
- Next c
- Range("F1").Resize(4, 4) = Arr1
- End Sub
- 'Arr1(c, i) = Arr(5 - i, c) 实现位置转换的关键,原来的列转换为目标数据行
- '赋值时行列变量互换,行列互换后,最大的行变成最小的列,用5-i去实现效果
复制代码 |
评分
-
查看全部评分
|