上  海  交  通  大  学  试  卷(A卷)
( 2010  至 2011  学年 第2学期 )
班级号____________________ 学号__________  ____    姓名          
课程名称   程序设计思想和方法                      成绩          
           
一、选择题: 将唯一正确的选项写在题前括号中.每题2.
【    】(1) 本课程的目标定位是什么?
[A] 学习Python语言
[B] 学习计算机的工作原理
[C] 学习各种算法
[D] 学习用计算机解决问题
【    】(2) 下列哪个标识符是合法的?
[A] var-name        [B] !@#$%            [C] _100            [D] elif
【    】(3) 执行下列语句后的显示结果是什么?
>>> s = ”hi”
>>> print “hi”, 2*s
[A] hihihi        [B] ”hi”hihi        [C] hi hihi        [D] hi hi hi
【    】(4) 如何解释下面的执行结果?
>>> print 1.2 - 1.0 == 0.2
False
[A] Python的实现有错误
[B] 浮点数无法精确表示
[C] 布尔运算不能用于浮点数比较
[D] Python将非0数视为False
【    】(5) 一个变量来表示出生年份,下列命名中哪个最可取?
[A] b_y    [B] birth_year        [C] __birthYear__    [D] birthyear
【    】(6) 执行下列语句后的显示结果是什么?
>>> a = 1
>>> b = 2 * a / 4
>>> a = one
>>> print a,b
[A] one 0        [B] 1 0        [C] one 0.5        [D] one,0.5
【    】(7) 执行下列语句后的显示结果是什么?
>>> s = GOOD MORNING
>>> print s[3:-4]
[A] D MOR        [B] D MORN        [C] OD MOR        [D] OD MORN
  A 卷 总页 第  1 
【    】(8) 表达式1+2L*3.14>0的结果类型:
[A] int        [B] long        [C] float        [D] bool
【    】(9) 程序设计的原型(Prototyping)方法是指:
[A] 先设计程序框架结构,再逐步精化细节
[B] 先设计类,再实例化为对象
[C] 先设计简单版本,再逐步增加功能
[D] 大学python知识点汇总以上都不是
【    】(10) n个数做归并排序(merge sort),这个算法是:
[A] logn时间的    [B] 线性时间的        [C] nlogn时间的        [D] n2时间的
二、判断题:在题目前面的括号中打勾或叉.每题2.
【    】(1) 高级语言程序要被机器执行,只有用解释器来解释执行.         
【    】(2) 不同类型的数据不能相互运算.                               
【    】(3) 由于引号表示字符串的开始和结束,所以字符串本身不能包含引号.
【    】(4) 计算机科学并非研究计算机的科学,正如天文学并非研究望远镜. 
【    】(5) 算法和程序是不同的概念.                                   
【    】(6) 下面的程序段是错的:                                       
temp = 42
print "The temperature is" + temp
【    】(7) 同一Python变量可以先后赋予不同类型的值.                 
【    】(8) 计算机的计算是确定的,因此并不能真正产生随机数.           
【    】(9) 对象就是类的实例.                                         
【    】(10) Hanoi问题属于不可解问题.                             
  A 卷 总页 第  2 
三、填空题:每题2.
(1) 表达式2**3*4%5的值为:                .
(2) 函数range(1,1,1)的值:                  .
(3) 格式化输出浮点数: 宽度10,2位小数,左对齐,则格式串为:              .
(4) 表达式chr(ord(a))的值为:                .
(5) 表达式((2>=2) or (2<2)) and 2的值:              .
(6) 无穷循环while True:的循环体中可用                语句退出循环.
(7) 不用math模块中的sqrt(), 如何计算4的平方根:              .
(8) 给出一个计算机本质上不可问题:                         .
(9) 表达式%d%%%d%(1%2,3%4)值为:                   .
(10) Python的标准随机数生成器模块是:                .
四、读程序并回答问题:每题5.
(1) 下面的程序根据用户输入的三个边长a,b,c来计算三角形面积.请出程序中的错误并改正之.(设用户输入合法,面积公式无误)
import math
a, b, c = raw_input(“Enter a,b,c: ”)
s = a + b + c
s = s / 2.0
area = sqrt(s*(s-a)*(s-b)*(s-c))
print “The area is:”, area
将raw_input 改成 input
将sqrt改成 math.sqrt
(2) 下面的程序要求用户输入二进制数字0/1并显示之.出程序中的错误并改正之.
bit = input(Enter a binary digit: )
if bit = 0 or 1:
print Your input is:, bit
else
print Your input is invalid.
将 bit = 0 or 1 改成bit == 0  or  bit== 1
将else改成else:
  A 卷 总页 第  3 
(3) 下面程序的输出是什么?
def f(a, b, c):
x = y = 0
for i in range(c):
        x = x + a + y
y = y + b
return x
print f(-5, 2, 10)
注意return x 在for 的缩进里面,所以最后只有一个数据输出
range(10)其实是从0开始计数到9
再不断迭代即可
40
(4) 下面程序的输出是什么?
def f(a,b):
a = 4
print a, b
def main():
a = 5
b = 6
print a, b
f(a,b)
print a, b
main()
56
46
56
(5) 下面程序的功能是什么?
def f(a, b):
if b == 0:
        print a
else:
        f(b, a%b)
a, b = input(“Enter two natural numbers: ”)
print f(a, b)
  A 卷 总页 第  4 
求最大公因式
五、程序设计:15.
(1) 用分而治之(divide and conquer)和递归方法设计程序:产生并打印一个序列的全排列.
例如,序列[1,2,3]的全排列123,132,213,231,312,321可以这样获得:
1为前缀, 后接[2,3]的全排列
2为前缀, 后接[1,3]的全排列
3为前缀, 后接[1,2]的全排列
而[2,3]等序列的全排列依此类推.
下面给出了这个程序的部分代码,在理解上述算法的基础上补足所缺的代码.
# 函数perm(list,k,m):产生前缀为list[0:k]后接list[k:m+1]的全排列
def perm(list,k,m):
    if k == m:                       
        for i in   range(m+1)①    :
            print list[i],
        print
    else:
        for i in   range(k,m+1) ②  :
            list[k],list[i] = list[i],list[k]
            perm(list,k+1,m)  ③     
            list[k],list[i] = list[i],list[k] 
myList = input(Input a list([1,2,3,...]): )
perm(myList,0,    len(myList)-1 ④  )

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。