高中信息技术粤教版:计算机程序与程序设计语言同步练习_第1页
高中信息技术粤教版:计算机程序与程序设计语言同步练习_第2页
高中信息技术粤教版:计算机程序与程序设计语言同步练习_第3页
高中信息技术粤教版:计算机程序与程序设计语言同步练习_第4页
高中信息技术粤教版:计算机程序与程序设计语言同步练习_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.3计算机程序与程序设计语言(2)

学校:姓名:班级:考号:

一、选择题

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=xModn+l”功能相同的是()

A.x=(x+l)Modn

B.x=x+l

Ifx=nThenx=l

C.x=x+l

Ifx=n+lThenx=l

D.x=x+l

Ifx=n+lThenx=0

5.下面程序执行结束,文本框Textl中显示()

PrivateSubForm__Click()

a="123":b="456"

c=Val(a)+Val(b)

Textl.Text=str(c\100)

EndSub

A.123B.3C.5D.579

二、简答题

6.高级语言的编译过程和解释过程各有什么优势和不足。

7.程序设计语言有哪些,分别具备什么特点。

三、填空题

8.以下流程图描述的算法,执行结果是

9.编写VB程序,实现如下功能:单击“计算”按钮,在列表框Listl中产生10个[1,

99]随机数,文本框Textl显示相邻两个数字之间相差最大的差值。运行界面如图所示.

(1)窗体上,“计算”按钮的对象名是O

(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。

Privatesubcmdl_click()

Dimb(lto10)asinteger

DimIasinteger,maxasinteger,aasinteger;casinteger

Max=0

Fori=lto10

Randomize

A=int(rnd*99)+1

Listl.additemstr(a)

Nexti

Fori=2to10

C=________________

Ifc>maxthen__________________

NextI

Endsub

四、判断题

10.需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计

就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。

()

五、操作题

11.某数据解密算法描述如下:

(1)在输入的数字字符串中依次提取有效的密文,有效的密文的特点:

①是一组连续的,都小于5的三位数字串;②每个位置上的数字不能被重复提取:

(2)对有效密文进行解密的过程:

将密文作为一个五进制数转换为对应的十进制数值,根据ASCII字符的十进制编码表,

得出对应的明文字符(提示:空格符所对应的ASCII码值为十进制数32,小写字母“z”

所对应的ASCII码值为十进制数122).

例如,密文242转换成十进制数为72,对应的明文字符为大写字母“H”。

程序运行界面如下图所示,在文本框Textl中输入密文,单击“解密”按钮,在文本

框Text2中输出解密后的明文密码。

(1)若输入的密文为“841497230235”,则对应的明文是.

(2)实现上述功能的VB代码如下,划线处的语句有错,应改为

(3)请在划线处填入合适的代码.

'以下代码是将有效密文数字转换为十进制数的函数

Functionconv(pAsString)AsInteger

DimkAsInteger,qAsString,iAsInteger

k=O:g=""

Fori=1To3

q=Mid(p,i,1)

Nexti

conv=k

EndFunction

PrivateSubCommandl_Click()

DimstAsString,pAsString,resAsString

DimclAsString,c2AsString,c3AsString

DimiAsInteger,dAsInteger,nAsInteger

st=Textl.Text:n=Len(st)

i=1:res="n

DoWhilei<=n-2'提取有效密文,并进行转换

cl=Mid(st,i,1):c2=Mid(st,i+1,1):c3=Mid(st,i+2,1)

IfOrc2<”5"Orc3<“5"Then

d=conv(p)

Ifd>=32Andd<=122Thenres=res+Chr(d)

Else

i=i+1

EndIf

Loop

Text2.Text=res

EndSub

12.如果一个正整数从左到右读与从右到左读是一样的,就称它为回文式数(简称回

数),如图321。“回数猜想”的主要思想是,对任意正整数,若它不是回数,则按下

列算法即可获得一个回数:

(1)把该整数的数字顺序颠倒,求得该数的逆序数;

(2)将该整数和其对应的逆序数相加;

(3)若相加结果不是回数,则将结果作为新的整数,返回步骤(1)»

小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序

功能如下:在文本框Textl中输入一个正整数,单击“验证”按钮(Command1),获

取文本框Textl中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列

表框Listl中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,

最后在列表框Listl中输出验证结果。程序运行效果如图所示。

5回教猜想|o||回~~||w£3w|

正整数:一||…际"…||

199+991=1190

1190+911=2101

2101+1012=3113

始证成功!

实现上述功能的VB程序如下:

PrivateSubCommandl_Click()

DimtAsString,aAsLong,bAsLong

DimcountAsInteger'count用于存储回数猜想的验证次数

t=Text1.Text

count=1

DoWhileCheck⑴=FalseAndcount<=10

a=Val(t)

c=a+b

Listl.AddltemStr(a)&"+"&Str(b)&"="&Str(c)

count=count+1

t=c

Loop

IfCheck(t)Then

Listl.Addltem”验证成功!”

Else

Listl.Addltem”10次内未验证成功!”

EndIf

EndSub

,自定义函数Turn

FunctionTurn(xAsString)AsLong

DimsAsString,iAsInteger

smi

Fori=Len(x)To1Step-1

s=s&Mid(xz\,1)

Nexti

Turn=_________②________

EndFunction

,自定义函数Check,检查x是否为回文数

FunctionCheck(xAsString)AsBoolean

DimiAsInteger

Check=True

Fori=1ToLen(x)\2Step1

IfMid(x,i,1)<>(3)ThenCheck=False

mid(x,len(x)+l-i,l)

Nexti

EndFunction

(1)程序代码中,自定义函数Turn(x)的功能是

(2)请在划线处填入合适代码。

13.某高一班主任需要对刚入学的新生排座位,教室座位按6排8列进行摆放(班

级学生数不超过48个),并且要求每列的学生按身高从低到高排列。编写VB程序,

实现教室排座位功能:单击“读取数据”按钮Commandl,从数据库中读取该班所有

同学的班内学号(两位数字)和身高数据(3位数字),并在列表框Listl中按8个

一行显示;单击“排座位”按钮Command2,对每列数据按身高从小到大排列,并

显示在列表框List2中。程序运行界面如图所示,请回答下列问题:

0琲座位I。I回I—W

[T

171[01]166(02]670r3J15804]159[05]173(06]150[07]172[08]

LJ

174[09]171[10]51r11T162[12]175(13]173[14]161[15]178[16]

781L9J

176[17]151(18]rT160[20]165[21]173(22]151[23]167[24]

682L7J

164[25]158[26]rT169[28]157[29]158[30]174⑶]174[32]

