一、单选题(20%)每题四个选项,请在确切答案前用√标记(1)执行下列语句后的显示结果是什么?world=”world”print“hello”+world[A]helloworld[B]“hello”world[C]helloworld[D]语法错(2)下列标识符中哪个是合法的?[A]i'm[B]_[C]3Q[D]for(3)执行下列语句后的显示结果是什么?frommathimportsqrtprintsqrt(3)*sqrt(3)==3[A]3[B]True[C]False[D]sqrt(3)*sqrt(3)==3(4)设s=”HappyNewYear”,则s[3:8]的值为:[A]‘ppyNe’[B]‘pyNe’[C]‘ppyN’[D]‘pyNew’(5)算法是指: [A]数学的计算公式[B]程序设计语言的语句序列[C]对问题的精确描述[D]解决问题的精确步骤(6)type(1+2L*3.14)的结果是:[A]type‘int’[B]type‘long’[C]type‘float’[D]type‘str’(7)以下何者是不合法的布尔表达式:[A]xinrange(6)[B]3=a[C]e5and4==f[D](x-6)5(8)若k为整形,下述while循环执行的次数为k=1000whilek1:printkk=k/2[A]9[B]10[C]11[D]1000(9)选出对下列语句不符合语法要求的表达式:forvarin____________:printvar[A]range(0,10)[B]”Hello”[C](1,2,3)[D]{1,2,3,4,5}(10)计算思维能力和下述其他方面能力相比,何者更相近?[A]阅读、写作和算术[B]逻辑推理[C]形象思维[D]技巧体操二、填空题(10%,每小题2分)(1).Python中调用open函数打开文件,调用close函数关闭文件,调用函数可实现对文件内容的读取。read()orreadline()orreadlines()(2).表达式1/4+2.75的值是。2.75(3).高级程序设计语言必须由或者翻译成低级语言。编译器解释器(4).给出range(1,10,3)的值:。[1,4,7](5).请给出计算231−1的Python表达式: 。2**31-1三、是非题(20%)请在语句后的[]内填写标记√或X:(1)函数eval()用于数值表达式求值,例如eval(2*3+1)。[X](2)执行了importmath之后即可执行语句printsin(pi/2)。[X](3)Python可以不加声明就使用变量。[√](4)Python可以不对变量如a初始化就可在表达式如b=a+1中使用该变量。[X](5)选择排序算法是一个时间复杂度为nlogn算法。[X](6)Hanoi塔的解法体现了分而治之(divide-and-conquer)方法的典型用途。[X](7)一个函数中只允许有一条return语句。[X](8)可用open(“file1”,”r”)方式打开文件并进行修改。[X](9)Python语言是面向对象的。[√](10)存在一个程序判别一个Python程序的运行是否可以停止。[X]四、理解题(24%)写出下列程序的运行结果:(1).deffunc(s,i,j):ifij:func(s,i+1,j-1)s[i],s[j]=s[j],s[i]defmain():a=[10,6,23,-90,0,3]func(a,0,len(a)-1)foriinrange(6):printa[i]print\nmain()3 0 ‐90 23 6 10 (2).i=1whilei+1:ifi4:print%d\n%ii+=1breakprint%d\n%ii+=1i+=11 3 5 (3).deffoo(s):ifs==:returnselse:returnfoo(s[1:])+s[0]printfoo(HappyNewYear).raeY weN yppaH (4).deffunc(a,n,m):ifn==0:return1else:num=func(a,n/2,m)ifn%2==0:returnnum*num%melse:returnnum*num*a%mprintfunc(5,6,7)1 (5).deffoo(list,num):ifnum==1:list.append(0)elifnum==2:foo(list,1)list.append(1)elifnum2:foo(list,num-1)list.append(list[-1]+list[-2])mylist=[]foo(mylist,10)printmylist[0,1,1,2,3,5,8,13,21,34](6).deffunc(a,b):if(ab):a,b=b,ar=a%bifr==0:returnbelse:returnfunc(b,r)ans=func(342,84)printans6五、程序填空题(10%)(1).打印100~200间的全部素数,输出格式为每行10个:[----1----]n=0forminrange(101,201,2):k=int(math.sqrt(m))foriinrange([----2----],k+1):ifm%i==0:[----3----]ifi==[----4----]:ifn%10==0:print\nprint%d%m,[--5--]importmath2breakkn+=1(2).用选择排序算法对数组中的数据按由小到大排序。defsort([----1----]):foriinrange(n-1):[----2----]forj=range(i+1,n):if[----3----]k=ja[k],a[i]=a[i],a[k]defmain():list=[12,5,61,8,11,32,111,94,37,55][----4----]printThesortedlist:\nforiin[----5----]:printlist[i],print\nmain()a,nk=ia[j]a[k]sort(list,len(list))range(10)六、程序设计题(16%,每小题8分)(1)编写函数,检测给定的两维数组中是否有重复数据(已知该数组中保存了正整数):check_data(mat),如果没有重复,则函数返回真。要求算法的时间复杂度不大于O(n)。defexpand_list(list,num):iflen(list)num:returnforiinrange(len(list),num):list.append(0)defcheck_data(list):count=[]expand_list(count,10)forlineinlist:forvarinline:ifvarlen(count):expand_list(count,var+1)ifcount[var]==0:count[var]+=1else:returnFalsereturnTrue(2)设有一个背包能承受重量s(s0),又有n(n≥1)件物品,其重量列表为w=[w1,w2,...,wn].要从物品中挑选若干件放入背包,使得放入的物品重量之和正好是s.试设计递归函数f(w,s,n):当有解时返回True,并显示所选物品是哪些;无解时返回False。[提示:递归之处在于f(w,s,n)的真假等于f(w,s−wn,n−1)orf(w,s,n−1)]deff(w,s,n):ifs==0:returnTrueelif(s0)or(s0andn1):returnFalseeliff(w,s-w[n-1],n-1):printw[n-1],returnTrueelse:returnf(w,s,n-1)