笔试复习题
笔试占总分的50%、平时占10%、上机占40%。
笔试时间为1小时。四道大题为:程序填空、程序运行结果、程序段功能、编程题
复习范围
随机整数[A,B]
公式:Int(Rnd*(B-A+1)+A) 1. 循环
(1)打印三角形 方法一:用单重循环 Private Sub Form_Click() For i = 1 To 8
Print Tab(15 - i); String(2 * i - 1, "*") Next i End Sub
方法二:用多重循环 Private Sub Form_Click() For i = 1 To 8 Print Tab(15 - i); For j = 1 To 2 * i - 1 Print "*"; Next j Print Next i End Sub
(2)求积数部分和
P88 例4.18 p268 习题3 Private Sub Form_Click() Dim s!,i%,t! i=1:t=2:s=1
Do while 1/t>0.0001
s=s+1/t i=i+1 t=t+i Loop
Print "共计算";i-1; "项" Print "s=";s End Sub
(3)求100到200之间的所有素数。 Private Sub Form_Click() Dim t As Boolean
For x = 101 To 200 Step 2 t = True
For i = 2 To x - 1
If x Mod i = 0 Then t = False Next i If t Then k = k + 1 Print x;
If k Mod 10 = 0 Then Print End If Next x End Sub
(4)最大公约数、最小公倍数 P87 例4.17
(5)水仙花数 P269 6 Private Sub Form_Click() For i = 100 To 999 x =i \ 100
y = i \10 mod 10 z = i mod 10
If i = x * x * x + y * y * y + z * z * z Then Print i, End If Next i End Sub
(6) 最大值、最小值。P271 实验1 2. 数组 (1)排序
P106 例5.5 从小到大排序
Private Sub Form_Click()
- 1 -
Dim a() As Integer n = Val(InputBox("n")) ReDim a(1 To n) As Integer Randomize For i = 1 To n
a(i) = Int(Rnd * 101 + 100) Print a(i);
If i Mod 10 = 0 Then Print Next i
For i = 1 To n - 1 k = i
For j = i + 1 To n
If a(k) > a(j) Then k = j Next j
t = a(i): a(i) = a(k): a(k) = t Next i
For i = 1 To n Print a(i);
If i Mod 10 = 0 Then Print Next i End Sub
(2)杨辉三角形 P273 6 Private Sub Picture1_Click() Dim s(20, 20) As Integer n = Val(Text1.Text) Picture1.Cls For i = 1 To n
s(i, 1) = 1: s(i, i) = 1 Next i
For i = 3 To n For j = 2 To i - 1
s(i, j) = s(i - 1, j - 1) + s(i - 1, j) Next j Next i
For i = 1 To n For j = 1 To i
Picture1.Print Tab(13 - 2 * i + 4 * j); s(i, j); Next j
Picture1.Print Next i End Sub 3. 过程
(1)s=4!+5!+6!
Private Sub Form_Click()
Print fax(4) + fax(5) + fax(6) End Sub
Private Function fax(k As Integer) As Single t = 1
For i = 2 To k t = t * i Next i fax = t
End Function
(2)回文数 P278 4
Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then
If Not IsNumeric(Text1) Then
MsgBox "输入非数字串,重新输入" Text1.Text = "" Text1.SetFocus Else
If IsH(Text1) Then
Picture1.Print Text1; " ★ " Else
Picture1.Print Text1 End If Text1 = "" End If End If End Sub
Function IsH(ss As String) As Boolean Dim i%, Ls% IsH = True ss = Trim(ss) Ls = Len(ss)
For i = 1 To Ls \ 2
If Mid(ss, i, 1) <> Mid(ss, Ls + 1 - i, 1) Then IsH = False Exit Function End If Next i End Function 4. 文件 文件
输入:由键盘输入5个学生信息保存到随机文件D:\TT\T.DAT中
每个学生包括学号、姓名、总分 显示:显示不及格的学生信息
- 2 -
修改:将不及格的学生成绩增加5分
Private Type Xs Xh As String * 6 Xm As String * 6 Cj As Integer End Type
Dim Xs0 As Xs
Private Sub Command1_Click() ‘写入内容 Dim I%
Open "D:\TT\T.DAT" For Random As #1 Len = Len(Xs0)
For I = 1 To 5
Xs0.Xh = InputBox("XH") Xs0.Xm = InputBox("XM") Xs0.Cj = Val(InputBox("CJ")) Put #1, , Xs0 Next I Close #1 End Sub
‘输出小于60分的学生信息 Private Sub Command2_Click() Dim I%
Open "D:\TT\T.DAT" For Random As #1 Len = Len(Xs0)
For I = 1 To LOF(1) / Len(Xs0)
Get #1, , Xs0
If Xs0.Cj < 60 Then
Print Xs0.Xh, Xs0.Xm, Xs0.Cj End If Next I Close #1 End Sub
‘将不及格的成绩加5分
Private Sub Command3_Click() Dim I%
Open "D:\TT\T.DAT" For Random As #1 Len = Len(Xs0)
For I = 1 To LOF(1) / Len(Xs0) Get #1, , Xs0
If Xs0.Cj< 60 Then Xs0.Cj = Xs0.Cj + 5 Put #1, Seek(1) - 1, Xs0 End If Next I Close #1 End Sub
注:Seek(1) 1,表示将记录指针移到当前修改的记录上。
- 3 -