773L5J

167[33]179(34]704r3T156[36]170[37]179(38]157[39]166[40]

153[41]179(42]LJ150[44]167[45]

排座位

rT

51lJ

153141]151(18]7r11T150[44]157[29]158[30]150[07]166[40]

6LJ

164[25]158(26)r03T156[36]159(05]173(14]151[23]167[24]

68L27J

167[33]166(02]rT158[04]165[21]173[22]157[39]172[08]

70l43J

171[01]171(10)rT160[20]167[45]173(06]161[15]174[32]

77L35J

174[09]179(34]78r19T182[12]170[37]179(38]174[31]178[16]

176[17]179[42]LJ169[28]175[131

(1)要使窗体的标题栏文字显示为“排座位”,则应设置窗体的属性(单选,

填字母:

A.Text/B.Name/C.Caption)o

(2)程序中加框处代码有错,请改正。

(3)实现上述功能的VB程序如下,请在划线处填入合适的代码。

Constm=6

Constn=8

Dima(lTom*n)AsString1存储学号

Dimb(lTom*n)AsInteger,存储身高

DimnumAsInteger,班级总人数

PrivateSubCommandl_Click()

'从数据库中读取该班的学号和身高数据存入数组a和数组b,班级人数存入变量

num,代码略.

'以下代码为在列表框Listl中输出数据

s:”“:Listl.Addltem”(讲台)“

Fori=1Tonum

=s=s&Str(b(i))&"["&a(i)&"]"

Ifi=mThen

Listl.Addltems:s=',H

EndIf

Nexti

Ifs<>""ThenListl.Addltems

EndSub

PrivateSubCommand2__Click()

DimiAsInteger,jAsInteger;iminAsInteger

DimtlAsString,t2AsInteger,sAsString

List2.Addltem"(讲台)

Fori=1To①

s=""

Forj=(i-1)*n+1To(i-1)*n+n

Ifj<=numThen

____

Ifimin<>jThen

tl=a(imin):a(imin)=a(j):a(j)=tl

t2=b(imin):b(imin)=b(j):b(j)=t2

EndIf

s=s&Str(b(j))&"["&a(j)&"]"

EndIf

Nextj

List2.Additems

NextiEndSub

FunctionfPos(pAsInteger)AsInteger

DimiAsInteger,jAsInteger;kAsInteger

k=p

Fori=®_____________

Ifb(i)<b(k)Thenk=i

Nexti

fPos=kEndFunction

14.某校老师编写一个VB程序分析学生技术成绩,功能如下:在列表框Listl中显示

原始学生信息,单击“分析”按钮Commandl,统计各班参加考试人数、高分(97及

以上)人数和均分,并按班级均分从大到小显示在列表框List2中,程序运行界面如图

所示。

o班级技术瞰s分折

原始数据分析结果

瞬班级参湾人数高分人数平均分

942431992.95

915531792.36

97733788.73

102031285.29

971340384.63

88

97

97

82

10

91

85

实现上述功能的VB程序段如下,请回答下列问题:

(1)学生成绩存储在数据表中,其字段名是

(2)请在划线处填入合适的代码。

DimrecCountAsInteger'存放学生人数

DimsClassflTo1000)AsInteger,存放学生班级

