资源简介 1120140011163300选修一第四章VB程序设计初级章末习题(简单程度) 一、选择题(本大题共7小题) 程序设计语言的发展经历 ( ) 、汇编语言及高级语言。 A. 机器语言 B. pascal语言 C. vb语言 D. 自然语言 下列VB程序段的功能为:生成n个不重复的随机整数,保存在数组a中,并升序排序。 Const n = 6 Dim a(i To n) As Integer,f(1 To 10) As Boolean Dim tmp As Integer,i As Integer,j As Integer,t As Integer ’f数组各元素的初值置为False,代码略 For i=1 To ? ?t = Int(1+Rnd*10) ? ?If Not f(t) Then ??? a(i)=t︰f(t)= True ??? For j= ??? ??If a(j)< a(j-1) Then ?? ?????tmp = a(j)︰a(j)= a(j-1)︰a(j-1)= tmp ?? ???End If ??? Next j Else ?End If Next i 上述程序段3个方框处的表达式分别为 A. (1) n-1? ??(2) 2 to i ????????(3) i = i-1 B. (1) n?? ???(2) i to 2 Step-1?? (3) i= i-1 C. (1) n-1? ??(2) 2 to i? ???????(3) t= Int(1+Rnd*10) D. (1) n ?????(2) i to 2 Step-1 ??(3) t= Int(1+Rnd*10) 有如下VB程序段: For i=1 To 8 ? a(i)=Int(Rnd*2) Next i sum=0 For i=1 To 8 Step 3 ? For j=i To 8 ??? a(j)=1- a(j) ? Next j ? sum = sum + a(i) Next i Text1.Text= Str(sum) 执行程序段后,文本框Text1中显示的内容不可能是 A. 0 B. 2 C. 3 D. 4 寻找数组元素a(1)到a(10)中最大值的VB程序段如下: ____①??????? For i = 2 To 10 If a(i) > Max Then_____②???? Next i 划线处最合适的语句是() A. ①Max=1?? ②Max=i B. ①Max=a(1)?? ②Max=a(i) C. ①Max=1?? ②Max=a(i) D. ①Max=a(1)? ?②Max=i 有如下VB程序: Dim i As Integer, j As Integer, k As String, n As Integer n = 3 List1.Clear For i = 1 To n ??? k = "" ??? For j = 1 To i ????? k = k + "*" ??? Next j ??? List1.AddItem k Next i 该程序运行后,列表框List1中显示的是(???? ) A. B. C. D. 下列VB表达式的值等于6的是() A. Int(Rnd*5+1) B. Len(Mid(“45678”,3,1)) C. 16 mod 10 D. Abs(-6.3) 为了计算s的结果,设计了如下VB程序段: s = 0 For i = 1 To 10 ??? If i = 1 Then ??? ????__①?? ? ??? ElseIf i Mod 2 = 1 Then ??? ????__②???? ??? Else ??? ????__③???? ??? End If Next i Text1.Text = Str(s) 上述程序中划线处可选语句为 ①s=s+i/(i+1)??? ?②s=s-i/(i+1)??? ?③s=s+i A. ①②③ B. ③①② C. ③②① D. ①③② 二、非选择题(本大题共9小题) 若某类矩阵的大部分数据是相同值(如0),我们可以采用仅记录不相同值(如非0数据)的方式进行压缩.甲同学对m行n列的该类矩阵进行以下处理: ●利用一维数组x存储矩阵:把矩阵第1行到第m行数据逐行依次保存在数组x中, x(1)到x(n)分别存放第1行各个数据,x(n+1)到x(2*n)分别存放第2行各个数据,依次类推. ●? 对数组x中的数据进行压缩:a(1)~a(3)依次存放矩阵的行数、列数及数值0.从数组x的第1个位置开始往后扫描,仅把非0数据所在矩阵中的行号、列号及值保存到a(4)开始的数组元素中.数组a各元素含义如图a所示: 乙同学对数组a中的数据进行转置处理: ●行列转置生成转置矩阵:从第1行到第n行逐行生成转置矩阵,在第i行处理时,扫描数组a,若转置矩阵当前的行号i等于原矩阵元素的列号a(j)(j=5,8,11,……), 则把 a(j)、a(j-1)及a(j+1)依次保存到数组b相应位置,即可把原矩阵第a(j-1)行a(j)列的数据转置为矩阵第a(j)行a(j-1)列的数据.如有3行4列矩阵的转置过程如图b所示. (1)若m=4,n=3,矩阵数据如下图所示,则数组元素a(7)到a(9)的值依次为:________(填数据,用逗号分隔) (2)甲、乙同学分别编写程序实现矩阵数据压缩和行列转置.VB代码如下,请在划线处入合适的代码. Dim a(1 To 10000)As Integer '数组a存放原矩阵压缩后的数据 Dim b(1To10000)As Integer '数组b存放行列转置后的压缩数据 Dim p As Integer Private Sub Command1_Click( ?) Dim m As Integer, n As Integer 'm、n存放原矩阵的行数和列数 Dim x(1 To 10000)As Integer '数组x存放原矩阵各个数据 Dim i As Integer, j As Integer, num As Integer '读取矩阵行数和列数分别存m和n,各个数据存数组x,代码略. '下面代码实现数据压缩,结果保存到数组a中 a(1)=m: a(2)=n: a(3)=0 p=__ ?① ? ? ? For i = 1 Tom For j = 1 Ton ___②?? ? ? If num <> 0 Then a(p)=i: a(p+1)=j: a(p + 2) = num p=p + 3 End If Next j Next i p=p - 1 '输出压缩后的数据,代码略. End Sub Private Sub Command2_Click() Dim i As Integer, j As Integer, pos As Integer '下面进行行列转置,结果保存到数组b中 b(1) = a(2): b(2)=a(1): b(3) = a(3) pos = 4 For i = 1 To b(1) For j = 5 To p – 1 Step 3 If___③??????Then b(pos) = a(j): b(pos+1) = a(j-1):b(pos+2) = a(j+1) pos = pos + 3 End If Next j Next i '输出行列转置后的数据,代码略. End Sub 有一组正整数,要求仅对其中的偶数进行降序排序。排序后偶数在前,奇数在后。排序示例如下。 排序前 75 78 60 86 61 75 36 88 排序后 88 86 78 60 36 75 61 75 程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。 Const n = 8 Dim a(1 To n) As Integer Private Sub Form_Load() ?'排序前数据存储在数组a中,并在文本框Text1中显示代码略 End Sub Private Sub Command1_Click() Dim k As Integer, i As Integer, j As Integer, t As Integer i = 1 Do While i <= n - 1 ?? k = i ?? For j = i + 1 To n ????? If a(i) Mod 2 = 1 And a(k) Mod 2 = 0 Then??? '① ????????? k = j ????? ElseIf a(k) Mod 2 = 0 And a(j) Mod 2 = 0 And a(j) > a(k) Then ????????? k = j ????? End If ?? Next j ?? If k <> i Then ????? t = a(k): a(k) = a(i): a(i) = t ?? End If ? ?i = i + k ???????????????'② Loop '依次输出排序后的数据。代码略 End Sub 古罗马有两种简单的加密算法,第一种按顺序替换,例如把a-y分别替换成b-z,把z替换成a,这样可以把persistence替换成qfstjtufodf。第二种是打乱信息的顺序,例<11,1,3,6,10,4,5,2,8,9,7>的含义是把第11个字符放在第一位,而把第一个字符放在第二位,然后是第3个字符,第6个字符……,这样可以把persistence替换成eprscsieent。后来发现同时使用两种算法,加密效果更好。可以把 persistence替换成fqstdtjffou。 下面,我们将采用vb编程实现persistence替换成fqstdtjffou的加密过程。 规则如下:1.原文只含小写字母,且最大加密字符数为10000。 2.替换顺序:a-y分别替换成b-z,把z替换成a。 3.加密方式(第二种加密方法)随机产生并记录(方便解密)。 VB代码如下,请回答下面的问题: (1)如果原文为abcz,加密方式为4,1,2,3,则密文为________。 (2)请在划线处填入合适代码。 Dima(1To10000)AsInteger ′a()数组记录 加密方式 DimnAsInteger′n记录原文字符数目 PrivateSubCommand1_Click() DimsAsString Dimi,jAsInteger,b(1To10000)AsString′b()数组记录原文 s=Text1.Text n=Len(s) Callsc ′调用过程 Text2.Text=“” Label3.Caption=“” Forj=1Ton Label3.Caption=Label3.Caption+ Str(a(j))+“” Nextj Fori=1Ton b(i)=_①_′完成字符转换 Nexti Fori=1Ton Text2.Text=_②_ Nexti EndSub Subsc()′sc过程生成加密方式 Dim m,k As Integer,judge As Boolean m=1 Do Whilem<n+1 _③_′生成1到n之间的任意整数 judge=True Fork=1Tom-1 If a(m)=a(k)Then judge=False Next k If judge=True Thenm=m+1 Loop End Sub PublicFunctionzh(sAsString)AsString ′zh函数实现字符转换 Ifs=“z”Thenzh=“a”Elsezh=Chr(Asc(s)+1) EndFunction 一个三位正整数能被3余数为2,且个位数等于1,例如:101、131等。判断一个三位数正整数X满足上述条件,其VB的关系表达式是? ? ? ? ?? 设计一个将十进制数转换成N进制数的程序。在文本框Text1输入十进制正整数x,在文本框Text2输入进制n(2≤n≤26的整数),单击“转换”按钮Command1,在文本框Text3中输出转换结果,程序运行结果如图所示(注意当n>9时,数位上用“A-Z”代表数值“10-25”)。 ? (1)设计程序界面时,修改窗体标题为“十进制数转换为N进制数”,应该修改该窗体的________属性。 (2)实现上述功能的VB程序如下,请在划线处填入合适代码。 Private Sub Command1_Click() ? Dim s As String ? Dim n As Integer, ?x As Integer, ?r As Integer ? x = Val(Text1.Text) ??___① ??? ? s = "" ? Do While x > 0 ??? r = x Mod n ??? If 0 <= r And r < 10 Then ????? s = Cstr(r) + s? ??? Else ? ????____②___?? ??? End If ??? x = x \ n ? Loop ? Text3.Text = s End Sub 小王编写了一个VB 程序,其功能为:在文本框Text1 中输入一个正整数n(n≤100),单击“确定”按钮Command1,则在列表框List1 中输出一个由数字1~n 组成的图形。程序运行界面如图所示。 实现上述功能的 VB程序如下: 请回答下列问题: (1)小王在输入代码时,误将“List1.AddItem s”写成了“List1.AddItem=s”(其他代码均正确),则调试程序时出现的错误为_________?。(单选,填字母:A.溢出/ B.必选参数 / C.下标越界 / D.要求对象)? ? ?? (2)请在程序划线处填入合适的代码。?? 下列是关于某数字的加密解密算法。其加密规则如下:计算某位数字与其位置相加得到的结果除以11的余数即为编号(其中若余数为0,编号为11),编号与字符对照表如下: 编号 1 2 3 4 5 6 7 8 9 10 11 字符 V i s u a l B A S I C 从对照表中找出与编号对应的字符完成加密,如下表显示了数字“2018”的加密过程: 数字 2 0 1 8 位置 1 2 3 4 编号 3 2 4 1 加密字符 s i u V 小张按照上述原理,设计了一个解密的VB程序,功能如下:单击“解密”按钮Command1,将文本框Text1中的密文(字符数不超过11个)进行解密,并将解密后的明文在文本框Text2中输出。程序运行效果如第图a所示。 (1)在设计程序界面时,应使用第图b所示“控件工具箱”中的(填写相应编号)添加“解密”按钮Command1。 (2)实现上述功能的VB程序如下,请在划线处填入合适代码。 Private Sub Command1_ Click() Dim s As String,s1 As String,s2 As String,ch As String,num As Integer s="Visual BASIC" s1=Text1. Text s2="":ch="" i=1 ??? Do While_________①_________ ???? ch=Mid(s1,i,1) ??? For j=1 To Len(s) ??? If ch=Mid(s,j,1)Then Exit For? Exit For退出For循环 Next j _________②_________ ??? s2=s2+CStr (num)?????? ?Cstr(x)在返回的字串前不加空格 ??? i=i+1 ??? Loop ??? Text2. Text=s2 ??? EndSub (3)若密文是“Bus”,则明文是__________________。 小王设计“模拟撤销”程序,需要用一个“历史记录”,“历史记录”是在对字符串 s 进行插入或删除时,将每步操作信息依次存储得到的,操作信息由操作符(“+”表示插入,“-”表示删除)、操作位置和操作字符串(只包含英文字母)构成,例如,“+23abc”表示在字符串 s 第 23 个位插入了“abc”,“模拟撤销”过程按照“历史记录”的逆序进行,将字符串 s 的内容恢复到初始状态。对字符串“Book”的操作与撤销过程,如图 a 所示。 ? ? ? 小王编写的“模拟撤销”VB 程序如下,文本框 Text1 中的内容是撤销前字符串,文本框 Text2 中的内容是历史记录,单击“撤销”按钮 Command1 后,在标签 Label1 中显示撤销过程,程序运行界面如图b 所示。 (1)实观上述功能的 VB 程序如下,在程序中出现的对象没有 Caption 属性的是_____。(单选,填字母:A.Label1 / B.Command1 / C.Text1 和 Text2) (2)请在划线处填入合适代码。 Private Sub Command1_Click() Dim s As String, t As String, ch As String Dim c As String, num As String, ss As String Dim n As Integer, i As Integer s = Text1.Text: t = Text2.Text c = "": num = "": ss = s For i = Len(t) To 1 Step -1 ________①________ If ch >= "a" And ch <= "z" Or ch >= "A" And ch = "Z" Then c = ch + c ElseIf ch >= "0" And ch <= "9" Then num = ch + num Else n = Val(num) If ch = "-" Then s = Mid(s, 1, n - 1) + c + ________②________ Else s = Mid(s, 1, n - 1) + Mid(s, n + Len(c), Len(s) - n - Len(c) + 1) End If ss= ss + "→" + s c = "": num = "" End If Next i Label1.Caption = ss End Sub (3)运行该程序,若文本框 Text1 中的内容是"April",文本框 Text2 中的内容是”-3p+3ri-6e”,单击撤销按钮,For 循环语句执行完成后,字符串 s 的值是_____________________。 阅读VB程序代码,如果执行时依次输入8和15,则输出m的结果是__________。 center0 答案和解析 1.【答案】A 本题主要考察了程序设计语言的发展经历:机器语言、汇编语言及高级语言。 【解答】 ?根据分析可知是机器语言,故选A。 2.【答案】B 本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。 【解答】 根据题意,分析可知,(1)处生成n个不重复的随机整数,故应填n;(2)处应填入?i to 2 Step-1 ;(3)处应填入i= i-1,故B正确。 故选B。 3.【答案】D 本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。 【解答】 根据题意,分析可知,a(i)=Int(Rnd*2),故?a(i)为0或1,文本框Text1中显示的内容是sum; 再由sum = sum + a(i),可分析得知,sum的值为0或,或3,故ABC正确,D选项错误,符合题意。 ?故选D。 4.【答案】B 本题考查VB基本运算与表达式,难度较易。 【解答】 根据题意,分析得出:寻找数组元素 a(1)到a(10)中最大值,①处应填Max=a(1)?? ②处应填Max=a(i) ,故B正确。 ?故选B。 5.【答案】A 考查VB中循环语句嵌套的使用方法。 这是VB中循环语句嵌套的使用方法,在循环语句中套用另一个循环语句,称为循环的嵌套。 【解答】 程序运行过程为:外循环i=1,k='““,内循环j=1,k=*,内循环结束,list1里列出“*”;进入第2次外循环i=2,k=““,内循环j=1,k=*,j=2,k=**,内循环结束,list1里第2行列出“**”;进入第3次外循环i=3,k=““,内循环j=1,k=*,j=2,k=**,j=3,k=***,内循环结束,list1第3行里列出“***”,外循环结束,程序结束。 故选A。 6.【答案】C 本题考查VB程序基本运算与表达,难度较易。 【解答】 A.Int(Rnd*5+1)=5,故A不符合题意; B.Len(Mid(“45678”,3,1))=1,故B不符合题意; C.16 mod 10=6,故C符合题意; D.Abs(-6.3) =6.3,故D不符合题意。 ?故选C。 7.【答案】B 【解析】略. 8.【答案】(1)2,3,2; (2)①4; ②num=x((i-1)*n+j); ③a(j)=i或i=a(j) 【解析】 【分析】 本题主要考查VB程序的基本运算与表达式,以及其数组特性,属于一般题. 【解析】 (1)根据题中所给矩阵,即可推出相应数组元素为2,3,2, (2)据题中所给条件,结合数组的读入与取出,代码分别为①4;②num=x((i-1)*n+j);③a(j)=i或i=a(j)。 故答案为:(1)2,3,2;(2)①4;②num=x((i-1)*n+j);③a(j)=i或i=a(j)。 9.【答案】①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1 本题主要考查学生对于VB程序的阅读能力,掌握数组的使用方法和排序算法。理解奇数和偶数的判断。 【解答】 根据题意,按照程序的功能:有一组正整数,要求仅对其中的偶数进行降序排序,排序后偶数在前,奇数在后;阅读程序,分析得出,将错误的代码修改为:①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1。 故答案为:①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1。 10.【答案】(1)abcd (1)①zh(Mid(s,i,1))? ? ②Text2.Text+b(a(i))? ? ③a(m)=Int(Rnd*n)+1 本题主要考查加密算法,旨在考查学生的分析应用能力,理解加密算法的产生规则是解题关键。 ???????【解答】 (1)依题意,abcz转换成bcda,然后根据加密方式4,1,2,3加密为abcd。 (2)①由注释“b()数组记录原文”以及“完成字符转换”可知,应该填与自定义函数zh有关代码。由i=1 to n可知,应该填zh(Mid(s,i,1))。②Text2.Text+b(a(i))。由于文本框Text2输出结果,肯定要把随机加密方式的结合起来。③由注释可知,填a(m)=Int(Rnd*n)+1。 11.【答案】(X mod 3=2)? and? (X mod 10=1) 本题主要考查了VB表达式,难度一般。 【解答】 根据题意,分析得出,判断一个三位数正整数X满足上述条件,其VB的关系表达式是(X mod 3=2)? and? (X mod 10=1)。 故答案为:?(X mod 3=2)? and? (X mod 10=1)。 12.【答案】(1)Caption; (2)①n=val(text2.text);②s=chr(r+55) 或 s=chr(r+asc(“A”)-10) 本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。 【解答】 (1)设计程序界面时,修改窗体标题为“十进制数转换为N进制数”,应该修改该窗体的Caption属性; (2)分析该程序,其功能为:一个将十进制数转换成N进制数,①处为在文本框Text2输入进制n ,故代码填入n=val(text2.text);②处应为s=chr(r+55)?或 s=chr(r+asc(“A”)-10)。 故答案为:(1)Caption;(2)①n=val(text2.text);②s=chr(r+55) 或 s=chr(r+asc(“A”)-10)。 13.【答案】(1)B; (2)2*n-i 本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度一般。 【解答】 (1)小王在输入代码时,误将“List1.AddItem s”写成了“List1.AddItem=s”(其他代码均正确),则调试程序时出现的错误为必选参数; (2)通过观察可以看出本程序出现了For语句,For语句语句应先判断循环条件,再执行循环体,控制循环变量s,分析该段程序得出,空格处应填2*n-i。 故答案为:(1)B;(2)2*n-i。 14.【答案】?(1)③; (2)①处代码为:i<=Len(s1)或i<=Len(Text1.Text); ②处代码为:num=(j-i+11) mod 11; (3)“620”或620 本题考查的是VB语言的应用。 【解答】 (1)在设计程序界面时,应使用第图b所示“控件工具箱”中的③添加“解密”按钮Command1; (2)①处变量s1存放明文,即从文本框Text1中获取的数字,然后通过循环对明文中的数字逐个加密,当i<=Len(Text1.Text)进入循环,即此处为i<=Len(Text1.Text); ②处是对编号进行除11取余计算,即num=(j-i+11) mod 11; (3)根据加密算法,若密文是“Bus”,则明文是620。 故答案为:?(1)③;(2)①处代码为:i<=Len(s1)或i<=Len(Text1.Text);②处代码为:num=(j-i+11) mod 11;(3)“620”或620。 15.【答案】(1)C; (2)①ch=mid(t,i,1); ②mid(s,n,len(s)-n+1); (3)Apple 本题考查的是VB编程的应用,难度不大。 【解答】 (1)实观上述功能的 VB 程序如下,在程序中出现的对象没有 Caption 属性的是Text1 和 Text2,故选C; (2)分析前后语句①处应填:ch=mid(t,i,1); ②处应填mid(s,n,len(s)-n+1); (3)运行该程序,若文本框 Text1 中的内容是"April",文本框 Text2 中的内容是”-3p+3ri-6e”,单击撤销按钮,For 循环语句执行完成后,字符串 s 的值是Apple。 故答案为:(1)C;(2)①ch=mid(t,i,1);②mid(s,n,len(s)-n+1);(3)Apple。 16.【答案】23 本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。 【解答】 分析程序,m=8,n=15, 因为8 mod 5 =Int(15/5)=3, 故执行m=m+n=8+15=23, 故答案为23. 展开更多...... 收起↑ 资源预览