资源简介 中小学教育资源及组卷应用平台2.3周而复始的循环-教科版(2019)高中信息技术必修一练习学校:___________姓名:___________班级:___________考号:___________一、选择题1.下面的程序段运行后的结果为()s=1foriinrange(1,6,2):s=s+iprint(s)A.15B.10C.12D.92.某算法的部分流程图如下图所示,输入s=11200,执行这部分流程后,输出m和n的值分别是()A.144B.214C.225D.4253.有两个VB程序段,如下所示:已知程序段中①②两处内容相同,数组元素a(1)到a(10)的值依次为:6,43,21,78,33,16,80,45,12,90,执行“程序段1”后,数组元素a(1)~a(10)的值依次为80,78,90,45,43,33,21,16,12,6,则下列说法正确的是()A.①和②处的填空为7B.两程序段的比较次数不一样,交换次数一样C.执行完程序段2后,数据6移动到了a(10)D.两段程序的得到的运行结果相同4.有如下VB程序段:i=1DoWhilei<=5a(i)=(Int(Rnd6)+5)(iMod2+1)Forj=1Toi-1Ifa(j)=a(i)Theni=i-1:ExitForNextji=i+1Loop执行该程序段后,a(1)到a(5)各元素的值可能是()。A.18,8,16,6,12B.11,5,10,6,20C.14,10,12,10,20D.5,6,7,8,95.编写了一个统计数组元素a(1)到a(n)中的“升序段”个数s。例:如图所示的数据序列,其“升序段”的个数等于3的VB程序:k=0s=0Fori=2TonIfa(i)>a(i-1)ThenEndIfIfk=1Thens=s+1NextiTextl.Text=Str(s)方框中的代码由以下三部分组成:①k=0②k=k+1③Else代码顺序正确的选项是()A.①③②B.②③①C.③②①D.②①③6.有如下VB程序段:Constn=10Dima(1Ton)AsInteger,b(1Ton)AsIntegerFori=1Tonb(i)=iNextiFori=2Tonj=i-1t=b(i)DoWhilea(b(j))>a(t)b(j+1)=b(j)j=j-1Ifj=0ThenExitDoLoopb(j+1)=tNexti若数组a中的数据依次为:69,16,44,17,34,46,10,29,37,51,执行程序后,b(1)~b(10)的值为()A.35410198672B.72485936101C.58214739106D.16248971035二、操作题7.出列顺序有10个人,编号分别为1,2,3……10按顺时针方向围坐成一圈,每次随机产生一个数m,m的范围为[3,7]的随机奇数,从第10个人开始逆时针报数,当报到m的人出列,圈内剩下的人,重新产生随机数m,重新开始报数,如此下去,直到所有人出列为止。如:若每次参数的随机数m都为5,从第10个开始报数,依次出列的为6-1-5-9-2-3-10-7-4-8小李编写了如下程序求解10个人的出列顺序。程序运行界面如图1所示,点击求解按钮后,在Textl中输出出列顺序,在Text2中显示随机数据的值。(1)在划线出填写正确的代码PrivateSubCommand1_Click()Dimld(1To10)AsBoolean,iAsInteger,jAsIntegerDimrsAsInteger,CAsInteger,mAsIntegerRandomizeFori=1To10ld(i)=True'数组元素为True表示第i人当前在队列中Nextic=0:rs=10_______m=Int(Rnd3)2+3DoWhilers<>0Ifld(i)=TrueThen_________Ifc=mThenld(i)=FalseText1.Text=Text1.Text+Str(i)___________c=0EndIfEndIfi=i-1If____________Theni=10LoopEndSub(2)加框处两语句互换下顺序,会不会对出列顺序产生影响______(选填:会/不会)。8.求不大于n的五位正整数中,满足高两位与低两位相同,且能被3除余2的所有数之和。(1)本题适用的算法是(),此算法的基本实现方法是()。A.枚举算法,循环中嵌套循环B.查找算法,循环中嵌套分支C.枚举算法,循环中嵌套分支D.查找算法,循环中嵌套循环(2)设x为五位正整数,以下检验条件的分析,正确的是()。A.x\100=xmod100andxmod3=2B.x\1000=xmod100andxmod3=2C.x\100=xmod1000andxmod3=2D.x\1000=xmod1000andxmod3=2(3)请编写程序,完成题目要求的功能。9.小奕同学基于排序算法设计了一个数字矩阵排序的程序。程序界面如下图所示,在文本框中输入矩阵大小,点击“生成”按钮Command1,在左侧列表框List1中输出一个长宽均为指定大小的随机整数矩阵,随机整数范围为[1,99]。点击“排序”按钮Command2,结果输出在右侧列表框List2中,奇数行从左到右依次递增,偶数行从右至左依次递增,且保持输出矩阵的长宽不变。(1)实现上述功能的VB程序如下,显示数据用的additem是一种________(单选,填字母:A.属性名/B.事件名/C.方法名/D.过程名)。(2)请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正。Dima(1To100)AsIntegerDimnAsIntegerFunctiondq(sAsString,LAsInteger)AsString'自定义对齐函数Rem在输入的字符串s前加若干空格,输出长度为L的字符串,代码略EndFunctionPrivateSubCommand1_Click()'生成数字矩阵'随机生成n^2个数字,存储在数组a中,代码略'以一行n个,共n行的格式显示在List1中,代码略EndSubPrivateSubCommand2_Click'数字矩阵排序DimiAsInteger,kAsInteger,jAsInteger,sAsStringDimfAsBooleanList2.Clearf=TrueFori=1Ton^2Stepns=""Forj=iTok=n^2DoWhile①Ifa(k)<a(k-1)Thent=a(k):a(k)=a(k-1):a(k-1)=tEndIfk=k-1LoopIff=TrueThens=s+""+dq(Str(a(j)),2)Elses=s+""+dq(Str(a(j)),2)+sEndIfNextjList2.AddItems②NextiEndSub10.求最大连续子矩阵和。给出一个矩阵,序列元素有正整数、0、负整数,在矩阵中限定一块区域,并要求找到该限定区域内的一个子矩阵,使得这个子矩阵与限定区域同宽但可能不同高,且包含的所有元素之和为限定区域矩阵中最大值,在和最大的前提下还要求该子矩阵包含的元素个数最多。算法描述如下:(1)从第一行开始向下进行累加,累加和若大于之前的最大和,则记录此时的最大和及结束位置;(2)若累加和等于之前的最大和,但元素个数大于之前的最大和的元素个数,则记录此连续子矩阵的结束位置;(3)若累加和小于0,则重新开始记录;(4)若有符合条件的多个连续子矩阵,则输出最先找到的子矩阵。小俞编写了一个实现该功能的VB程序,窗体加载时生成mn个序列数据,依次存放在数组a,并显示在列表框List1中,在文本框Text1中输入该矩阵限定区域的左上角位置,在文本框Text2中输入右下角位置,单击“计算”按钮Command1后,找出连续和最大的子矩阵,在标签Label3上显示最大连续子矩阵和,在Label4上显示该连续子矩阵的元素个数,在Label5上显示该连续子矩阵开始与结束位置。程序运行界面如图所示。(1)在设计程序界面时,要清空文本框中的显示内容,应修改文本框的___________属性(2)VB程序代码如下,请在划线处填入合适的代码。Constm=12:Constn=6Dima(1Tomn)AsIntegerPrivateSubForm_Load()'生成mn个数据,并显示在列表框List1,代码略EndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tempAsIntegerDimlengthAsinteger,beginAsInteger,sumAsIntegerDimksAsString,jsAsStringDimxy(1to4)AsInteger,hsum(1tomn)AsInteger'读取文本框Text1的数值分别存储到数组xy(1)、xy(2),读取文本框Text2的数值分别存储到数组xy(3)、xy(4),xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,代码略Fori=1Toxy(3)-xy(1)+1hsum(i)=0Nexti'求限定区域内每行数据之和Fori=1Toxy(3)-xy(1)+1Forj=1To________hsum(i)=hsum(i)+a((xy(1)+i-2)n+xy(2)+j-1)NextjNexti'找出最大连续之矩阵和temp=0:sum=0:length=0:begin=0Fori=1Toxy(3)-xy(1)+1Iftemp+hsum(i)>sumThensum=temp+hsum(i)length=i-begink=iElseIftemp+hsum(i)=sumAnd________Thenlength=i-begink=iEndIfIftemp+hsum(i)<0Thenbegin=itemp=0Elsetemp=temp+hsum(i)EndIfNextiks="("+_________+","+Str(xy(2))+")"'开始位置js="("+Str(k+xy(1)-1)+","+Str(xy(4))+")"'结束位置Label3.Caption="最大子矩阵和为:"+Str(Sum)Label4.Caption="子矩阵中的元素个数为:"+Str(length(xy(4)-xy(2)+1))Label5.Caption="子矩阵位置为:"+ks+","+jsEndSub11.使用Python自身提供的IDLE集成开发环境录入以下代码及调试运行,检测结果。#鸡兔同笼forxinrange(1,23):y=35-xif4x+2y==94:print("兔子有%s只,鸡有%s只"%(x,y))特别提示:代码录入完毕,调试运行,检测错误,讨论错误原因,上网查找错误格式的处置办法,直至能正确输出结果。12.请编写Python程序,实现如下功能需求:1)程序运行后,给出文字提示:“请输入一个正整数:”2)输入一个整数n按回车后,程序输出从1-n所有整数中既是3的倍数又是5的倍数的数。3)不要超过5行代码。程序运行举例:13.某考试的多选题有“A、B、C、D、E”5个答案选项。阅卷的评分标准为:“全部选对的得2分,选对但不全的得1分,不选或有选错的得0分”。阅卷算法描述如下:例如,标准答案为“ABE”,则对应得分表如下所示。学生答案ABEABAEBEABEAC......字符串1100111000100010100110000010000000110100......十进制数(x)2524179168120......ans(x)211111100小温依据上述描述设计了“多选题阅卷”的VB程序,实现如下功能:在文本框Text1中输入标准答案(大写字母),先单击“初始化”按钮Command1,在数组ans中生成所有答案组合对应的分值,然后单击“阅卷”按钮Command2,从数据库中读取学生的答案并进行阅卷,在列表框List1中显示得分结果。程序运行界面如图所示。(1)若标准答案为“ACD”,则数组元素ans?(18)的值为(2)请在划线处填入合适的代码。Dim?ans(0?To?31)?As?IntegerPrivate?Sub?Command1_Click()Dim?b(0?To?4)?As?IntegerDim?s?As?String,?c?As?String,?sum?As?Integer,?k?As?Integer'初始化数组ans和数组b,各元素的初始值均为0。代码略s?=?Text1.Text:k?=?Len(s)???For?i?=?1?To?k????????c?=?Mid(s,?i,?1)????????b(Asc(c)?-?65)?=?2?^?(69?-?Asc(c))????Next?i????For?i?=?0?To?4????????If?b(i)?<>?0?Then????????????ans(b(i))?=?1????????????sum?=①????????End?If????Next?i???ans(sum)?=?2???'当标准答案含3个及以上选项时,学生答案选其中2个选项可得1分????i?=?0????Do?While?k?>=?3?And?i?<=?4????????For?j?=?i?+?1?To?4???????????If?b(i)??b(j)?<>?0?Then?ans(b(i)?+?b(j))?=?1????????Next?j????????i?=?i?+?1????Loop???'当标准答案含4个及以上选项时,学生答案选其中3个选项可得1分????i?=?0????Do?While?k?>=?4?And?i?<=?4????????For?j?=?i?+?1?To?4????????????If?b(i)??b(j)=?0?Or?k?=?5?Then?②????????Next?j????????i?=?i?+?1???Loop???'当标准答案含5个选项时,学生答案选其中4个选项可得1分。代码略?End?SubPrivate?Sub?Command2_Click()????Dim?xh(1?To?1000)?As?String,?answer(1?To?1000)?As?String??'从数据库中读取学生学号和答案的数据分别存储在数组xh和answer中'记录总数存储在变量n中,代码略??List1.Clear????For?i?=?1?To?n????????List1.AddItem?xh(i)?+?"???????"?+?answer(i)?+?"???????"?+?Str(ans(f(answer(i))))????Next?iEnd?SubFunction?f(s?As?String)?As?Integer????Dim?i?As?Integer,?x?As?Integer???x?=?0????For?i?=?1?To?Len(s)??????x?=③????Next?i????f?=?xEnd?Function14.某校老师编写一个VB程序分析学生技术成绩,功能如下:在列表框List1中显示原始学生信息,单击“分析”按钮Command1,统计各班参加考试人数、高分(97及以上)人数和均分,并按班级均分从大到小显示在列表框List2中,程序运行界面如图所示。实现上述功能的VB程序段如下,请回答下列问题:(1)学生成绩存储在数据表中,其字段名是(2)请在划线处填入合适的代码。DimrecCountAsInteger'存放学生人数DimsClass(1To1000)AsInteger'存放学生班级DimsName(1To1000)AsString'存放学生姓名DimsScore(1To1000)AsInteger'存放学生成绩PrivateSubCommand1_Click()DimiAsInteger,tAsInteger,ncAsIntegerDima(1To20)AsInteger,b(1To20)AsInteger'分别存放班级高分人数和班级参加考试人数Dimsum(1To20)AsInteger,ave(1To20)AsSingle'分别存放班级总分和班级均分Dimc(1To20)AsIntegerFori=1TorecCount①b(t)=b(t)+1Ifb(t)=1Thennc=nc+1②EndIfIfsScore(i)>=97Thena(t)=a(t)+1sum(t)=sum(t)+sScore(i)NextiFori=1Toncave(c(i))=Int(sum(c(i))/b(c(i))100+0.5)/100NextiFori=1Tonc-1Forj=ncToi+1Step-1If③Thent=c(j):c(j)=c(j-1):c(j-1)=tEndIfNextjNextiFori=1ToncList2.AddItemStr(c(i))+""+Str(b(c(i)))+""+Str(a(c(i)))+""+Str(ave(c(i)))NextiEndSubPrivateSubForm_Load()'链接数据库,代码略recCount=0DoWhileNotrs.EOFrecCount=recCount+1sClass(recCount)=rs.Fields("class")sName(recCount)=rs.Fields("name")sScore(recCount)=rs.Fields("score")rs.MoveNextLoop'将数据显示在列表框List1中,代码略EndSub三、填空题15.以下流程图描述的算法,执行结果是_______。16.如图所示,这是打印九九乘法表的程序,请你完善程序。PrivateSubForm_click()DimiAsInteger,jAsIntegerFori=1To①________Forj=1To②_________Printj;"";i;"=";ij;NextjPrint‘换行NextiEndSub21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台2.3周而复始的循环-教科版(2019)高中信息技术必修一练习学校:___________姓名:___________班级:___________考号:___________一、选择题1.下面的程序段运行后的结果为()s=1foriinrange(1,6,2):s=s+iprint(s)A.15B.10C.12D.9答案:B详解本题主要考查程序的运行。for循环中,变量i的变化是1,3,5,7,当i=7时退出循环,此时s的值为,s=1+1+3+5=10,故本题选B选项。2.某算法的部分流程图如下图所示,输入s=11200,执行这部分流程后,输出m和n的值分别是()A.144B.214C.225D.425答案:C【解析】【分析】【详解】本题主要考查循环结构流程图的读取。第一次循环:m=03+11200mod10=0+0=0n=1s=11200\10=1120第二次循环:m=03+1120mod10=0+0=0n=2s=1120\10=112第三次循环:m=03+112mod10=0+2=2n=3s=112\10=11第四次循环:m=23+11mod10=6+1=7n=4s=11\10=1第五次循环:m=73+1mod10=21+1=22n=5s=1\10=0当s<>0不成立时,跳出循环,输出m=22n=5,因此C选项正确。A、B、D选项均不正确。3.有两个VB程序段,如下所示:已知程序段中①②两处内容相同,数组元素a(1)到a(10)的值依次为:6,43,21,78,33,16,80,45,12,90,执行“程序段1”后,数组元素a(1)~a(10)的值依次为80,78,90,45,43,33,21,16,12,6,则下列说法正确的是()A.①和②处的填空为7B.两程序段的比较次数不一样,交换次数一样C.执行完程序段2后,数据6移动到了a(10)D.两段程序的得到的运行结果相同答案:A详解本题考查冒泡排序。根据题干,执行“程序段1”后,数组元素a(1)~a(10)的值依次为80,78,90,45,43,33,21,16,12,6,可知a(10)-a(4)实现排序,故整个排序执行了七趟。根据程序段1,双重for循环的内循环forj=1to10-i,这是一个下沉的排序,对整个程序段总共要执行七趟,那么i的变化是1-7,故外循环填入7。选项A正确。两个程序段都执行七趟,比较次数一样。执行完程序段2后,数据6移动到了a(8)。故本题选A。4.有如下VB程序段:i=1DoWhilei<=5a(i)=(Int(Rnd6)+5)(iMod2+1)Forj=1Toi-1Ifa(j)=a(i)Theni=i-1:ExitForNextji=i+1Loop执行该程序段后,a(1)到a(5)各元素的值可能是()。A.18,8,16,6,12B.11,5,10,6,20C.14,10,12,10,20D.5,6,7,8,9答案:A【解析】【分析】【详解】本题考查的是VB循环语句。首先考虑取值范围,int(rnd6)+5产生随机整数范围是[5,10],当i为奇数时,(Int(Rnd6)+5)(iMod2+1)的范围是{10,12,14,16,18,20};当i为偶数时,(Int(Rnd6)+5)(iMod2+1)的范围是整数[5,10]。接着a数组满足不重复的条件。所以选项BCD都不对。5.编写了一个统计数组元素a(1)到a(n)中的“升序段”个数s。例:如图所示的数据序列,其“升序段”的个数等于3的VB程序:k=0s=0Fori=2TonIfa(i)>a(i-1)ThenEndIfIfk=1Thens=s+1NextiTextl.Text=Str(s)方框中的代码由以下三部分组成:①k=0②k=k+1③Else代码顺序正确的选项是()A.①③②B.②③①C.③②①D.②①③答案:B详解本题考查的是VB循环、选择语句。阅读程序可知,k表示每个升序段中元素的个数,s是表示升序段的个数。由Ifa(i)>a(i-1)Then可知,接下来升序段中元素的个数增加1,否则为统计下一个升序段中元素的个数做准备即k=0。故代码顺序为:②③①。选项B正确。6.有如下VB程序段:Constn=10Dima(1Ton)AsInteger,b(1Ton)AsIntegerFori=1Tonb(i)=iNextiFori=2Tonj=i-1t=b(i)DoWhilea(b(j))>a(t)b(j+1)=b(j)j=j-1Ifj=0ThenExitDoLoopb(j+1)=tNexti若数组a中的数据依次为:69,16,44,17,34,46,10,29,37,51,执行程序后,b(1)~b(10)的值为()A.35410198672B.72485936101C.58214739106D.16248971035答案:B【解析】【分析】【详解】本题主要考查VB中数组及循环结构的使用。“ExitDo”用以跳出Do循环,Do循环的循环条件为“a(b(j))>a(t)”,由题意可知为“a(b(i-1))>a(b(i))”,程序执行中数组b变化过程为:2,1,3,4,5,6,7,8,9,10—>2,3,1,4,5,6,7,8,9,10—>2,4,3,1,5,6,7,8,9,10—>2,4,5,3,1,6,7,8,9,10—>2,4,5,3,6,1,7,8,9,10,—>7,2,4,5,3,6,1,8,9,10—>7,2,4,8,5,3,6,1,9,10—>7,2,4,8,5,9,3,6,1,10—>7,2,4,8,5,9,3,6,10,1。故B选项正确。其余选项均不符合题意。二、操作题7.出列顺序有10个人,编号分别为1,2,3……10按顺时针方向围坐成一圈,每次随机产生一个数m,m的范围为[3,7]的随机奇数,从第10个人开始逆时针报数,当报到m的人出列,圈内剩下的人,重新产生随机数m,重新开始报数,如此下去,直到所有人出列为止。如:若每次参数的随机数m都为5,从第10个开始报数,依次出列的为6-1-5-9-2-3-10-7-4-8小李编写了如下程序求解10个人的出列顺序。程序运行界面如图1所示,点击求解按钮后,在Textl中输出出列顺序,在Text2中显示随机数据的值。(1)在划线出填写正确的代码PrivateSubCommand1_Click()Dimld(1To10)AsBoolean,iAsInteger,jAsIntegerDimrsAsInteger,CAsInteger,mAsIntegerRandomizeFori=1To10ld(i)=True'数组元素为True表示第i人当前在队列中Nextic=0:rs=10_______m=Int(Rnd3)2+3DoWhilers<>0Ifld(i)=TrueThen_________Ifc=mThenld(i)=FalseText1.Text=Text1.Text+Str(i)___________c=0EndIfEndIfi=i-1If____________Theni=10LoopEndSub(2)加框处两语句互换下顺序,会不会对出列顺序产生影响______(选填:会/不会)。答案:①i=10②c=c+1③rs=rs-1④i=0不会详解本题考查VB综合能力。(1)初始化i的值,填入i=10。(2)报数数量加1,填入c=c+1。(3)出列后总人数减1,故填入rs=rs-1。(4)当i=0时候,代表转到了最后一人,故i=10。(5)对出列顺序没有影响。8.求不大于n的五位正整数中,满足高两位与低两位相同,且能被3除余2的所有数之和。(1)本题适用的算法是(),此算法的基本实现方法是()。A.枚举算法,循环中嵌套循环B.查找算法,循环中嵌套分支C.枚举算法,循环中嵌套分支D.查找算法,循环中嵌套循环(2)设x为五位正整数,以下检验条件的分析,正确的是()。A.x\100=xmod100andxmod3=2B.x\1000=xmod100andxmod3=2C.x\100=xmod1000andxmod3=2D.x\1000=xmod1000andxmod3=2(3)请编写程序,完成题目要求的功能。答案:(1)C(2)B(3)DimxAsLong,sAsDouble,nAsLongn=val(InputBox("输入"))s=0Forx=10000TonStep1Ifx\1000=xMod100AndxMod3=2Thens=s+xEndIfNextxPrints详解本题考查VB综合能力。(1)求不大于n的五位正整数中,满足高两位与低两位相同,且能被3除余2的所有数之和适合采用枚举算法,枚举算法是指从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件,所以在代码中需要分支结构。故选C。(2)x\1000=xmod100andxmod3=2可以判断高两位与低两位相同,且能被3除余2的整数,故选B。(3)根据题目意思,完成代码。9.小奕同学基于排序算法设计了一个数字矩阵排序的程序。程序界面如下图所示,在文本框中输入矩阵大小,点击“生成”按钮Command1,在左侧列表框List1中输出一个长宽均为指定大小的随机整数矩阵,随机整数范围为[1,99]。点击“排序”按钮Command2,结果输出在右侧列表框List2中,奇数行从左到右依次递增,偶数行从右至左依次递增,且保持输出矩阵的长宽不变。(1)实现上述功能的VB程序如下,显示数据用的additem是一种________(单选,填字母:A.属性名/B.事件名/C.方法名/D.过程名)。(2)请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正。Dima(1To100)AsIntegerDimnAsIntegerFunctiondq(sAsString,LAsInteger)AsString'自定义对齐函数Rem在输入的字符串s前加若干空格,输出长度为L的字符串,代码略EndFunctionPrivateSubCommand1_Click()'生成数字矩阵'随机生成n^2个数字,存储在数组a中,代码略'以一行n个,共n行的格式显示在List1中,代码略EndSubPrivateSubCommand2_Click'数字矩阵排序DimiAsInteger,kAsInteger,jAsInteger,sAsStringDimfAsBooleanList2.Clearf=TrueFori=1Ton^2Stepns=""Forj=iTok=n^2DoWhile①Ifa(k)<a(k-1)Thent=a(k):a(k)=a(k-1):a(k-1)=tEndIfk=k-1LoopIff=TrueThens=s+""+dq(Str(a(j)),2)Elses=s+""+dq(Str(a(j)),2)+sEndIfNextjList2.AddItems②NextiEndSub答案:(1)C(2)①k>=j+1②f=Notf(3)i+n-1详解本题考查VB综合能力。(1)additem是一种方法名。(2)第一空,DOWhile循环是冒泡排序的内循环,根据题干,每次排序排第i行的n个数据,从a(j)到a(j+n-1)的排序,故填入k>=j+1。(3)第二空,f代表奇偶行,奇数行f为True,偶数行反之,故填入f=Notf。(4)每次排序排第i行的n个数据,加框处改为i+n-1。10.求最大连续子矩阵和。给出一个矩阵,序列元素有正整数、0、负整数,在矩阵中限定一块区域,并要求找到该限定区域内的一个子矩阵,使得这个子矩阵与限定区域同宽但可能不同高,且包含的所有元素之和为限定区域矩阵中最大值,在和最大的前提下还要求该子矩阵包含的元素个数最多。算法描述如下:(1)从第一行开始向下进行累加,累加和若大于之前的最大和,则记录此时的最大和及结束位置;(2)若累加和等于之前的最大和,但元素个数大于之前的最大和的元素个数,则记录此连续子矩阵的结束位置;(3)若累加和小于0,则重新开始记录;(4)若有符合条件的多个连续子矩阵,则输出最先找到的子矩阵。小俞编写了一个实现该功能的VB程序,窗体加载时生成mn个序列数据,依次存放在数组a,并显示在列表框List1中,在文本框Text1中输入该矩阵限定区域的左上角位置,在文本框Text2中输入右下角位置,单击“计算”按钮Command1后,找出连续和最大的子矩阵,在标签Label3上显示最大连续子矩阵和,在Label4上显示该连续子矩阵的元素个数,在Label5上显示该连续子矩阵开始与结束位置。程序运行界面如图所示。(1)在设计程序界面时,要清空文本框中的显示内容,应修改文本框的___________属性(2)VB程序代码如下,请在划线处填入合适的代码。Constm=12:Constn=6Dima(1Tomn)AsIntegerPrivateSubForm_Load()'生成mn个数据,并显示在列表框List1,代码略EndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tempAsIntegerDimlengthAsinteger,beginAsInteger,sumAsIntegerDimksAsString,jsAsStringDimxy(1to4)AsInteger,hsum(1tomn)AsInteger'读取文本框Text1的数值分别存储到数组xy(1)、xy(2),读取文本框Text2的数值分别存储到数组xy(3)、xy(4),xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,代码略Fori=1Toxy(3)-xy(1)+1hsum(i)=0Nexti'求限定区域内每行数据之和Fori=1Toxy(3)-xy(1)+1Forj=1To________hsum(i)=hsum(i)+a((xy(1)+i-2)n+xy(2)+j-1)NextjNexti'找出最大连续之矩阵和temp=0:sum=0:length=0:begin=0Fori=1Toxy(3)-xy(1)+1Iftemp+hsum(i)>sumThensum=temp+hsum(i)length=i-begink=iElseIftemp+hsum(i)=sumAnd________Thenlength=i-begink=iEndIfIftemp+hsum(i)<0Thenbegin=itemp=0Elsetemp=temp+hsum(i)EndIfNextiks="("+_________+","+Str(xy(2))+")"'开始位置js="("+Str(k+xy(1)-1)+","+Str(xy(4))+")"'结束位置Label3.Caption="最大子矩阵和为:"+Str(Sum)Label4.Caption="子矩阵中的元素个数为:"+Str(length(xy(4)-xy(2)+1))Label5.Caption="子矩阵位置为:"+ks+","+jsEndSub答案:text①xy(4)-xy(2)+1②i-begin>length③Str(k-length+xy(1))详解本题考查VB综合能力。(1)在设计程序界面时,要清空文本框中的显示内容,应修改文本框的text属性。(2)xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,内循环表示限定区域有多少列,故填入xy(4)-xy(2)+1。(3)根据题干若累加和等于之前的最大和,但元素个数大于之前的最大和的元素个数,则记录此连续子矩阵的结束位置,填入i-begin>length。(4)开始位置表示为Str(k-length+xy(1))。11.使用Python自身提供的IDLE集成开发环境录入以下代码及调试运行,检测结果。#鸡兔同笼forxinrange(1,23):y=35-xif4x+2y==94:print("兔子有%s只,鸡有%s只"%(x,y))特别提示:代码录入完毕,调试运行,检测错误,讨论错误原因,上网查找错误格式的处置办法,直至能正确输出结果。答案:错误1:兔子4只腿,最多只能是23只,而range(1,23)只取到22,没取到23,故应改为:range(1,24)错误2:缩进错误,y=35-x、if4x+2y==94:是for语句中的语句块,应缩进。print("兔子有%s只,鸡有%s只"%(x,y))是if语句中的语句块,应缩进。详解本题考查的是Python调试。本题程序错误如下:错误1:兔子4只腿,最多只能是23只,而range(1,23)只取到22,没取到23,故应改为:range(1,24)错误2:缩进错误,y=35-x、if4x+2y==94:是for语句中的语句块,应缩进。print("兔子有%s只,鸡有%s只"%(x,y))是if语句中的语句块,应缩进。调试完最终输出:兔子有12只,鸡有23只。12.请编写Python程序,实现如下功能需求:1)程序运行后,给出文字提示:“请输入一个正整数:”2)输入一个整数n按回车后,程序输出从1-n所有整数中既是3的倍数又是5的倍数的数。3)不要超过5行代码。程序运行举例:答案:n=input("请输入一个正整数:")n=int(n)Foriinrange(15,n+1,15)print(i)【解析】【分析】【详解】本题考查的是Python循环语句。range函数,第一个参数表示开始,第二个参数表示停止,第三个参数表示步长。print缺省的话默认是换行输出。13.某考试的多选题有“A、B、C、D、E”5个答案选项。阅卷的评分标准为:“全部选对的得2分,选对但不全的得1分,不选或有选错的得0分”。阅卷算法描述如下:例如,标准答案为“ABE”,则对应得分表如下所示。学生答案ABEABAEBEABEAC......字符串1100111000100010100110000010000000110100......十进制数(x)2524179168120......ans(x)211111100小温依据上述描述设计了“多选题阅卷”的VB程序,实现如下功能:在文本框Text1中输入标准答案(大写字母),先单击“初始化”按钮Command1,在数组ans中生成所有答案组合对应的分值,然后单击“阅卷”按钮Command2,从数据库中读取学生的答案并进行阅卷,在列表框List1中显示得分结果。程序运行界面如图所示。(1)若标准答案为“ACD”,则数组元素ans?(18)的值为(2)请在划线处填入合适的代码。Dim?ans(0?To?31)?As?IntegerPrivate?Sub?Command1_Click()Dim?b(0?To?4)?As?IntegerDim?s?As?String,?c?As?String,?sum?As?Integer,?k?As?Integer'初始化数组ans和数组b,各元素的初始值均为0。代码略s?=?Text1.Text:k?=?Len(s)???For?i?=?1?To?k????????c?=?Mid(s,?i,?1)????????b(Asc(c)?-?65)?=?2?^?(69?-?Asc(c))????Next?i????For?i?=?0?To?4????????If?b(i)?<>?0?Then????????????ans(b(i))?=?1????????????sum?=①????????End?If????Next?i???ans(sum)?=?2???'当标准答案含3个及以上选项时,学生答案选其中2个选项可得1分????i?=?0????Do?While?k?>=?3?And?i?<=?4????????For?j?=?i?+?1?To?4???????????If?b(i)??b(j)?<>?0?Then?ans(b(i)?+?b(j))?=?1????????Next?j????????i?=?i?+?1????Loop???'当标准答案含4个及以上选项时,学生答案选其中3个选项可得1分????i?=?0????Do?While?k?>=?4?And?i?<=?4????????For?j?=?i?+?1?To?4????????????If?b(i)??b(j)=?0?Or?k?=?5?Then?②????????Next?j????????i?=?i?+?1???Loop???'当标准答案含5个选项时,学生答案选其中4个选项可得1分。代码略?End?SubPrivate?Sub?Command2_Click()????Dim?xh(1?To?1000)?As?String,?answer(1?To?1000)?As?String??'从数据库中读取学生学号和答案的数据分别存储在数组xh和answer中'记录总数存储在变量n中,代码略??List1.Clear????For?i?=?1?To?n????????List1.AddItem?xh(i)?+?"???????"?+?answer(i)?+?"???????"?+?Str(ans(f(answer(i))))????Next?iEnd?SubFunction?f(s?As?String)?As?Integer????Dim?i?As?Integer,?x?As?Integer???x?=?0????For?i?=?1?To?Len(s)??????x?=③????Next?i????f?=?xEnd?Function答案:(1)1(2)①sum+b(i)或sum+2^(4–i)②ans(sum-b(i)-b(j))=1③x+Val(Mid(s,i,1))2^(Len(s)-i)或者x+Val(Mid(s,i,1))2^(5-i)或者x+Val(Mid(s,Len(s)-i+1,1))2^(i-1)或者x+Val(Mid(s,6-i,1))2^(i-1)或者x2+Val(Mid(s,i,1))详解标题考查VB综合能力。(1)若标准答案为“ACD”,则数组元素ans(18)表示选了AD,得1分。(2)代码第一空,将正确答案转换的十进制求和,故填入sum+b(i)。(2)代码第二空,b(i)和b(j)是错误答案,那么反过来就是正确答案之一,故填入ans(sum-b(i)-b(j))=1。(3)代码第三空,自定义函数将二进制转为十进制,位权相加,故填入x+Val(Mid(s,i,1))2^(Len(s)-i)。14.某校老师编写一个VB程序分析学生技术成绩,功能如下:在列表框List1中显示原始学生信息,单击“分析”按钮Command1,统计各班参加考试人数、高分(97及以上)人数和均分,并按班级均分从大到小显示在列表框List2中,程序运行界面如图所示。实现上述功能的VB程序段如下,请回答下列问题:(1)学生成绩存储在数据表中,其字段名是(2)请在划线处填入合适的代码。DimrecCountAsInteger'存放学生人数DimsClass(1To1000)AsInteger'存放学生班级DimsName(1To1000)AsString'存放学生姓名DimsScore(1To1000)AsInteger'存放学生成绩PrivateSubCommand1_Click()DimiAsInteger,tAsInteger,ncAsIntegerDima(1To20)AsInteger,b(1To20)AsInteger'分别存放班级高分人数和班级参加考试人数Dimsum(1To20)AsInteger,ave(1To20)AsSingle'分别存放班级总分和班级均分Dimc(1To20)AsIntegerFori=1TorecCount①b(t)=b(t)+1Ifb(t)=1Thennc=nc+1②EndIfIfsScore(i)>=97Thena(t)=a(t)+1sum(t)=sum(t)+sScore(i)NextiFori=1Toncave(c(i))=Int(sum(c(i))/b(c(i))100+0.5)/100NextiFori=1Tonc-1Forj=ncToi+1Step-1If③Thent=c(j):c(j)=c(j-1):c(j-1)=tEndIfNextjNextiFori=1ToncList2.AddItemStr(c(i))+""+Str(b(c(i)))+""+Str(a(c(i)))+""+Str(ave(c(i)))NextiEndSubPrivateSubForm_Load()'链接数据库,代码略recCount=0DoWhileNotrs.EOFrecCount=recCount+1sClass(recCount)=rs.Fields("class")sName(recCount)=rs.Fields("name")sScore(recCount)=rs.Fields("score")rs.MoveNextLoop'将数据显示在列表框List1中,代码略EndSub答案:(1)score(2)①t=sClass(i)②c(nc)=t或其他相同答案③ave(c(j))>ave(c(j-1))【解析】【分析】【详解】本题考查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))。三、填空题15.以下流程图描述的算法,执行结果是_______。答案:@@@@########【解析】【分析】【详解】本题考查的知识点是程序的识读。初始值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表达式,符合该条件表达式,故程序结束。所以流程图的执行结果为:@@@@########。故答案为@@@@########。16.如图所示,这是打印九九乘法表的程序,请你完善程序。PrivateSubForm_click()DimiAsInteger,jAsIntegerFori=1To①________Forj=1To②_________Printj;"";i;"=";ij;NextjPrint‘换行NextiEndSub答案:9i【解析】【分析】【详解】本题主要考查程序循环的嵌套。题中外层循环决定乘法表竖向执行的次数,内层循环决定横向执行的次数,因此答案①9②i。21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)21世纪教育网(www.21cnjy.com) 展开更多...... 收起↑ 资源列表 2.3周而复始的循环-教科版(2019)高中信息技术必修一练习(原卷版).doc 2.3周而复始的循环-教科版(2019)高中信息技术必修一练习(解析版).doc