DimsName(lTo1000)AsString'存放学生姓名

DimsScore(lTo1000)AsInteger'存放学生成绩

PrivateSubCommandl_Click()

DimiAsInteger,tAsInteger,ncAsInteger

Dima(lTo20)AsInteger,b(lTo20)AsInteger,分别存放班级高分人

数和班级参加考试人数

Dimsum(lTo20)AsInteger,ave(lTo20)AsSingle,分别存放班级总分和班

级均分

Dimc(lTo20)AsInteger

Fori=1TorecCount

b(t)=b(t)+1

Ifb(t)=1Then

nc=nc+1

EndIf

IfsScore(i)>=97Thena(t)=a(t)+1

sum(t)=sum(t)+sScore(i)

Nexti

Fori=1Tonc

ave(c(i))=lnt(sum(c(i))/b(c(i))*100+0.5)/100

Nexti

Fori=1Tonc-1

Forj=ncToi+1Step-1

If③Then

t=c(j):c(j)=c(j-1):c(j-1)=t

EndIf

Nextj

Nexti

Fori=1Tonc

List2.AddltemStr(c(i))+n"+Str(b(c(i)))+""+Str(a(c(i)))+""+Str(ave(c(i)))

Next।

EndSub

PrivateSubForm_Load()

'链接数据库,代码略

recCount=0

DoWhileNotrs.EOF

recCount=recCount+1

sClass(recCount)=rs.Fields("class")

sName(recCount)=rs.Fields("name")

sScore(recCount)=rs.Fields("score")

rs.MoveNext

Loop

瞪数据显示在列表框Listl中,代码略

EndSub

15.某地区中考录取采用“平行志愿”的投档录取方式,该录取方式的具体规则为:

①根据考生的考试总分从高到低依次对考生的填报志愿进行投档;

②每位考生可填三个志愿学校,轮到该考生投档时依次对其三个志愿进行投档,若第

一志愿学校还有剩余招生名额,就被第一志愿学校录取,结束该考生的投档,否则需

对其后续志愿学校进行同样的投档操作,若该考生所填的所有志愿学校都没有剩余招

生名额,则该考生无法被任何学校录取,该考生的投档结束。

③当所有学校都已完成计划招生数时,停止投档,录取结束。

编写VB程序,实现上述“平行志愿”投档录取的功能,单击“读取考生数据”按钮

Commandl,则从数据库中获取所有考生的成绩、志愿信息以及每个学校的计划招生

数,单击“投档录取”按钮Command2,开始进行投档录取,并在列表框Listl中

输出每个学校的计划招生数、实际招生数、录取分数线和最低录取名次信息,程序运

行界面如图所示。请回答下列问题:

0平行志愿费栏录取

分取

学校代码计划招生数买际招生数s5

16206205461

2680680505N.1292

