程序设计思想与方法第1页共10页一.选择题:将唯一正确的选项写在题前括号中(每题1分,共10分)【】1.print'%d.%02d%%'%(101/7,101%7)的运行结果是:A.14.%02B.14.023C.14.03%D.101/7.02101%7%%【】2.设s=PythonProgramming,那么prints[-5:]的结果是:A.mmingB.PythoC.mminD.Pytho【】3.range(2,10,2)的返回结果是哪个?A.[2,4,6,8]B.[2,4,6,8,10]C.(2,4,6,8)D.(2,4,6,8,10)【】4.过程化程序设计最常采用的设计技术是:A.自顶向下设计技术B.自底向上设计技术C.原型设计技术D.抽象化设计技术【】5.以下关于函数说法正确的是:A.函数的实际参数和形式参数必须同样数量和名字B.函数的形式参数既可以是变量也可以是常量C.函数的实际参数不可以是表达式D.函数的实际参数可以是其他函数的调用【】6.下面问题属于计算机本质上不可解问题的是:A.Hanoi塔问题B.Halting问题C.排序D.查找问题【】7.debug.py文件中代码如左下图,test.py文件中的代码如右下图文件,且debug.py和test.py位于同一文件夹中,那么运行test.py的输出结果是什么?A.debugB.__name__C.testD.__main__上海交通大学试卷(B)(2012至2013学年第一学期)班级号学号______________姓名课程名称程序设计思想与方法成绩#code1:debug.pydefout():print__name__#code2:test.pyimportdebugif__name__=='__main__':debug.out()程序设计思想与方法第2页共10页【】8.下列标识符中哪个是合法的?A._7a_bB.breakC._a$bD.7ab【】9.计算思维的特性是:(1).概念化(2).程序化(3).计算机的思维方式(4).人的思维方式A.(1)(4)B.(2)(3)C.(1)(3)D.(1)(2)【】10.字符串s='a\nb\tc',则len(s)的值是:A.7B.6C.5D.4二.概念填空(每空1分,共15分)1.移动n个盘子的汉诺塔问题,需要的时间。2.计算思维的3大支柱,或3个A,指、和。3.执行print1.9-1==0.9,结果是False的原因是。4.下面语句的执行结果是。s='@#$'printstring.split(3*s)5.人类认识世界和改造世界的三种思维:、和计算思维。其中计算思维是运用的基础概念进行、以及等的一系列思维活动。6.Python提供了机制来专门处理程序运行时错误,相应的语句是。7.已知ans=’n’,则表达式ans==’y’or‘Y’的值为。我承诺,我将严格遵守考试纪律。承诺人:题号得分批阅人(流水阅卷教师签名处)程序设计思想与方法第3页共10页三.阅读程序并回答问题(每题5分,共40分)1.请写出下面程序的执行结果。deff1():x=10print'Inf1x=%d'%(x)deff2(x):x=20print'Inf2x=%d'%(x)defmain():x=30f1()f2(x)print'Inmainx=%d'%(x)if__name__=='__main__':main()2.请写出下面程序的执行结果。defreverse1(lista):length=len(lista)listb=listaforiinrange(length):listb[i]=lista[length-i-1]returnlistbdefmain():la=['aa','bb','cc','dd','ee']lb=reverse1(la)printlaprintlbif__name__=='__main__':main()3.请写出下面程序的执行结果。程序设计思想与方法第4页共10页deff(lst):n=len(lst)foriinrange(1,n):flag=Falseforjinrange(n-1,i-1,-1):iflst[j-1]lst[j]:lst[j],lst[j-1]=lst[j-1],lst[j]flag=Trueifnotflag:breakl=['Whatever','is','worth','doing','is','worth','doing','well']f(l)printl4.请写出下面程序的执行结果。deffoo(a,index,value):message=successtry:a[index]=valueexceptIndexError:message=listindexoutofrangereturnmessagedefmain():a=[1,2,3]index,value=1,10.0message=foo(a,index,value)printmessage=%s,value=%.1f%(message,value)index,value=3,30.0message=foo(a,index,value)printmessage=%s,value=%.1f%(message,value)printaif__name__=='__main__':main()5.阅读下面程序程序设计思想与方法第5页共10页defpower(n,k)returnn*power(n,k-1)defmain()printpower(3,3)if__name__=='__main__':main()请问该程序是否正确?如果正确的话,请写出运行结果;如果不正确,则修改程序并写出相应运行结果。6.按照以下要求,改写程序:(1)、在给定的Circle类中增加二个方法setRadius和area,分别实现设定圆半径和计算圆的面积;(2)、在主函数最后增加相应代码,给圆设定新的半径为10,然后显示圆的面积。importmathclassCircle:def__init__(self,radius,point_x,point_y):self.radius=radiusself.point_x=point_xself.point_y=point_ydefgetX(self):returnself.point_xdefgetY(self):returnself.point_ydefgetRadius(self):returnself.radiusdefmain():c1=Circle(2,5,6)printc1.getX()printc1.getY()printc1.getRadius()if__name__=='__main__':main()7.当输入为8时,请写出下面程序的运行结果。程序设计思想与方法第6页共10页deffoo(num):forjinrange(2,num/2+1):ifnum%j==0:returnFalseelse:returnTruedefmain():n=input(Pleaseinputaninteger:)c=0foriinrange(2,n+1):iffoo(i):c+=1printc,if__name__=='__main__':main()8.请写出下面程序的执行结果。defmain():a=[50,75,53,92,77,64,79,21]s=[0]*10foriinrange(len(a)):k=a[i]/10s[k]=s[k]+1m=s[0]k=1whilek10:ifs[k]!=0:print%d#%(s[k]),ifs[k]m:m=s[k]k+=1print%d%(m)if__name__=='__main__':main()程序设计思想与方法第7页共10页四.程序填空(每空1分,共15分)1.下面程序作用是求解两个正整数m,n的最大公约数,请补充完整。defgcd(m,n):ifnm:ifm%n==0:else:return2.下面程序利用二分查找法的思想解决如下问题:给定由不同整数a0,a1,a2,…,an按升序排成的序列,确定是否至少存在一个下标i,使得ai=i。如果存在,则返回True;否则返回False。请把程序补充完整。defrecBinSearch(nums,low,high):iflowhigh:returnmid=(low+high)/2ifitem==mid:returnelifmiditem:returnelse:returndefmain():nums=[-6,-4,-3,3,4,7]printrecBinSearch()if__name__=='__main__':main()程序设计思想与方法第8页共10页3.下面程序作用是打印N阶魔阵(N为奇数),请补充完整。{规则:1、第一个元素“1”:第一行中间一列2、下一单元:行-1,列+13、如行-1,列+1有内容,则下一单元为“行+1,列不变”}defmagicMatrix():scale=input(inputscale:)magic=[]foriinrange(scale):3阶魔阵magic[i]=scale*[0]row=0magic[row][col]=1forcountinrange(2,scale*scale+1):if():row=col=else:row=magic[row][col]=countforrowinrange(scale):forcolinrange(scale):print%3d%magic[row][col],print816357492程序设计思想与方法第9页共10页五.程序设计(共20分)1.单词统计编写一个程序分析一个文件包含行数,单词数和字符数量。(空白字符:空格、Tab或换行符)要求:(1)、只有空白字符的行不能算一行;(2)、单词由空白字符分隔(3)、统计字符数量不包含空白字符例如程序的一次运行情况如下:Pleaseinputafilename:myarticle.txtMyfile.txthas10lines,212wordsand678characters.(5分)程序设计思想与方法第10页共10页2.双重回文数如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,23432、234432就是二个回文数,而123456就不是。当然,回文数的首和尾都不应该是零,因此0330就不是回文数。事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(例如二进制时为10101)时就是回文数。请编写一个程序,读入两个十进制数n和s,然后找出前n个满足大于s且在两种或两种以上进制(二进制至十进制)上是回文数的十进制数,并输出。要求:尽可能用到模块化程序设计的思想。(15分)例如程序的一次运行情况如下:Pleaseinputn,s:4,3536404546