3.3计算机程序与程序设计语言(2)练习(原卷+解析卷)

文档属性

名称 3.3计算机程序与程序设计语言(2)练习(原卷+解析卷)
格式 zip
文件大小 2.8MB
资源类型 试卷
版本资源 粤教版(2019)
科目 信息技术(信息科技)
更新时间 2020-11-24 11:31:04

文档简介

中小学教育资源及组卷应用平台
3.3计算机程序与程序设计语言(2)-粤教版(2019)高中信息技术必修一练习
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.计算机能直接识别和执行的的语言是(

A.汇编语言
B.机器语言
C.高级语言
D.C语言
【答案】B
【解析】
【详解】
本题考查的是计算机语言。计算机语言有:机器语言、汇编语言、高级语言。机器语言能被计算机直接识别和执行。汇编语言、高级语言需要翻译成机器语言才能执行。故选项B正确。【版权所有:21教育】
2.现有流程图如下,关于流程图的说法正确的是(

A.运行后,输入语句一定会被执行三次
B.程序运行后,输入语句至少会被执行一次
C.该程序的循环次数为3次
D.第一次输入guess的值为8,则程序运行结果为“对不起,你失败了!”
【答案】B
【解析】
【分析】
【详解】
本题考查流程图相关知识点
输入语句执行次数,取决于cout值,不一定为三次。故选项A说法错误
程序是要与guess值进行比较,故输入语句至少会被执行一次。故本题选B选项
该程序的循环次数受cout制约,有多种可能。故选项C说法错误
第一次输入guess的值为8,则程序运行结果为“对不起,您猜错了!”。故选项D说法错误
3.计算机能够直接识别和执行的程序设计语言是(
)。
A.低级语言
B.汇编语言
C.机器语言
D.高级语言
【答案】C
【解析】
【详解】
本题考查的是程序语言。程序设计语言可以分为:机器语言、汇编语言(低级语言)、高级语言。机器语言是由二进制
0、1
代码指令构成,能够被计算机直接识别和执行。汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系。高级语言是面向用户的、基本上独立于计算机种类和结构的语言。故选项C正确。
4.x和n都是正整数且x<=n,下列选项中,与语句“x=x
Mod
n
+1
”功能相同的是(
)21世纪教育网版权所有
A.x=(x+1)
Mod
n
B.x=x+1
If
x=n
Then
x=1
C.x=x+1
If
x=n+1
Then
x=1
D.x=x+1
If
x=n+1
Then
x=0
【答案】C
【解析】
【详解】
本题考查赋值语句,VB运算。题干x=x
Mod
n
+1,有两种情况。(1)x5.下面程序执行结束,文本框
Text1
中显示(

Private
Sub
Form_Click()
a
=
"123":
b
=
"456"
c
=
Val(a)
+
Val(b)
Text1.Text=str(c\100)
End
Sub
A.123
B.3
C.5
D.579
【答案】C
【解析】
【分析】
【详解】
本题主要考查VB程序设计的相关知识。a="123"是将字符串型数据”123”赋值给a,b="456"
将字符串型数据”456”赋值给b,c=val(a)+val(b)是分别把a和b的值转换为数值型,然后相加,此时c=579,Text1.Text=str(c\100)是将c整除100后,转换为字符类型赋值给Text1.Text,因此,文本框
Text1
中显示5,故C选项正确。
二、简答题
6.高级语言的编译过程和解释过程各有什么优势和不足。
【答案】(1)编译型语言优点是程序执行速度快,程序执行效率高,同等条件下对系统要求较低。不足之处是跨平台性差些。
(2)解释型语言优点是不同系统平台间的兼容性高。不足之处是程序执行效率比较低。
【解析】
【详解】
本题考查的是高级语言的编译与解释的区别。(1)编译型语言优点是程序执行速度快,程序执行效率高,同等条件下对系统要求较低。不足之处是跨平台性差些。(2)解释型语言优点是不同系统平台间的兼容性高。不足之处是程序执行效率比较低。
7.程序设计语言有哪些,分别具备什么特点。
【答案】(1)机器语言:是由“0”和“1”这样的二进制代码指令组来表示。每一条机器指令包含两个主要部分:操作(指出计算机应做什么)和被操作的对象(指出处理的数据或它的地址),计算机能直接识别和执行。21cnjy.com
(2)汇编语言:使用了一种类似英文缩略词且带有助记性符号的语言,来替代一个特定的指令的二进制串,每条指令都和一条机器指令相对应。需要一个专门的语言翻译器,负责将程序中的每条语句都翻译成用二进制数表示的机器语言。
(3)高级语言:接近于数学语言或人的自然语言,并且不再过度地倚赖某种特定的机器或环境,必须经过翻译器将其翻译成机器语言。www-2-1-cnjy-com
【解析】
【分析】
【详解】
本题考查程序设计语言及其特点相关知识点
(1)机器语言:是由“0”和“1”这样的二进制代码指令组来表示。每一条机器指令包含两个主要部分:操作(指出计算机应做什么)和被操作的对象(指出处理的数据或它的地址),计算机能直接识别和执行。2·1·c·n·j·y
(2)汇编语言:使用了一种类似英文缩略词且带有助记性符号的语言,来替代一个特定的指令的二进制串,每条指令都和一条机器指令相对应。需要一个专门的语言翻译器,负责将程序中的每条语句都翻译成用二进制数表示的机器语言。
(3)高级语言:接近于数学语言或人的自然语言,并且不再过度地倚赖某种特定的机器或环境,必须经过翻译器将其翻译成机器语言。
三、填空题
8.以下流程图描述的算法,执行结果是_______。
【答案】@@@@########
【解析】
【分析】
【详解】
本题考查的知识点是程序的识读。
初始值t=0,n=1,执行输出“@@@@”语句,再执行判断n>2表达式,不符合该条件表达式,故执行输出“####”,再执行n=n+1语句,即n=2,再执行判断t=1表达式,不符合该条件表达式,故执行判断n>2表达式,不符合该条件表达式,故执行输出“####”,再执行n=n+1语句,即n=3,再执行判断t=1表达式,不符合该条件表达式,故执行判断n>2表达式,符合该条件表达式,故执行输出“”,
再执行t=1语句,再执行n=n+1语句,即n=4;再执行判断t=1表达式,符合该条件表达式,故程序结束。21
cnjy
com
所以流程图的执行结果为:@@@@########。
故答案为@@@@########。
9.编写VB程序,实现如下功能:单击“计算”按钮,在列表框List1中产生10个[1,99]随机数,文本框Text1显示相邻两个数字之间相差最大的差值。运行界面如图所示。
(1)窗体上,“计算”按钮的对象名是_____。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private
sub
cmd1_click(
)
Dim
b(1
to
10)
as
integer
Dim
I
as
integer,max
as
integer
,a
as
integer,
c
as
integer
Max=0
For
i=1
to
10
Randomize
A=int(rnd
99)+1
_______________________
List1.additem
str(a)
Next
i
For
i=2
to
10
C=________________
If
c>max
then
__________________
Next
I
____________________________
End
sub
【答案】Cmd1
b(i)=a
abs(b(i﹣1)﹣b(i))
max=c
text2.text=str(max)
【解析】
【详解】
(1)Cmd1_Click
Cmd1表示对象名称,Click表示它是一个点击事件,“计算”按钮的对象名是Cmd1;(2)①该处获取的a是一个随机数,需要将a存储在b(i)中,所以该处为:b(i)=a;
②次数将所有的随机数逐个比较,c表示临时生成的最大差值,所以该处为:abs(b(i﹣1)﹣b(i));③
根据条件If
c>max
,可以看出如果差值比最大差值大,改变最大差值max的值为c,所以该处为max=c,④结果在文本框中输出,所有答案为text2.text=str(max),此题同等类似答案都可,不唯一。
四、判断题
10.需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。
(____)
【答案】对
【解析】
【详解】
本题考查的是程序设计。需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。题干说法正确。
五、操作题
11.某数据解密算法描述如下:
(1)在输入的数字字符串中依次提取有效的密文,有效的密文的特点:
①是一组连续的,都小于5的三位数字串;②每个位置上的数字不能被重复提取;
(2)对有效密文进行解密的过程:
将密文作为一个五进制数转换为对应的十进制数值,根据ASCII字符的十进制编码表,得出对应的明文字符(提示:空格符所对应的ASCII码值为十进制数32,小写字母“z”所对应的ASCII码值为十进制数122).
例如,密文242转换成十进制数为72,对应的明文字符为大写字母“H”。
程序运行界面如下图所示,在文本框Text1中输入密文,单击“解密”按钮,在文本框Text2中输出解密后的明文密码。
(1)若输入的密文为“841497230235”,则对应的明文是__________。
(2)实现上述功能的VB代码如下,划线处的语句有错,应改为__________________。
(3)请在划线处填入合适的代码.
'以下代码是将有效密文数字转换为十进制数的函数
Function
conv(p
As
String)
As
Integer
Dim
k
As
Integer,
q
As
String,
i
As
Integer
k
=
0:
g
=
""
For
i
=
1
To
3
q
=
Mid(p,
i,
1)
________________
Next
i
conv
=
k
End
Function
Private
Sub
Command1_Click()
Dim
st
As
String,
p
As
String,
res
As
String
Dim
c1
As
String,
c2
As
String,
c3
As
String
Dim
i
As
Integer,
d
As
Integer,
n
As
Integer
st
=
Text1.Text:
n
=
Len(st)
i
=
1:
res
=
""
Do
While
i
<=
n

2
'提取有效密文,并进行转换
c1
=
Mid(st,
i,
1):
c2
=
Mid(st,
i
+
1,
1):
c3
=
Mid(st,
i
+
2,
1)【来源:21cnj
y.co
m】
If
c1<"5"
Or
c2
<"5"
Or
c3
<"5"
Then
______________
d=conv(p)
If
d
>=
32
And
d
<=
122
Then
res
=
res
+
Chr(d)
______________
Else
i
=
i
+
1
End
If
Loop
Text2.Text
=
res
End
Sub
【答案】mA
c1<"5"
And
c2<"5"
And
c3<"5"
或其它等价答案

k=k
5+Val(q)

k=k+Val(q)
5^(3-i)
或其它等价答案
②p=Mid(st,i,3)
③i=i+3
【解析】
【详解】
本题考查VB综合能力。(1)若输入的密文为“841497230235”,可知,414转为m,230转为A。(2)改错语句条件是同时小于5,故改为c1<“5”And
c2<“5”
And
c3<“5”(3)代码第一空,将有效密文数字转换为十进制数的函数,采用位权相加,故填入k=k
5+Val(q)。(4)代码第二空,将连续的三个字符取出,填入p=Mid(st,i,3)。(5)第三空,继续往下判断,故填入i=i+3。21教育名师原创作品
12.如果一个正整数从左到右读与从右到左读是一样的,就称它为回文式数(简称回数),如图321。“回数猜想”的主要思想是,对任意正整数,若它不是回数,则按下列算法即可获得一个回数:
(1)把该整数的数字顺序颠倒,求得该数的逆序数;
(2)将该整数和其对应的逆序数相加;
(3)若相加结果不是回数,则将结果作为新的整数,返回步骤(1)。
小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序功能如下:在文本框Text1中输入一个正整数,单击“验证”按钮(Command1),获取文本框Text1中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列表框List1中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,最后在列表框List1中输出验证结果。程序运行效果如图所示。
实现上述功能的VB程序如下:
Private
Sub
Command1_Click()
Dim
t
As
String,
a
As
Long,
b
As
Long
Dim
count
As
Integer
'
count用于存储回数猜想的验证次数
t
=
Text1.Text
count
=
1
Do
While
Check(t)
=
False
And
count
<=
10
a
=
Val(t)

c
=
a
+
b
List1.AddItem
Str(a)
&
"
+"
&
Str(b)
&
"
="
&
Str(c)
count
=
count
+
1
t
=
c
Loop
If
Check(t)
Then
List1.AddItem
"验证成功!"
Else
List1.AddItem
"10次内未验证成功!"
End
If
End
Sub
'
自定义函数Turn
Function
Turn(x
As
String)
As
Long
Dim
s
As
String,
i
As
Integer
s
=
""
For
i
=
Len(x)
To
1
Step
-1
s
=
s
&
Mid(x,
i,
1)
Next
i
Turn
=

End
Function
'
自定义函数Check,检查x是否为回文数
Function
Check(x
As
String)
As
Boolean
Dim
i
As
Integer
Check
=
True
For
i
=
1
To
Len(x)
\
2
Step
1
If
Mid(x,
i,
1)
<>

Then
Check
=
False
mid(x,len(x)+1-i,1)
Next
i
End
Function
(1)程序代码中,自定义函数Turn(x)的功能是
(2)请在划线处填入合适代码。
【答案】(1)
求x的逆序数
(2)①b=turn(t)
②Val(s)

mid(x,len(x)+1-i,1)
【解析】
【分析】
【详解】
本题主要考查VB程序的执行与调试。(1)函数Turn(x)通过for循环从后开始截取数实现求x的逆序数(2)①将文本框中的原始数赋值给a,将t的逆序数赋值给b,然后将两数相加,故此处填b=turn(t)
②最后将逆序数s的值转为整型赋值给Val(s)
③判断是不是回文数,截取两端的数进行比较是不是相等,故此处填
mid(x,len(x)+1-i,1)。
13.某高一班主任需要对刚入学的新生排座位,教室座位按
6

8
列进行摆放(班级学生数不超过48个),并且要求每列的学生按身高从低到高排列。编写
VB
程序,实现教室排座位功能:单击“读取数据”按钮
Command1,从数据库中读取该班所有同学的班内学号(两位数字)和身高数据(3
位数字),并在列表框
List1
中按
8
个一行显示;单击“排座位”按钮
Command2,对每列数据按身高从
小到大排列,并显示在列表框
List2
中。程序运行界面如图所示,请回答下列问题:
(1)要使窗体的标题栏文字显示为“排座位”,则应设置窗体的______属性(单选,填字母:A.Text
/
B.Name
/C.Caption)。
(2)程序中加框处代码有错,请改正。
________
(3)实现上述功能的
VB
程序如下,请在划线处填入合适的代码。
Const
m
=
6
Const
n
=
8
Dim
a(1
To
m
n)
As
String
'存储学号
Dim
b(1
To
m
n)
As
Integer
'存储身高
Dim
num
As
Integer
'班级总人数
Private
Sub
Command1_Click()
'从数据库中读取该班的学号和身高数据存入数组
a
和数组b,班级人数存入变量
num,代码略.
'以下代码为在列表框
List1
中输出数据
s
=
""
:
List1.AddItem
"




"
For
i
=
1
To
num
=s
=
s
&
Str(b(i))
&
"["
&
a(i)
&
"]
"
If
i
=
m
Then
List1.AddItem
s
:s
=
""
End
If
Next
i
If
s
<>
""
Then
List1.AddItem
s
End
Sub
Private
Sub
Command2_Click()
Dim
i
As
Integer,
j
As
Integer,
imin
As
Integerwww.21-cn-jy.com
Dim
t1
As
String,
t2
As
Integer,
s
As
String
List2.AddItem
"




"
For
i
=
1
To①_______
s
=
""
For
j
=
(i
-
1)
n
+
1
To
(i
-
1)
n
+
n
If
j
<=
num
Then
②__________
If
imin
<>
j
Then
t1
=
a(imin):
a(imin)
=
a(j):
a(j)
=
t1
t2
=
b(imin):
b(imin)
=
b(j):
b(j)
=
t2
End
If
s
=
s
&
Str(b(j))
&
"["
&
a(j)
&
"]
"
End
If
Next
j
List2.AddItem
s
Next
i
End
Sub
Function
fPos(p
As
Integer)
As
Integer
Dim
i
As
Integer,
j
As
Integer,
k
As
Integer
21教育网
k
=
p
For
i
=③_____________
If
b(i)
<
b(k)
Then
k
=
i
Next
i
fPos
=
k
End
Function
【答案】C
I
Mod
n=0或i/n=i\n或i/n=int(i/n)(注此处n可以用8替换.)其他等价答案
①(num-1)\n+1或其他等价答案
imin=fPos(j)
p+n
To
num
Step
n或其他等价答案
2-1-c-n-j-y
【解析】
【分析】
【详解】
本题主要考查VB程序的执行与调试。(1)要使窗体的标题栏文字显示为“排座位”,则应设置窗体的Caption属性,故本题选C选项。(2)输出数据为每8个数据一行,此处条件应为I是8(或N)的整数倍。所以此处要写的表达式意义为i能被n整除,故应改为iModn=0,或i/n=i\n或i/n=int(i/n),这里n可以用8代替。故此处填i
Mod
n=0或i/n=i\n或i/n=int(i/n)。(3)①根据班级实际人数num计算共几排,例如num<8为1排,8<=num<=16为2排,我们要的表达式要实现这个目标,表达式肯定要用到整除运算,如果用num直接整除8,num<8时则为0排。要实现有1排则表达式应为num\8+1。当num=8时代入这个表达式,如现成了两排与事实不符,为了让num=8时也是1排,则表达式中num需要减1。(num-1)\n+1,经过验证此表达式条例num变化实现。故此处填(num-1)\n+1。④根据Forj=(i-1)
n+1To(i-1)
n+n可知,该循环是生成第i行数据,比如当i等于2时,应选择从第2行到最后一行中该列身高最小值所在的位置,然后将该位置的数据和第j个元素交换。故该处为代码为fPos函数的调用,该函数返回第j个学生所在的这一列且行号大于等于i的身高最小的元素位置。故此处填imin=fPos(j)。⑤该自定义函数内的循环体功能是寻找第p个元素所在的这一列中最小身高所在的位置(但不包含第p个元素之前的身高数据)。因此该处所填代码为p+n
To
num
Step
n。
14.某校老师编写一个VB程序分析学生技术成绩,功能如下:在列表框List1中显示原始学生信息,单击“分析”按钮Command1,统计各班参加考试人数、高分(97及以上)人数和均分,并按班级均分从大到小显示在列表框List2中,程序运行界面如图所示。
实现上述功能的VB程序段如下,请回答下列问题:
(1)学生成绩存储在数据表中,其字段名是
(2)请在划线处填入合适的代码。
Dim
recCount
As
Integer
'存放学生人数
Dim
sClass(1
To
1000)
As
Integer
'存放学生班级
Dim
sName(1
To
1000)
As
String
'存放学生姓名
Dim
sScore(1
To
1000)
As
Integer
'存放学生成绩
Private
Sub
Command1_Click()
Dim
i
As
Integer,
t
As
Integer,
nc
As
Integer
Dim
a(1
To
20)
As
Integer,
b(1
To
20)
As
Integer
'分别存放班级高分人数和班级参加考试人数21·cn·jy·com
Dim
sum(1
To
20)
As
Integer,
ave(1
To
20)
As
Single
'分别存放班级总分和班级均分
Dim
c(1
To
20)
As
Integer
For
i
=
1
To
recCount

b(t)
=
b(t)
+
1
If
b(t)
=
1
Then
nc
=
nc
+
1

End
If
If
sScore(i)
>=
97
Then
a(t)
=
a(t)
+
1
sum(t)
=
sum(t)
+
sScore(i)
Next
i
For
i
=
1
To
nc
ave(c(i))
=
Int(sum(c(i))
/
b(c(i))
100
+
0.5)
/
10021·世纪
教育网
Next
i
For
i
=
1
To
nc
-
1
For
j
=
nc
To
i
+
1
Step
-1
If

Then
t
=
c(j):
c(j)
=
c(j
-
1):
c(j
-
1)
=
t
End
If
Next
j
Next
i
For
i
=
1
To
nc
List2.AddItem
Str(c(i))
+
"
"
+
Str(b(c(i)))
+
"
"
+
Str(a(c(i)))
+
"
"
+
Str(ave(c(i)))
Next
i
End
Sub
Private
Sub
Form_Load()
'链接数据库,代码略
recCount
=
0
Do
While
Not
rs.EOF
recCount
=
recCount
+
1
sClass(recCount)
=
rs.Fields("class")
sName(recCount)
=
rs.Fields("name")
sScore(recCount)
=
rs.Fields("score")
rs.MoveNext
Loop
'将数据显示在列表框List1中,代码略
End
Sub
【答案】(1)
score
(2)①t
=
sClass
(i)
②c(nc)=
t或其他相同答案
③ave(c(j))
>
ave(c(j
-1))【来源:21·世纪·教育·网】
【解析】
【分析】
【详解】
本题考查VB综合能力,VB连接数据库等(1)根据sScore(recCount)=rs.Fields(score)这条代码可知,学生成绩存储在数据表中,其字段名是score。(2)代码第一空,联系上下代码,可知此处关于t的赋值,t代表班级,故t=sClass(i)是该空答案。(3)代码第二空是c数组赋值,c数组中存放的是按顺寻访问到的是第几个班级,故c(nc)=t是该空答案。(4)第三空是冒泡排序内循环,根据平均分降序排序,故填入ave(c(j))
>
ave(c(j-1))。【出处:21教育名师】
15.某地区中考录取采用“平行志愿”的投档录取方式,该录取方式的具体规则为:
①根据考生的考试总分从高到低依次对考生的填报志愿进行投档;
②每位考生可填三个志愿学校,轮到该考生投档时依次对其三个志愿进行投档,若第一志愿学校还有剩余招生名额,就被第一志愿学校录取,结束该考生的投档,否则需对其后续志愿学校进行同样的投档操作,若该考生所填的所有志愿学校都没有剩余招生名额,则该考生无法被任何学校录取,该考生的投档结束。21
cnjy
com
③当所有学校都已完成计划招生数时,停止投档,录取结束。
编写
VB
程序,实现上述“平行志愿”投档录取的功能,单击“读取考生数据”按钮
Command1,
则从数据库中获取所有考生的成绩、志愿信息以及每个学校的计划招生数,单击“投档录取”按钮
Command2,开始进行投档录取,
并在列表框
List1
中输出每个学校的计划招生数、实际招生数、录取分数线和最低录取名次信息,程序运行界面如图所示。请回答下列问题:
(1)若
A
校计划招生
520
人,B
校计划招生480人,C校计划招生540人,某同学的考分名次为490名,其三个志愿学校依次为B校、A校、C校,且已知同名次的人数最多有30人,则该同学不可能被哪所学校录取:______。
(2)实现上述功能的
VB
程序如下,请在划线处填入合适的代码。
Const
schCnt
=
5
'
学校数量
Const
stuMaxCnt
=
10000
'
最多考生人数
Dim
zsCnt(1
To
schCnt)
As
Integer
'
存储每个学校的计划招生人数
Dim
zsCnt2(1
To
schCnt)
As
Integer
'
存储每个学校的实际招生人数
Dim
a(1
To
stuMaxCnt)
As
Single
'
存储考生总分成绩
Dim
b(1
To
stuMaxCnt
3)
As
Integer
'
存储考试志愿,每个考生有3个志愿,每个志愿为学校编号
Dim
stuCnt
As
Integer
'
实际考生总人数
Private
Sub
Command1_Click()
'从数据库中读取所有考生的总分和志愿信息存储到数组a和数组b
中(第1个考生总分存储到a(1),第1个考生的
3
个志愿分别存储到b(1)、b(2)、b(3)中,
…),然后按总分对数组
a
和数组
b
进行降序排序,总分相同时,需根据各科成绩决定排序先后,但名次相同,考生总人数存储到
stuCnt
变量中;
'读取每个学校的计划招生数,存储到数组
zsCnt
中;
'以上功能代码略
End
Sub
Private
Sub
Command2_Click()
Dim
sch
As
Integer
'
学校代码,

1~5
中的一个数字表示某学校代码
Dim
i
As
Integer,
j
As
Integer,
finished
As
Integer,prevScore
As
Single
Dim
stuMc(1
To
stuMaxCnt)
As
Integer
Dim
MinScore(1
To
schCnt)
As
Single
Dim
MinMc(1
To
schCnt)
As
Integer
finished
=
0:
i
=
1
prevScore
=
-1
Do
While①______
If
a(i)
=
prevScore
Then
stuMc(i)
=
stuMc(i
-
1)
Else
②____________
End
If
prevScore
=
a(i)
For
j
=
1
To
3
③________
If
zsCnt2(sch)
<
zsCnt(sch)
Then
zsCnt2(sch)
=
zsCnt2(sch)
+
1
MinScore(sch)
=
a(i)
MinMc(sch)
=
stuMc(i)
Exit
For
End
If
Next
j
finished
=
0
For
j
=
1
To
schCnt
If
zsCnt2(j)
=
zsCnt(j)
Then
finished
=
finished
+
1
End
If
Next
j
i
=
i
+
1
Loop
'在
List1
中输出每所学校的代码、计划招生数、实际招生数、录取分数线、最低录取名次,代码略
End
Sub
【答案】C校
i<=stuCntAndfinishedstuMc(i)=i
sch=b((i-1)
3+j)
【解析】
【详解】
本题主要考查VB程序的执行与调试。①某同学的考分名次为490名,且已知同名次的人数最多有30人,所以该同学可能被B校或A校录取,不可能被C校录取,故本题填C校。②此处通过while循环完成每个学校的录取工作,循环条件是,变量i小于等于学校数,并且已完成的学校数小于总的学校数,故此处填i<=stuCnt
And
finished3+j)。
21世纪教育网
www.21cnjy.com
精品试卷·第
2

(共
2
页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
3.3计算机程序与程序设计语言(2)-粤教版(2019)高中信息技术必修一练习
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.计算机能直接识别和执行的的语言是(

A.汇编语言
B.机器语言
C.高级语言
D.C语言
2.现有流程图如下,关于流程图的说法正确的是(

A.运行后,输入语句一定会被执行三次
B.程序运行后,输入语句至少会被执行一次
C.该程序的循环次数为3次
D.第一次输入guess的值为8,则程序运行结果为“对不起,你失败了!”
3.计算机能够直接识别和执行的程序设计语言是(
)。
A.低级语言
B.汇编语言
C.机器语言
D.高级语言
4.x和n都是正整数且x<=n,下列选项中,与语句“x=x
Mod
n
+1
”功能相同的是(
)21世纪教育网版权所有
A.x=(x+1)
Mod
n
B.x=x+1
If
x=n
Then
x=1
C.x=x+1
If
x=n+1
Then
x=1
D.x=x+1
If
x=n+1
Then
x=0
5.下面程序执行结束,文本框
Text1
中显示(

Private
Sub
Form_Click()
a
=
"123":
b
=
"456"
c
=
Val(a)
+
Val(b)
Text1.Text=str(c\100)
End
Sub
A.123
B.3
C.5
D.579
二、简答题
6.高级语言的编译过程和解释过程各有什么优势和不足。
7.程序设计语言有哪些,分别具备什么特点。
三、填空题
8.以下流程图描述的算法,执行结果是_______。
9.编写VB程序,实现如下功能:单击“计算”按钮,在列表框List1中产生10个[1,99]随机数,文本框Text1显示相邻两个数字之间相差最大的差值。运行界面如图所示。
(1)窗体上,“计算”按钮的对象名是_____。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private
sub
cmd1_click(
)
Dim
b(1
to
10)
as
integer
Dim
I
as
integer,max
as
integer
,a
as
integer,
c
as
integer2·1·c·n·j·y
Max=0
For
i=1
to
10
Randomize
A=int(rnd
99)+1
_______________________
List1.additem
str(a)
Next
i
For
i=2
to
10
C=________________
If
c>max
then
__________________
Next
I
____________________________
End
sub
四、判断题
10.需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。
(____)【来源:21·世纪·教育·网】
五、操作题
11.某数据解密算法描述如下:
(1)在输入的数字字符串中依次提取有效的密文,有效的密文的特点:
①是一组连续的,都小于5的三位数字串;②每个位置上的数字不能被重复提取;
(2)对有效密文进行解密的过程:
将密文作为一个五进制数转换为对应的十进制数值,根据ASCII字符的十进制编码表,得出对应的明文字符(提示:空格符所对应的ASCII码值为十进制数32,小写字母“z”所对应的ASCII码值为十进制数122).21教育名师原创作品
例如,密文242转换成十进制数为72,对应的明文字符为大写字母“H”。
程序运行界面如下图所示,在文本框Text1中输入密文,单击“解密”按钮,在文本框Text2中输出解密后的明文密码。21
cnjy
com
(1)若输入的密文为“841497230235”,则对应的明文是__________。
(2)实现上述功能的VB代码如下,划线处的语句有错,应改为__________________。
(3)请在划线处填入合适的代码.
'以下代码是将有效密文数字转换为十进制数的函数
Function
conv(p
As
String)
As
Integer
Dim
k
As
Integer,
q
As
String,
i
As
Integer
k
=
0:
g
=
""
For
i
=
1
To
3
q
=
Mid(p,
i,
1)
________________
Next
i
conv
=
k
End
Function
Private
Sub
Command1_Click()
Dim
st
As
String,
p
As
String,
res
As
String
Dim
c1
As
String,
c2
As
String,
c3
As
String
Dim
i
As
Integer,
d
As
Integer,
n
As
Integer
st
=
Text1.Text:
n
=
Len(st)
i
=
1:
res
=
""
Do
While
i
<=
n

2
'提取有效密文,并进行转换
c1
=
Mid(st,
i,
1):
c2
=
Mid(st,
i
+
1,
1):
c3
=
Mid(st,
i
+
2,
1)
If
c1<"5"
Or
c2
<"5"
Or
c3
<"5"
Then
______________
d=conv(p)
If
d
>=
32
And
d
<=
122
Then
res
=
res
+
Chr(d)
______________
Else
i
=
i
+
1
End
If
Loop
Text2.Text
=
res
End
Sub
12.如果一个正整数从左到右读与从右到左读是一样的,就称它为回文式数(简称回数),如图321。“回数猜想”的主要思想是,对任意正整数,若它不是回数,则按下列算法即可获得一个回数:www-2-1-cnjy-com
(1)把该整数的数字顺序颠倒,求得该数的逆序数;
(2)将该整数和其对应的逆序数相加;
(3)若相加结果不是回数,则将结果作为新的整数,返回步骤(1)。
小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序功能如下:在文本框Text1中输入一个正整数,单击“验证”按钮(Command1),获取文本框Text1中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列表框List1中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,最后在列表框List1中输出验证结果。程序运行效果如图所示。
实现上述功能的VB程序如下:
Private
Sub
Command1_Click()
Dim
t
As
String,
a
As
Long,
b
As
Long
Dim
count
As
Integer
'
count用于存储回数猜想的验证次数
t
=
Text1.Text
count
=
1
Do
While
Check(t)
=
False
And
count
<=
10
a
=
Val(t)

c
=
a
+
b
List1.AddItem
Str(a)
&
"
+"
&
Str(b)
&
"
="
&
Str(c)21cnjy.com
count
=
count
+
1
t
=
c
Loop
If
Check(t)
Then
List1.AddItem
"验证成功!"
Else
List1.AddItem
"10次内未验证成功!"
End
If
End
Sub
'
自定义函数Turn
Function
Turn(x
As
String)
As
Long
Dim
s
As
String,
i
As
Integer
s
=
""
For
i
=
Len(x)
To
1
Step
-1
s
=
s
&
Mid(x,
i,
1)
Next
i
Turn
=

End
Function
'
自定义函数Check,检查x是否为回文数
Function
Check(x
As
String)
As
Boolean
Dim
i
As
Integer
Check
=
True
For
i
=
1
To
Len(x)
\
2
Step
1
If
Mid(x,
i,
1)
<>

Then
Check
=
False
mid(x,len(x)+1-i,1)
Next
i
End
Function
(1)程序代码中,自定义函数Turn(x)的功能是
(2)请在划线处填入合适代码。
13.某高一班主任需要对刚入学的新生排座位,教室座位按
6

8
列进行摆放(班级学生数不超过48个),并且要求每列的学生按身高从低到高排列。编写
VB
程序,实现教室排座位功能:单击“读取数据”按钮
Command1,从数据库中读取该班所有同学的班内学号(两位数字)和身高数据(3
位数字),并在列表框
List1
中按
8
个一行显示;单击“排座位”按钮
Command2,对每列数据按身高从
小到大排列,并显示在列表框
List2
中。程序运行界面如图所示,请回答下列问题:
(1)要使窗体的标题栏文字显示为“排座位”,则应设置窗体的______属性(单选,填字母:A.Text
/
B.Name
/C.Caption)。
21教育网
(2)程序中加框处代码有错,请改正。
________
(3)实现上述功能的
VB
程序如下,请在划线处填入合适的代码。
Const
m
=
6
Const
n
=
8
Dim
a(1
To
m
n)
As
String
'存储学号
Dim
b(1
To
m
n)
As
Integer
'存储身高
Dim
num
As
Integer
'班级总人数
Private
Sub
Command1_Click()
'从数据库中读取该班的学号和身高数据存入数组
a
和数组b,班级人数存入变量
num,代码略.
'以下代码为在列表框
List1
中输出数据
s
=
""
:
List1.AddItem
"




"
For
i
=
1
To
num
=s
=
s
&
Str(b(i))
&
"["
&
a(i)
&
"]
"
If
i
=
m
Then
List1.AddItem
s
:s
=
""
End
If
Next
i
If
s
<>
""
Then
List1.AddItem
s
End
Sub
Private
Sub
Command2_Click()
Dim
i
As
Integer,
j
As
Integer,
imin
As
Integer21·cn·jy·com
Dim
t1
As
String,
t2
As
Integer,
s
As
String
www.21-cn-jy.com
List2.AddItem
"




"
For
i
=
1
To①_______
s
=
""
For
j
=
(i
-
1)
n
+
1
To
(i
-
1)
n
+
n
21·世纪
教育网
If
j
<=
num
Then
②__________
If
imin
<>
j
Then
t1
=
a(imin):
a(imin)
=
a(j):
a(j)
=
t1
2-1-c-n-j-y
t2
=
b(imin):
b(imin)
=
b(j):
b(j)
=
t2
【来源:21cnj
y.co
m】
End
If
s
=
s
&
Str(b(j))
&
"["
&
a(j)
&
"]
"
【版权所有:21教育】
End
If
Next
j
List2.AddItem
s
Next
i
End
Sub
Function
fPos(p
As
Integer)
As
Integer
Dim
i
As
Integer,
j
As
Integer,
k
As
Integer
k
=
p
For
i
=③_____________
If
b(i)
<
b(k)
Then
k
=
i
Next
i
fPos
=
k
End
Function
14.某校老师编写一个VB程序分析学生技术成绩,功能如下:在列表框List1中显示原始学生信息,单击“分析”按钮Command1,统计各班参加考试人数、高分(97及以上)人数和均分,并按班级均分从大到小显示在列表框List2中,程序运行界面如图所示。【出处:21教育名师】
实现上述功能的VB程序段如下,请回答下列问题:
(1)学生成绩存储在数据表中,其字段名是
(2)请在划线处填入合适的代码。
Dim
recCount
As
Integer
'存放学生人数
Dim
sClass(1
To
1000)
As
Integer
'存放学生班级
Dim
sName(1
To
1000)
As
String
'存放学生姓名
Dim
sScore(1
To
1000)
As
Integer
'存放学生成绩
Private
Sub
Command1_Click()
Dim
i
As
Integer,
t
As
Integer,
nc
As
Integer
Dim
a(1
To
20)
As
Integer,
b(1
To
20)
As
Integer
'分别存放班级高分人数和班级参加考试人数
Dim
sum(1
To
20)
As
Integer,
ave(1
To
20)
As
Single
'分别存放班级总分和班级均分
Dim
c(1
To
20)
As
Integer
For
i
=
1
To
recCount

b(t)
=
b(t)
+
1
If
b(t)
=
1
Then
nc
=
nc
+
1

End
If
If
sScore(i)
>=
97
Then
a(t)
=
a(t)
+
1
sum(t)
=
sum(t)
+
sScore(i)
Next
i
For
i
=
1
To
nc
ave(c(i))
=
Int(sum(c(i))
/
b(c(i))
100
+
0.5)
/
100
Next
i
For
i
=
1
To
nc
-
1
For
j
=
nc
To
i
+
1
Step
-1
If

Then
t
=
c(j):
c(j)
=
c(j
-
1):
c(j
-
1)
=
t
End
If
Next
j
Next
i
For
i
=
1
To
nc
List2.AddItem
Str(c(i))
+
"
"
+
Str(b(c(i)))
+
"
"
+
Str(a(c(i)))
+
"
"
+
Str(ave(c(i)))
Next
i
End
Sub
Private
Sub
Form_Load()
'链接数据库,代码略
recCount
=
0
Do
While
Not
rs.EOF
recCount
=
recCount
+
1
sClass(recCount)
=
rs.Fields("class")
sName(recCount)
=
rs.Fields("name")
sScore(recCount)
=
rs.Fields("score")
rs.MoveNext
Loop
'将数据显示在列表框List1中,代码略
End
Sub
15.某地区中考录取采用“平行志愿”的投档录取方式,该录取方式的具体规则为:
①根据考生的考试总分从高到低依次对考生的填报志愿进行投档;
②每位考生可填三个志愿学校,轮到该考生投档时依次对其三个志愿进行投档,若第一志愿学校还有剩余招生名额,就被第一志愿学校录取,结束该考生的投档,否则需对其后续志愿学校进行同样的投档操作,若该考生所填的所有志愿学校都没有剩余招生名额,则该考生无法被任何学校录取,该考生的投档结束。
③当所有学校都已完成计划招生数时,停止投档,录取结束。
编写
VB
程序,实现上述“平行志愿”投档录取的功能,单击“读取考生数据”按钮
Command1,
则从数据库中获取所有考生的成绩、志愿信息以及每个学校的计划招生数,单击“投档录取”按钮
Command2,开始进行投档录取,
并在列表框
List1
中输出每个学校的计划招生数、实际招生数、录取分数线和最低录取名次信息,程序运行界面如图所示。请回答下列问题:
(1)若
A
校计划招生
520
人,B
校计划招生480人,C校计划招生540人,某同学的考分名次为490名,其三个志愿学校依次为B校、A校、C校,且已知同名次的人数最多有30人,则该同学不可能被哪所学校录取:______。21
cnjy
com
(2)实现上述功能的
VB
程序如下,请在划线处填入合适的代码。
Const
schCnt
=
5
'
学校数量
Const
stuMaxCnt
=
10000
'
最多考生人数
Dim
zsCnt(1
To
schCnt)
As
Integer
'
存储每个学校的计划招生人数
Dim
zsCnt2(1
To
schCnt)
As
Integer
'
存储每个学校的实际招生人数
Dim
a(1
To
stuMaxCnt)
As
Single
'
存储考生总分成绩
Dim
b(1
To
stuMaxCnt
3)
As
Integer
'
存储考试志愿,每个考生有3个志愿,每个志愿为学校编号
Dim
stuCnt
As
Integer
'
实际考生总人数
Private
Sub
Command1_Click()
'从数据库中读取所有考生的总分和志愿信息存储到数组a和数组b
中(第1个考生总分存储到a(1),第1个考生的
3
个志愿分别存储到b(1)、b(2)、b(3)中,
…),然后按总分对数组
a
和数组
b
进行降序排序,总分相同时,需根据各科成绩决定排序先后,但名次相同,考生总人数存储到
stuCnt
变量中;
'读取每个学校的计划招生数,存储到数组
zsCnt
中;
'以上功能代码略
End
Sub
Private
Sub
Command2_Click()
Dim
sch
As
Integer
'
学校代码,

1~5
中的一个数字表示某学校代码
Dim
i
As
Integer,
j
As
Integer,
finished
As
Integer,prevScore
As
Single
Dim
stuMc(1
To
stuMaxCnt)
As
Integer
Dim
MinScore(1
To
schCnt)
As
Single
Dim
MinMc(1
To
schCnt)
As
Integer
finished
=
0:
i
=
1
prevScore
=
-1
Do
While①______
If
a(i)
=
prevScore
Then
stuMc(i)
=
stuMc(i
-
1)
Else
②____________
End
If
prevScore
=
a(i)
For
j
=
1
To
3
③________
If
zsCnt2(sch)
<
zsCnt(sch)
Then
zsCnt2(sch)
=
zsCnt2(sch)
+
1
MinScore(sch)
=
a(i)
MinMc(sch)
=
stuMc(i)
Exit
For
End
If
Next
j
finished
=
0
For
j
=
1
To
schCnt
If
zsCnt2(j)
=
zsCnt(j)
Then
finished
=
finished
+
1
End
If
Next
j
i
=
i
+
1
Loop
'在
List1
中输出每所学校的代码、计划招生数、实际招生数、录取分数线、最低录取名次,代码略
End
Sub
21世纪教育网
www.21cnjy.com
精品试卷·第
2

(共
2
页)
21世纪教育网(www.21cnjy.com)