2021年上海市高等学校计算机等级考试模拟卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海市高等学校计算机级别考试模仿卷
二级 程序设计( C 卷)
(本试卷考试时间 120 分钟)
一、单选题 ( 本大题 15 道小题,每小题 1 分,共 15 分),从下面题目给出A、B、C、D四个可供选取答案中选取一种对的答案。
1. 如果在实验课上进行程序调试,运营时遇到意外出错,最有效做法是:看清系统错误因素提示信息,____________,以拟定错误因素。
B
A. 单击“调试”按钮,然后查看当时变量值
B. 单击“结束”按钮,检查程序代码
C. 举手请教师帮忙
D. 上网查找因素
2. 要想从子过程调用后返回两个成果,下面子过程语句阐明合法是_______。
C
A. Sub f2(ByVal n%,ByVal m%)
B. Sub f1(ByRef n%,ByVal m%)
C. Sub f1(ByRef n%,ByRef m%)
D. Sub f1(ByVal n%,ByRef m%)
3. 为了使控件对象不响应顾客事件,需要____________。
A
A. 设立控件Enabled属性为False
B. 设立控件TabStop属性为False
C. 设立控件TabStop属性为True
D. 设立控件TabIndex属性为0
4. 在用通用对话框控件建立打开文献对话框时,在文献列表框中只容许显示txt和rtf
类型文献,则Filter属性对的设立是_________。
D
A. 文本文献(.txt)||*.txt||rtf||*.rtf
B. 文本文献(.txt)(*.txt)(rtf)(*.rtf)
C. 文本文献*.txt|rtf*.rtf
D. 文本文献(.txt)|*.txt|rtf|*.rtf
5. 设变量x = 1,y = -1,a = 5,b = -5,则如下表达式值为“真”是____________。
B
A. x+a <= b+y
B. x > 0 And y < 0
C. a = b Or x<y
D. x+y > a+b And Not (y < b)
6. 下列可作为Visual Basic 变量名是____________。
A
A. 3S
B. Print
C. Select My Name
D. Select_1
7. 要向C盘根目录下名为my.txt顺序文献中读出数据,应先使用_________语句打开文献。
B
A. FileOpen(1,"my.txt ",OpenMode.Input)
B. FileOpen(1,"c:\my.txt",OpenMode.Input)
C. FileOpen(1," c:\my.txt",OpenMode.Output)
D. FileOpen(1," c:\my.txt",OpenMode.Append)
8. 假定焦点已经位于文本框TextBox1中,则可以触发 KeyPress 事件操作是
____________。
D
A. 单击鼠标
B. 双击文本框
C. 鼠标滑过文本框
D. 按下键盘上某个键
9. 在自定义函数中,可以通过____________返回值。
B
A. Sub
B. Function
C. 函数名
D. ByVal参数
10. 在程序运营期间可以用____________办法把图形装入窗体、图片框。
D
A. AutoSize
B. OpenFile
C. Picture
D. Image.FromFile
11. 单击滚动条控件箭头按钮,滑块移动幅度与__________属性设立关于。
B
A. LargeChange
B. SmallChange
C. Max
D. Min
12. 如下能判断与否到达文献尾函数是__________。
D
A. BOF
B. LOC
C. LOF
D. EOF
13. 列表框ListBox1中已有10个列表项,要显示列表框ListBox1最后一项,有两种表达法, __________是对的。
A
A. ListBox1.Items(ListBox1.Items.Count - 1)
ListBox1.Items (9)
B. ListBox1.Items(ListBox1.Items.Count)
ListBox1.Items(9)
C. ListBox1.Items(ListBox1.Items.Count - 1)
ListBox1.Items(10)
D. ListBox1.Items(ListBox1.Items.Count)
ListBox1.Items(10)
14. 复选框对象如果被选中,它Checked属性值为_________。
C
A. 1
B. 0
C. True
D. False
15. 已知最多有10个元素数组a,用变量n表达它上界,有两种赋值语句,_______是对的。
B
A. n=UBound(a)
n=10
B. n=UBound(a)
n=9
C. n=UBound(a)+1
n=9
D. n=UBound(a)+1
n=10
二、程序填空题 ( 本大题 3 道小题,每空 2.5 分,共 30 分)。
1. 单击窗体读当前文献夹中文本文献data.txt数据,找出其中年龄最大者年龄、姓名和所有人数,输出并保存在当前文献夹中result.txt。
data.txt数据格式为:
王海涛,18
李林,20
……
Private Sub Form1_Click(…) Handles Me.Click
Dim Name$,Age%,maxName$,maxAge%,n%
n = 0
Name = ""
maxName = ""
maxAge = 0
FileOpen(1,"data.txt",OpenMode.Input)
Do While NOT EOF(1)
Input(1,Name)
Input(1,Age)
n = n + 1
If Age > maxAge Then
MaxAge=Age
maxName = Name
End If
Loop
FileClose(1)
Label1.text = "最大年龄:" & maxAge & vbCrLf & "最大年龄姓名:" & maxName & vbCrLf & "人数:" & n
FileOpen(2,"result.txt",_____(3)_______)
Print(2,maxName,maxAge,n)
FileClose(2)
End Sub
2. 单击按钮执行在输入样本串中查找字串,删除字串字符后输出至成果文本框。
用复选框可选取查找方式与否区别大小写。
Private Sub Button1_Click(…) Handles Button1.Click
Dim ss$,s0$,len0%,ms$,i%
ss = TextBox1.Text
s0 = TextBox2.Text
If _____(1)_____Then
s0 = _____(2)______
End If
len0 = Len(s0)
For i = 1 To Len(ss) - len0 + 1
ms = _____(3)_____
If CheckBox1.Checked Then
ms = UCase(ms)
End If
If (ms = s0) Then
ss = Mid(ss,1,i - 1) + Mid(ss,i + len0)
i = i - 1
End If
Next i
TextBox3.Text = _____(4)_____
End Sub
3. 单击窗体执行将所输入整数插入排序后原数组元素恰当位置。
Function Insert(ByRef s%(),ByVal key As Integer) As Integer
Dim k%,i%,j%
k = _____(1)______
For i = 0 To UBound(s)
If key < s(i) Then
k = i
____(2)______
End If
Next i
ReDim Preserve s(UBound(s) + 1)
For j = UBound(s) - 1 To k Step -1
_____(3)______
Next j
s(k) = key
Insert = UBound(s)
End Function
Private Sub Form1_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Click Dim i%,p%,m%
Dim a%() = {1,3,6,8,9,13,17,20,25}
Label1.Text = ""
For i = 0 To UBound(a)
______(4)______
Next i
Label1.Text &= vbCrLf
p = InputBox("请输入要插入数:")
m = _____(5)______
For i = 0 To m
Label1.Text &= a(i) & " "
Next i
Label1.Text &= vbCrLf
End Sub
三、程序调试题(共20分,每错2.5分,第1题有2处错,第2题有3处错,第3题有3处错)
启动解决方案文献"C:\ks\改错.sln",请调试改正,并按原文献名和位置保存。
对的成果见样例"c:\样张\改错样例.exe"。
改错办法:不能修改或重新定义变量,不容许增长或删除语句,但可以修改语句,所修改语句必要在句尾加上注释标记'***********。
调试改错题1:
输入18位身份证号码,通过第7~10位取出出生年,给出寄语。
对1959(含)出生人,寄语为"步入中老年,请您注意身体!";对1960年代和1990年代出生人,寄语均为"60后和后要多沟通,避免代沟!";对于1970~1989年出生人,寄语为"70、80后青年,祝你工作顺利!";对于后出生人,寄语为"小朋友,祝你茁壮成长!";别的判断为输入错误,清空文本框并置焦点。
Private Sub Button1_Click(…) Handles Button1.Click
Dim bthyear%,lbltx$
bthyear = Val(Mid(TextBox1.Text,7,4))
Select Case bthyear
Case Is <= 1959
lbltx = "步入中老年,请您注意身体!"
Case (bthyear>=1960 and bthyear<=1969) or (bthyear>=1990 and bthyear<=1999)
lbltx = "60后和后要多沟通,避免代沟!"
Case "1980" to "1989"
lbltx = "70、80后青年,祝你工作顺利!"
Case ,, To ,Is >
lbltx = "小朋友,祝你茁壮成长!"
Case Else
lbltx = "输入错了吧?!请重新输入"
TextBox1.Text = ""
TextBox1.Focus()
End Select
Label1.Text = lbltx
End Sub
调试改错题2:产生隔行轮换显示字母和数字菱形图案(规律如图)Private Sub Button2_Click(…) Handles Button2.Click
Dim i%,j%,k%
Label2.Text = ""
For i = 0 To 14
If i <= 7 Then
k = i
Else
k = 14 - i
End If
Label2.Text &= Space(7 - k)
If k Mod 2 Then
For j = k To 3 * k
Label2.Text &= Chr(66 + k)
Next j
Else
For j = k To 2 * k
Label2.Text &= k
Next j
End If
Label2.Text &= vbCrLf
Next i
End Sub
调试改错题3:
随机产生1~20个大写字符串,并随机产生一种大写字母分别填入两个文本框中,记录这个大写字母在该串中浮现次数。
Private Sub Button3_Click(…) Handles Button3.Click
Dim str1$,str2$,i%,j%,sum%
TextBox2.Text = ""
i = Int(Rnd() * 20 + 1) '产生1~20之间随机整数
For j = 1 To i
TextBox2.Text &= Chr(64 + Int(Rnd() * 26 + 1)) '随机产生大写字母字符串 Next
TextBox3.Text = Chr(Int(Rnd() * 26 + 1))
str1 = TextBox2.Text
str2 = TextBox3.Text
sum = 1
For j = 1 To i
If Left(str1,j,1) = str2 Then
sum += 1
End If
Next
If sum <> 0 Then
Label3.Text = str2 & "在字符串中浮现了" & sum & "次。
"
Else
Label3.Text = str2 & "在字符串中没有浮现过"
End If
End Sub
四、编程题(35分)
1.在C:\KS 目录下新建项目,解决方案文献为bct0.sln。
2.参见样例"c:\样张\编程题样例.exe",在Form1窗体上放置两个列表框。
建立如下菜单:
3.单击菜单"产生"随机产生10个大写字母,填入ListBox1中。
单击菜单"筛选"将列表框1中"K"后来(含"K",ASCII码值为75)字母选出,填入ListBox2中。
4.单击"绘图"菜单项时,显示窗体2;单击"结束"菜单项时,结束程序运营。
5.在窗体2上单击"绘图"命令按钮,设立画布原点(x0,y0) 为 (200,100),按如下公式绘制,当Y>0为红色图形,Y<0为蓝色图形,其中40为Y轴显示放大倍数、20为X轴放大倍数,t= -3π~3π:
x = x0+ t * 20
y = y0+ Sin(t) * 40
(提示:函数图形通过计算Y值,画垂直于X轴直线显示)单击"返回"命令按钮则关闭窗体2,返回窗体1。