NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx
- 文档编号:8840670
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:29
- 大小:618.59KB
NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx
《NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx》由会员分享,可在线阅读,更多相关《NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx(29页珍藏版)》请在冰豆网上搜索。
NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题
NCT-Python编程二级-模拟卷4(含答案word程序填空阅读填空程序试题
一、程序填空
1.小王编写了“字符串缩写”程序,实现如下功能:
1.输入一串由英文字母和数字组成的字符串,
2.如果字符串有连续字符构成的升序段(后面字符的ASCII值比前面的字符的ASCII值大1),则把升序段缩写成由第一个字符加上“—”和最后一个字符组成的新字符段,
3.例如:
字符串为“abcdf12345becomexy”,则缩写成“a-df1-5becomex-y”。
程序运行时,输入一串字符,输出缩写的字符串,程序运行效果如下图所示:
实现上述功能的程序如下,请在程序划线处填入合适的代码。
s=input("请输入字符串s:
")
_______
flag=False
result=""
foriinrange(0,k-1):
if___________________:
result=result+s[i]+"-"
flag=True
eliford(s[i])!
=ord(s[i+1])-1:
result=result+s[i]
_____
result=result+s[i+1]
print("缩写后的字符串为:
",result)
划线处①处应该填入的语句为:
;
划线处②处应该填入的语句为:
;
划线处③处应该填入的语句为:
。
2.完善程序。
以下是猜数游戏的程序,请在画线出填写正确的内容。
importrandom
secret=random.randint(0,10)
print(“---猜数游戏-----”)
cs=int(input(“你猜的数字是”))
whilecs!
=secret:
_______cs>secret:
_________(“唉,猜大啦!
”)
__________:
print(“嘿嘿,猜小了!
”)
cs=int(input(“重新猜一个靠谱的数字是:
”))
print(“游戏结束,不玩了!
”)
3.完善程序。
以下是计算S=1+6+11+…+101的程序代码。
请你在
处填写正确的语句。
s=0
k=1
while(k<=101)
__
s=0
k=1
while(k<101):
k=k+5
s=s+k
print(s+1)
4.调试程序。
请阅读以下程序并写出运行结果。
fruites=['banana','apple','mango']
forfruitinfruites:
print(fruit)
a=len(fruites)
print('a=',a)
_________________
5.调试程序。
请阅读以下程序并写出运行结果。
#ex16.py
i=0
sum=0
whilei<10:
ifi%3==0:
sum+=i
print(i)
i=i+1
print('sum',sum)
_________
6.约瑟夫问题是个有名的问题:
N个人围成一圈,顺序为0,1,2,3,4,5,从0号这个人开始报数,报到2的将被杀掉,接下去重新开始报数,报到3的将被杀掉...以此类推,最后剩下一个,其余人都将被杀掉。
例如N=6,被杀掉的顺序是:
1,4,3,0,5;最后只剩下2这个人。
llist=
n=int(input(“请输入参与人数:
”))
foriinrange(0,n-1):
llist.append([i,i+1])
___________
___________
long=n
k=head
i=1
p=2
while(____):
ifi==p-1:
t=llist[k][1]
print(llist[t][0])#索引为t的删除
__________________
ift==head:
___________________
i=1
p+=1
long=long-1
k=llist[k][1]
______________
i+=1
print(llist[head][0])
7.哥德巴赫在1742年提出了以下猜想:
任何一个大于2的偶数都可以写成两个质数之和,请完善代码帮助哥德巴赫验证他的猜想。
importmath
defss(n):
Flag=True
i=2
whilei<=int(math.sqrt(n))andFlag:
if_____________
Flag=False
_____________
returnFlag
n=int(input(“输入一个大于2的偶数”))
foriinrang(2,n//2+1):
if____________
print(str(n)+"="+str(i)+"+"+str(n-i))
如果输入“8”则结果显示_____
8.输入n,计算s=1!
+2!
+...+n!
的未6位(不含前导0)。
N<=1000000,n!
表示前n个正整数之积。
9.编写一个程序,实现九九乘法口诀表。
10.操作说明:
打开文件“Y:
/1/1.py”,将程序补充完整,不得增加,删除语句、或改变程序原有结构,操作结束后保存。
以下程序段的功能是:
根据从键盘上输入的表示星期几的数字,若输入的数字不是在范围(1至7)输出“输入错误!
”,否则输出对应的英文星期的简称如“Mon、Tue、Wed、Thu、Fri、Sta、Sun”。
n=int(input(“请输入一个数:
”))
list=[“Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sta”,”Sun”]
if________:
print(“输入错误!
”)
else:
print(________)
11.操作说明:
打开文件“Y:
/2/2.py”,在代码窗口指定位置<1>、<2>处修改完善程序代码,不得增加、删除语句或改变程序原有结构,操作结束后保存。
以下程序段的功能是:
输入一个正整数n(1至100),输出它的约数的个数。
s=0
n=int(input(“请输入一个正整数:
”))
ifn<1orn>100:
exit#输入的数不符合要求,退出
foriinrange(1,n+1):
ifn//i=0:
___<1>
s=s+i<2>
print(“约数的个数是:
”,s)
12.操作说明:
编写一个程序实现以下功能,将程序以“Y:
/3/3.py”作为文件名保存。
题目:
设计100以内的数中能同时被3或5整除的个数。
13.程序设计:
键盘输入任意的正整数,程序输出与其相应的二进制数。
代码如下:
n=int(input("请输入一个十进制数:
"))
result=[]
whilen>0:
result.append(①)
n=②
result.reverse()
foriinresult:
print(i,end=”)
(1)程序代码中①处正确的代码是(_______)。
A.n%2B.n/2C.n//2D.n*2
(2)程序代码中②处可能的代码是(_______)。
A.n%2B.n/2C.n//2D.n*2
14.冠军在A、B、C、D四位同学中。
A说:
“不是我”,B说:
“是C”,C说:
“是D”,D说:
“C说的不对”,已知四人中有一人说了假话。
判断出到底谁是冠军。
请在空格处填写正确的代码,使程序完善。
champion=['A','B','C','D']#设置选手列表
foriin__________:
#循环读取选手编号
cond=(i!
='A')+(i=='C')+(i=='D')+(i!
='D')#查找符合条件的选手
ifcond==_____:
#说真话是否是3人
print("冠军是:
",_________)#输出冠军
input("运行完毕,请按回车键退出...")
15.地球绕太阳的运行周期为365天5小时48分46秒(合365.24219天),即一回归年。
公历的平年只有365天,比回归年短约0.2422天,每四年累积约一天,把这一天加于2月末(即2月29日),使当年的时间长度变为366天,这一年就是闰年。
判断某一年是否是闰年的方法是年份数能被4整除,但不能被100整除,或者年份数能被400整除。
以下是一段用于判断某一年是否是闰年的程序。
请将上面程序框中空格处的内容填写完整,其中①处填写代码注释
_________________________________________
16.一家商场在降价促销,如果购买金额不高于200元,会给10%的折扣,如果购买金额高于200元,会给20%的折扣。
编写一个Python程序,输入消费额(整数),显示折扣后的应付金额。
17.完善程序实现如下功能并保存:
有5个人坐在一起,第5个人说他比第4个人小3岁;第4个人说他比第3个人小3岁;第3个人说他比第2个人小3岁;第2个人又说他比第1个人小3岁;第1个人说他是38岁。
编写程序,计算出第5个人的年龄并显示。
defage(n):
ifn==1:
c=________
else:
c=age(n-1)-3
return________
print("第5人的年龄:
",age(________))
input("运行完毕,请按回车键退出...")
18.为保护环境,很多城市开始对垃圾实行分类,便于更好的进行处理,为了让大家了解垃圾的分类情况,建立了以下四类列表,list1(可回收垃圾)、list2(有害垃圾)、list3(易腐垃圾),剩下的为其他垃圾,目前,列表中已经存储了以下数据。
list1=["玻璃瓶","旧书","金属","纸板箱","旧衣服","易拉罐"]
list2=["胶片","消毒水","纽扣电池","水银温度计","过期药水","泡沫塑料"]
list3=["动物内脏","菜叶菜梗","过期食品","香蕉皮","果壳"]
根据现有列表,完成以下问题:
(1)写出从列表list3中取出“过期食品”的表达式:
___________________________________________________________________________
(2)写出从list1中截取["旧书","金属","纸板箱"]这一段的表达式:
___________________________________________________________________________
(3)现又发现一个新的列表如下:
list4=["过期化妆品","过期药品","杀虫剂"],经过判断,里面存放的为有害垃圾,如何将该列表中的元素添加到list2中,请写出相关的表达式:
__________________________________________________________________________
(4)小明在路上捡到了一个塑料瓶,判断为可回收垃圾,写出相关表达式,将塑料瓶添加到列表list1中:
__________________________________________________________________________
19.已知圆柱体的底面半径为r,高为h,(均为正整数),小张编写了一个程序计算圆柱体的地面周长和面积,圆柱体侧面积以及圆柱体体积,其中圆周率定义为:
3.14,请根据下列代码回答问题:
r=int(input(“请输入半径r:
”))
h=int(input(“请输入高h:
”))
_________________________
c=2*pi*r
s=pi*r**2
S=c*h
V=s*h
print(c,s,S,V)
(1)解决问题的程序用到的控制结构有:
__________________(填:
顺序结构、分支结构、循环结构)
(2)请将程序补充完整。
(3)请找出程序中的错误代码,并改正。
____________________________________________
20.某品牌手机第一年销量为20000台,假设平均每年的销量比上一年增加68%,请问几年后能使总销量达到60000台。
下面的程序能实现上述的功能,请将缺失的代码补充完整。
total=every_year=20000
year=1
while__________________:
every_year+=____________
total+=every_year
year+=1
print(year)
21.已知6月份10位技术考试成绩:
1
2
3
4
5
6
7
8
9
10
78
88
89
90
83
76
75
98
100
65
技术老师想统计出80分(含80)以上的人数,请完善程序,代码如下:
a=[78,88,89,90,83,76,75,98,100,65]
______
sum=0
foriinrange(n):
ifa[i]>=80:
________
print(sum)
执行上述程序段后,输出的内容是______
22.辗转相除法,又称欧几里德算法,用于计算两个正整数m、n的最大公约数。
它是已知最古老的算法,其可追溯至公元前300年前。
辗转相除法的算法步骤是,对于给定的两个正整数m、n(m>n),用m除以n得到余数r,若余数r不为0,就将n和r构成新的一对数(m=n,n=r),继续上面的除法,直到余数为0,这时m就是原来两个数的最大公约数。
因为这个算法需要反复进行除法运算,故被形象地命名为“辗转相除法”。
小曲设计了辗转相除法的算法,请根据下面算法回答问题。
描述一
描述二
描述三
①输入两个正整数m,n(m>n);
②计算m除以n所得的余数r;
③m=n,n=r;
④若r=0,则m,n的最大公约数等于m;否则转到步骤②;
⑤输出最大公约数m;
⑥结束。
(1)描述一是________描述法;描述二是流程图描述法;描述三是计算机程序语言描述法。
(2)在描述三中代码4到6行作用是__________。
(3)在描述三程序设计中,补充代码第8行划线处为__________。
23.某种数据加密方法描述如下(加密前数据是ASCII字符):
●以8个数据为一段,将n个待加密数据依次分割成若干个数据段,剩余数据(个数小于8)为独立数据段。
●数据加密规则:
数据个数等于8的数据段,对各个字符进行位置变换;数据个数小于8的数据段,不进行位置变换。
位置变换:
用位置变换密钥数组c,将数据段每个字符进行位置变换,方法如下:
加密后某数据段的第i个元素=对应原数据段的第c(i)个元素,其中i=1,2,……,8。
数值变换:
位置变换后,依次取出各个字符进行数值变换:
把该字符的ASCII码转二进制,然后与密钥m对应的二进制数(m为1到255之间的整数)按位异或运算。
异或运算(⊕)规则:
如果a、b两个值不相同,则a⊕b结果为1;如果a、b两个值相同,则a⊕b结果为0,即:
0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0。
●把上述处理的得到二进制数依次拼接,即构成最后的加密数据例如,待加密数据为“python3.50”,数组c各元素的值依次是
数组c
3
6
1
5
2
8
4
7
则数据位置变换如下:
如值变换密钥m为35(二进制表示是00100011),则字符“t”(ASCII码值是116,二进制表示是010100)的数值变换过程如下:
变换前
0
1
1
1
0
1
0
0
密钥m
0
0
1
0
0
0
1
1
变换后
0
1
0
1
0
1
1
1
(1)已知“A”的ASCII码值是65,m=35,则“A”数值变换后的结果是_______(填二进制数据)。
(2)小李根据上述算法,设计了一个数据加密程序,其VB代码如下,请在划线处填入合适的代码。
Constn=1024
Dimc(1To8)AsInteger
PrivateSubForm_Load()
‘产生位置变换密钥数组c,代码略
EndSub
Functionconvert(cAsInteger)AsString
‘程序功能:
把整数c转成8位二进制数,代码略
EndFunction
PrivateSubCommand1_Click()
DimsAsString,stAsString,ssAsString,resAsString
DimiAsInteger,jAsIntegerstartAsInteger
Dima(1Ton)AsString,b(1Ton)AsString
s=Text1.Text
st=convert(Val(Text2.Text))
Fori=1ToLen(s)
a(i)=Mid(s,i,1)
Nexti
i=1:
start=-8
DoWhile①________
IfiMod8=1Thenstart=start+8
b(i)=②_______
i=i+1
Loop
Forj=iToLen(s)
b(j)=a(j)
Nextj
Fori=1ToLen(s)
③________
Forj=1To8
IfMid(ss,j,1)=Mid(st,j,1)Then
res=res+"0"Elseres=res+"1"
'按位异或
Nextj
Nexti
Text3.Text=res
EndSub
24.某字符转置算法描述如下:
将字符串(均为大写字符)s依次转换为相对应的数值(字符A~Z对应数值1~26);
·转换后的数值以K个数据为一段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);
每一段中K个数据与K*K转置矩阵进行乘法运算;
将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值1~26对应字符A~Z),最后按原始字符串长度输出。
乘法运算规则如下:
第i个元素c(i)=第j个元素a(j)*转置矩阵第j行第i个元素b(t)的乘积之和(其中j=1,2…K)
例如:
字符串s=PYTHON,区块大小K=4,的转置过程如下:
(1)根据算法描述,上述示例中,字符“N”的相乘结果(即图中(★)处)为________。
(2)请在划线处填入合适代码。
PrivateSubCommandl_Click()
Dima(1To100)AsInteger´存储字符串,长度不超过100个字符
Dimb(1To100)AsInteger存储转置矩阵,长度不超过10*10
Dimc(1To100)AsLong
DimsAsString,tmpAsString
DimkAsInteger,tAsInteger,iAsInteger,jAsInteger
DimnAsInteger,mAsInteger,lensAsInteger
s=Textl.Text´在Textl中输入原始字符串
k=Val(Text2.Text)´在Text2中输入区块大小K
Randomize
Fori=1Tok^2
b(i)=Int(Rnd*9)+1
tmp=tmp十Str(b(i))
IfiModk=0Then
List2.AddItemtmp
tmp="".
EndIf
Nexti
lens=Len(s):
n=lens
Fori=1Ton
tmp=Mid(s,i,1)
①__________
Listl.AddItemStr(a(i))
Nexti
DoWhilenModk<>0
n=n十1
a(n)=0
Listl.AddItemStr(a(n))
Loop
Fori=1Ton
m=(i―1)Modk+1
t=1
Forj=②__________
c(i)=a(j)*b((m-1)*k+t)+c(i)
t=t+1
Nextj
Nexti
Fori=1Ton
List3.AddItemStr(c(i))
Nexti
s=″″
Fori=1Tolens
③__________
s=s+Chr(t+64)}
Nexti
Text3.Text=s´在Text3中输出转置后的字符串
EndSub
25.密码强度检测。
编写python程序,实现如下功能:
输入要检测的密码,输出密码强度结果。
密码字符分为数字字符、字母和其他符号三类。
密码强度的检测方法为:
若密码位数少于8位,则不进行强度检测,给出提示“密码位数不能少于8位,请重新输入!
”。
若密码位数在8位及以上,则进行强度检测:
若密码字符属于同一类字符,则密码强度为“弱”;若密码字符属于不同的二类字符,则密码强度为“中等”;若密码字符属于不同的三类字符,则密码强度为“强”。
(1)若输入“12abcd5!
”,则输出结果为_________(选填,选字母:
A.密码位数不能少于8位,请重新输入!
/B.弱/C.中等/D.强)
(2)实现上述功能的程序如下,请在划线处填入合适的代码。
password=input(“请输入要检测的密码:
”)
①_______________
ifn<8:
print(“密码位数不能少于8位,请重新输入!
”)
else:
n1=0
n2=0
n3=0
foriinrange(0,n,1):
②_______
if“0”<=ch<=“9”:
n1=1
elif“a”<=ch<=“z”or“A”<=ch<=“Z”:
n2=1
else:
n3=1
③_____
ifx==3:
print(“强”)
elifx==2:
print(“中等”)
else:
print(“弱”)
26.(项目情境)递归就是自己调用自己,它是设计和描述算法的一种有力工具,常常用来解决比较复杂的问题。
为求解规模为N的问题,设法将它分解成规模较小的问题,从小问题的解容易构造出大问题的解,并且这些规模问题较小的问题也能采用同样的分解方法,分解成规模更小的问题,并能从这些更小问题的解构造出规模较大问题的解。
一般情况下,规模N=1时,问题的解是已知的。
已知:
从1到n的连续自然数相乘的积、叫做阶乘、用符号n!
表示。
如5!
=1×2×3×4×5,规定0!
=1。
我们用递归算法可以较容易求n的阶乘。
求n的阶乘算法可以描述如下:
n!
=n*(n-1)!
(n-1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NCTPython 编程 二级 模拟 答案 word 程序 填空 阅读 试题