NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx

上传人:b****8 文档编号:8840670 上传时间:2023-02-02 格式:DOCX 页数:29 大小:618.59KB
下载 相关 举报
NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx_第1页
第1页 / 共29页
NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx_第2页
第2页 / 共29页
NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx_第3页
第3页 / 共29页
NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx_第4页
第4页 / 共29页
NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx

《NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx》由会员分享,可在线阅读,更多相关《NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx(29页珍藏版)》请在冰豆网上搜索。

NCTPython编程二级模拟卷4含答案word程序填空阅读填空程序试题.docx

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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1