3480480481752读取考生数据

44804804568.2237

5520520422758

投档录取

(1)若A校计划招生520人,B校计划招生480人,C校计划招生540人,某同

学的考分名次为490名,其三个志愿学校依次为B校、A校、C校,且已知同名次的

人数最多有30人,则该同学不可能被哪所学校录取:o

(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。

ConstschCnt=5'学校数量

ConststuMaxCnt=10000'最多考生人数

DimzsCnt(lToschCnt)AsInteger'存储每个学校的计划招生人数

DimzsCnt2(lToschCnt)AsInteger'存储每个学校的实际招生人数

Dima(lTostuMaxCnt)AsSingle1存储考生总分成绩

Dimb(lTostuMaxCnt*3)AsInteger'存储考试志愿,每个考生有3个志愿,每个志愿为

学校编号

DimstuCntAsInteger'实际考生总人数

PrivateSubCommandl_Click()

'从数据库中读取所有考生的总分和志愿信息存储到数组a和数组b中(第1个考生总

分存储到a(l),第1个考生的3个志愿分别存储到b(l)、b(2)、b(3)中然后按总分

对数组a和数组b进行降序排序,总分相同时,需根据各科成绩决定排序先后,但名次

相同,考生总人数存储到stuCnt变量中;

,读取每个学校的计划招生数,存储到数组zsCnt中;

'以上功能代码略

EndSub

PrivateSubCommand2__Click()

DimschAsInteger'学校代码,用广5中的一个数字表示某学校代码

DimiAsInteger,jAsInteger,finishedAslnteger,prevScoreAsSingle

DimstuMc(lTostuMaxCnt)AsInteger

DimMinScore(lToschCnt)AsSingle

DimMinMc(lToschCnt)AsInteger

finished=0:i=1

prevScore=-1

DoWhile①

Ifa(i)=prevScoreThen

stuMc(i)=stuMc(i-1)

Else

②____________

EndIf

prevScore=a(i)

Forj=lTo3

{3)

IfzsCnt2(sch)<zsCnt(sch)Then

zsCnt2(sch)=zsCnt2(sch)+1

MinScore(sch)=a(i)

MinMc(sch)=stuMc(i)

ExitFor

EndIf

Nextj

finished=0

Forj=1ToschCnt

IfzsCnt2(j)=zsCnt(j)Then

finished=finished+1

EndIf

Nextj

i=i+l

Loop

'在Listl中输出每所学校的代码、计划招生数、实际招生数、录取分数线、最低录取

名次,代码略

EndSub

3.3计算机程序与程序设计语言(2)

学校:姓名:班级:考号:

一、选择题

1.计算机能直接识别和执行的的语言是()

A.汇编语言B.机器语言C.高级语言D.C语言

【答案】B

【解析】

【详解】

本题考查的是计算机语言。计算机语言有:机器语言、汇编语言、高级语言。机器语

言能被计算机直接识别和执行。汇编语言、高级语言需要翻译成机器语言才能执行。

故选项B正确。

2.现有流程图如下,关于流程图的说法正确的是()

A.运行后,输入语句一定会被执行三次

B.程序运行后,输入语句至少会被执行一次

C.该程序的循环次数为3次

D.第一次输入guess的值为8,则程序运行结果为“对不起,你失败了!”

【答案】B

【解析】

【分析】

【详解】

本题考查流程图相关知识点

输入语句执行次数,取决于cout值,不一定为三次。故选项A说法错误

程序是要与guess值进行比较,故输入语句至少会被执行一次。故本题选B选项

该程序的循环次数受cout制约,有多种可能。故选项C说法错误

第一次输入guess的值为8,则程序运行结果为“对不起,您猜错了!"。故选项D

说法错误

3.计算机能够直接识别和执行的程序设计语言是()o

A.低级语言B.汇编语言C.机器语言D.高级语言

【答案】C

【解析】

【详解】

本题考查的是程序语言。程序设计语言可以分为:机器语言、汇编语言(低级语言)、

高级语言。机器语言是由二进制0、1代码指令构成,能够被计算机直接识别和执行。

汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系。高级语言是

面向用户的、基本上独立于计算机种类和结构的语言。故选项C正确。

4.x和n都是正整数且x<=n,下列选项中,与语句“x=xModn+l”功能相同的是()

A.x=(x+l)Modn

B.x=x+l

Ifx=nThenx=l

C.x=x+l

Ifx=n+lThenx=l

D.x=x+l

Ifx=n+lThenx=0

【答案】c

【解析】

【详解】

本题考查赋值语句,VB运算。题干x=xModn+1,有两种情况。(1)x<n,则x=x+l。

(2)x=n,则结合选项判断,选项A,当*巾-1时候,A选项的结果是x=0,故

有误。选项B,首先进行x=x+l,故接下来的判断实际上是x+1和n的判断,若x+1=n,

则x=l,有误。选项C正确。选项D,当x和n相等时,x应该是1,故选项D有误。

本题选项C为正确选项。

5.下面程序执行结束,文本框Textl中显示()

PrivateSubForm_Click()

a="123":b="456"

c=Val(a)+Val(b)

Textl.Text=str(c\100)

EndSub

A.123B.3C.5D.579

【答案】c

【解析】

【分析】

【详解】

本题主要考查VB程序设计的相关知识。a="123"是将字符串型数据"123”赋值给a,

b="456"将字符串型数据"456”赋值给b,c=val(a)+val(b)是分别把a和b的值转换为数

值型,然后相加,此时c=579,Textl.Text=str(c\100)是将c整除100后,转换为字符类

型赋值给Textl.Text,因此,文本框Textl中显示5,故C选项正确。

二、简答题

6.高级语言的编译过程和解释过程各有什么优势和不足。

【答案】(1)编译型语言优点是程序执行速度快,程序执行效率高,同等条件下对系

统要求较低。不足之处是跨平台性差些。

(2)解释型语言优点是不同系统平台间的兼容性高。不足之处是程序执行效率比较

低。

【解析】

【详解】

本题考查的是高级语言的编译与解释的区别。(1)编译型语言优点是程序执行速度快,

程序执行效率高,同等条件下对系统要求较低。不足之处是跨平台性差些。(2)解释

型语言优点是不同系统平台间的兼容性高。不足之处是程序执行效率比较低。

7.程序设计语言有哪些,分别具备什么特点。

【答案】(1)机器语言:是由“0”和“1”这样的二进制代码指令组来表示。每一条

机器指令包含两个主要部分:操作(指出计算机应做什么)和被操作的对象(指出处

理的数据或它的地址),计算机能直接识别和执行。

(2)汇编语言:使用了一种类似英文缩略词且带有助记性符号的语言,来替代一个

特定的指令的二进制串,每条指令都和一条机器指令相对应。需要一个专门的语言翻

译器,负责将程序中的每条语句都翻译成用二进制数表示的机器语言。

(3)高级语言:接近于数学语言或人的自然语言,并且不再过度地倚赖某种特定的

机器或环境,必须经过翻译器将其翻译成机器语言。

【解析】

【分析】

【详解】

本题考查程序设计语言及其特点相关知识点

(1)机器语言:是由“0”和“1”这样的二进制代码指令组来表示。每一条机器指

令包含两个主要部分:操作(指出计算机应做什么)和被操作的对象(指出处理的数

据或它的地址),计算机能直接识别和执行。

(2)汇编语言:使用了一种类似英文缩略词且带有助记性符号的语言,来替代一个

特定的指令的二进制串,每条指令都和一条机器指令相对应。需要一个专门的语言翻

译器,负责将程序中的每条语句都翻译成用二进制数表示的机器语言。

(3)高级语言:接近于数学语言或人的自然语言,并且不再过度地倚赖某种特定的

机器或环境,必须经过翻译器将其翻译成机器语言。

三、填空题

8.以下流程图描述的算法,执行结果是o

【答案】@@@@########$$$$

【解析】

【分析】

【详解】

本题考查的知识点是程序的识读。

初始值t=0,n=l,执行输出“@@@@”语句,再执行判断n>2表达式,不符合该条

件表达式,故执行输出"####",再执行n=n+l语句,即n=2,再执行判断t=l表达

式,不符合该条件表达式,故执行判断n>2表达式,不符合该条件表达式,故执行输

出“####",再执行n=n+l语句,即n=3,再执行判断t=l表达式,不符合该条件表

达式,故执行判断n>2表达式,符合该条件表达式,故执行输出“$$$$”,再执行

t=l语句,再执行加计1语句,即n=4;再执行判断t=l表达式,符合该条件表达式,

故程序结束。

所以流程图的执行结果为:@@@@########$$$$。

故答案为@@@@########$$$$«

9.编写VB程序,实现如下功能:单击“计算”按钮,在列表框Listl中产生10个[1,

99]随机数,文本框Textl显示相邻两个数字之间相差最大的差值。运行界面如图所示。

(1)窗体上,“计算”按钮的对象名是O

(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。

Privatesubcmdl_click()

Dimb(lto10)asinteger

DimIasinteger;maxasinteger,aasintegeocasinteger

Max=0

Fori=lto10

Randomize

A=int(rnd*99)+1

Listl.additemstr(a)

Nexti

Fori=2to10

C=________________

Ifc>maxthen__________________

NextI

Endsub

【答案】Cmdlb(i)=aabs(b(i-1)-b(i))max=ctext2.text=str

(max)

【解析】

【详解】

(1)Cmdl_ClickCmdl表示对象名称,Click表示它是一个点击事件,"计算"按钮的

对象名是Cmdl;(2)①该处获取的a是一个随机数,需要将a存储在b(i)中,所

以该处为:b(i)=a;②次数将所有的随机数逐个比较,c表示临时生成的最大差

值,所以该处为:abs(b(i-1)-b(i));③根据条件lfc>max,可以看出如果差

值比最大差值大,改变最大差值max的值为c,所以该处为max=c,④结果在文本框

中输出,所有答案为text2.text=str(max),此题同等类似答案都可,不唯一。

四、判断题

10.需求分析之后、程序设计之前,需要对系统进行总体设计和详细设计。总体设计

就是在需求分析的基础上对模型细化、分解任务,明确程序由哪些模块组成。

()

【答案】对

【解析】

【详解】

本题考查的是程序设计。需求分析之后、程序设计之前,需要对系统进行总体设计和

详细设计。总体设计就是在需求分析的基础上对模型细化、分解任务,明确程序由哪

些模块组成•题干说法正确。

五、操作题

11.某数据解密算法描述如下:

(1)在输入的数字字符串中依次提取有效的密文,有效的密文的特点:

①是一组连续的,都小于5的三位数字串;②每个位置上的数字不能被重复提取;

(2)对有效密文进行解密的过程:

将密文作为一个五进制数转换为对应的十进制数值,根据ASCII字符的十进制编码表,

得出对应的明文字符(提示:空格符所对应的ASCII码值为十进制数32,小写字母“z”

所对应的ASCII码值为十进制数122).

例如,密文242转换成十进制数为72,对应的明文字符为大写字母“H”。

程序运行界面如下图所示,在文本框Textl中输入密文,单击“解密”按钮,在文本

框Text2中输出解密后的明文密码。

(1)若输入的密文为“841497230235”,则对应的明文是。

(2)实现上述功能的VB代码如下,划线处的语句有错,应改为

(3)请在划线处填入合适的代码.

'以下代码是将有效密文数字转换为十进制数的函数

Functionconv(pAsString)AsInteger

DimkAsInteger,qAsString,iAsInteger

k=O:g=""

Fori=1To3

q=Mid(p,i,1)

Nexti

conv=k

EndFunction

PrivateSubCommandl_Click()

DimstAsString,pAsString,resAsString

DimclAsString,c2AsString,c3AsString

DimiAsInteger,dAsInteger,nAsInteger

st=Textl.Text:n=Len(st)

i=1:res=""

DoWhilei<-n-2'提取有效密文,并进行转换

cl=Mid(st,i,1):c2=Mid(st,i+1,1):c3=Mid(stzi+2,1)

Ifcl<“5”Orc2<”5“Orc3<“5"Then

d=conv(p)

Ifd>=32Andd<=122Thenres=res+Chr(d)

日se

i=i+l

EndIf

Loop

Text2.Text=res

EndSub

【答案】mAcl<"5"Andc2<"5"Andc3<"5"或其它等价答案①k=k*5+Val(q)或

k=k+Val(q)*5A(3-i)或其它等价答案②p=Mid(st,i,3)®i=i+3

【解析】

【详解】

本题考查VB综合能力。(1)若输入的密文为“841497230235”,可知,414转为m,

230转为A。(2)改错语句条件是同时小于5,故改为cl<“5"Andc2<“5"And

c3<“5”(3)代码第一空,将有效密文数字转换为十进制数的函数,采用位权相加,

故填入k=k*5+Val(q)。(4)代码第二空,将连续的三个字符取出,填入p=Mid(st,i,

3)。(5)第三空,继续往下判断,故填入i=i+3。

12.如果一个正整数从左到右读与从右到左读是一样的,就称它为回文式数(简称回

数),如图321。“回数猜想”的主要思想是,对任意正整数,若它不是回数,则按下

列算法即可获得一个回数:

(1)把该整数的数字顺序颠倒,求得该数的逆序数;

(2)将该整数和其对应的逆序数相加;

(3)若相加结果不是回数,则将结果作为新的整数,返回步骤(1)»

小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序

功能如下:在文本框Textl中输入一个正整数,单击"验证"按钮(Commandl),获

取文本框Textl中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列

表框Listl中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,

最后在列表框Listl中输出验证结果。程序运行效果如图所示。

5回教猜想|o||回~~||w£3w|

正整数:一||…际"…||

199+991=1190

1190+911=2101

2101+1012=3113

始证成功!

实现上述功能的VB程序如下:

PrivateSubCommandl_Click()

DimtAsString,aAsLong,bAsLong

DimcountAsInteger'count用于存储回数猜想的验证次数

t=Text1.Text

count=1

DoWhileCheck⑴=FalseAndcount<=10

a=Val(t)

c=a+b

Listl.AddltemStr(a)&"+"&Str(b)&"="&Str(c)

count=count+1

t=c

Loop

IfCheck(t)Then

Listl.Addltem”验证成功!”

Else

Listl.Addltem”10次内未验证成功!”

EndIf

EndSub

,自定义函数Turn

FunctionTurn(xAsString)AsLong

DimsAsString,iAsInteger

smi

Fori=Len(x)To1Step-1

s=s&Mid(xzi,1)

Nexti

Turn=_________®________

EndFunction

,自定义函数Check,检查x是否为回文数

FunctionCheck(xAsString)AsBoolean

DimiAsInteger

Check=True

Fori=1ToLen(x)\2Step1

IfMid(x,i,1)<>(3)ThenCheck=False

mid(x,len(x)+l-i,l)

Nexti

EndFunction

(1)程序代码中,自定义函数Turn(x)的功能是

(2)请在划线处填入合适代码。

【答案】(1)求x的逆序数

(2)®b=turn(t)②Val(s)(3)mid(x,len(x)+l-i,l)

【解析】

【分析】

【详解】

本题主要考查VB程序的执行与调试。(1)函数Turn(x)通过for循环从后开始截取

数实现求x的逆序数(2)①将文本框中的原始数赋值给a,将t的逆序数赋值给b,

然后将两数相加,故此处填6=川171(。②最后将逆序数s的值转为整型赋值给Vai(s)

③判断是不是回文数,截取两端的数进行比较是不是相等,故此处填

mid(x,len(x)+l-i,1)。

13.某高一班主任需要对刚入学的新生排座位,教室座位按6排8列进行摆放(班

级学生数不超过48个),并且要求每列的学生按身高从低到高排列。编写VB程序,

实现教室排座位功能:单击“读取数据”按钮Commandl,从数据库中读取该班所有

同学的班内学号(两位数字)和身高数据(3位数字),并在列表框Listl中按8个

一行显示;单击“排座位”按钮Command2,对每列数据按身高从小到大排列,并

显示在列表框List2中。程序运行界面如图所示,请回答下列问题:

n排座位回1W

6#自】

171[01]166(02]167[03]158[04]159[05]173[06]150[07]172[08]

174[09]171[10]151[U]162[12]175[13]173[14]161[15]178[16]

176[17]151(18]178[19]160[20]185[21]!73[22]151[23]167[24]

164[25]158(26]168[27]169[28]157[29]158[30]174[31]174[32]

167[33]179(34]177[35]156[36]170[37]179(38]157[39]166[40]

153(41]179(42]170[43

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论