程序设计思想与方法样卷1
ython程序设计期末试卷A
A._7a_b B.break C._a$b D.7ab【】2.计算思维的特性是:(1). 概念化(2). 程序化(3). 计算机的思维方式(4). 人的思维方式A.(1)(4) B.(2)(3) C.(1)(3) D.(1)(2)【】3.字符串s= 'a\nb\tc ',则len(s)的值是:A.7 B.6 C.5 D.4【】4.print'%d.%02d%%' %(101/7, 101 % 7)的运行结果是:A.14.%02 B.14.023 C.14.03% D.101/7.02101%7%%【】5.设s = "Python Programming",那么print s[-5:]的结果是:A.mming B.Pytho C.mmin D.Pytho【】6.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)【】7.过程化程序设计最常采用的设计技术是:A.自顶向下设计技术B.自底向上设计技术C.原型设计技术D.抽象化设计技术【】8.以下关于函数说法正确的是:A.函数的实际参数和形式参数必须同样数量和名字B.函数的形式参数既可以是变量也可以是常量C.函数的实际参数不可以是表达式D.函数的实际参数可以是其他函数的调用【】9.下面问题属于计算机本质上不可解问题的是:A.Hanoi塔问题B.Halting问题C.排序D.查找问题【 】 10. debug.py 文件中代码如左下图,test.py 文件中的代码如右下图文件,且debug.py 和test.py 位于同一文件夹中,那么运行test.py 的输出结果是什么?A .debugB .__name__二.概念填空(每空1分,共15分)1.下面语句的执行结果是 。
s = '@ #$' print string.split(3 * s)2.执行 print 1.9 - 1 == 0.9,结果是False 的原因是 。
算法与程序设计考试题及答案
2009级高一算法与程序设计(选修模块)考试题满分:70分时量:60分钟笔试2010.6一、单选题(每题2分,共40分)1、0518号台风“达维”过后,要对各个单位捐款救灾情况进行分组制表,并进行积分排序,一般使用的专业电子处理软件有()A、powerpoingB、ExcelC、WordD、Visual Basic2、一位爱好程序设计的同学,想通过程序设计解决“韩信点兵”的问题,他制定的如下工作过程中,更恰当的是()A、设计算法,编写程序,提出问题,运行程序,得到答案B、分析问题,编写程序,设计算法,运行程序,得到答案C、分析问题,设计算法,编写程序,运行程序,得到答案D、设计算法,提出问题,编写程序,运行程序,得到答案3、交通警察到达案发现场,一般按照下列哪种思路开展工作()①观察、分析现场②收集必要的信息③进行判断、推理④按一定的方法和步骤解决A、②①③④B、①③②④C、③①②④D、①②③④4、下面说法正确的是()A、算法+数据结构=程序B、算法就是程序C、数据结构就是程序D、算法包括数据结构5、下列常量说明中,符合语法的是()A、CONST color=redB、CONST const=10*5C、CONST xl:=3.9;D、CONST color=”abcd”6、VB中将两个字符串连接起来的运算符有:+和&,那么“123”+45结果是()A、168B、12345C、”123”D、457、字符串”ABCD”和字符串”DCBA”进行比较,如果让比较的结果为真,应选用关系运算符()A、>B、<C、=D、>=8、设a,b,c,d,e均为整型变量,且a=13,b=2,c=10,d=3,e=2,则表达式“a -b*c \ d MOD e”的值是( )A、13B、-7C、llD、09、已知A,B,C,D是简单变量,且都已有互不相同的值,执行语句B=8;A=C;D =A;D=B;后,其值相等的变量是()A、A,DB、A,CC、C,BD、B,A10、结构化程序设计由三种基本结构组成,下面哪个不属于这三种基本结构()A、顺序结构B、输入、输出结构C、选择结构D、循环结构11、下列结果为真的关系表达式是()A、”A”<100B、23.5<20C、23<45 AND 72>8D、5<X<2012、以下运算符中运算优先级最高的是()A、+B、ORC、>D、\13、整除运算时,若运算量为实数,则先取整,后相除,结果为整型或长整型。
程序设计样题
样题一填空题(每空2分,共30分)1、C语言中结构化设计中的三种基本结构是_顺序_ 循环_ 和分支结构。
2、若a=1,b=4,c=3,则表达式!(a<b)||!c&&1的值是_0_。
3、设有四个数据元素a1、a2、a3和a4,对他们分别进行栈操作或对操作。
在进栈或进队操作时,按a1、a2、a3、a4次序每次进入一个元素。
假设栈或队的初始状态都是空。
现在进行进栈两次(即a1,a2进栈),出栈一次,再进栈两次(即a3,a4进栈),出栈一次;第二次出栈得到的元素是___a4__。
4、已知 int x =1, y=2, z=3;则 z+ = x>y?++x:++y的值是__6__。
5、已知 int a[ ] = {10,9,8,7,6}, *P = a; 则*(P+1)*(P+2)[2]的值是____54___。
6、已知 int *p(), (*q) (); 则 p是_返回值为整型指针的函数__,而q是__返回值为整型的函数的指针_______。
7、一个变量有两个重要的值。
它们是地址和值。
8、在面向对象的理论中经常会出现以下三个名词。
请用中文解释之:OOA面向对象分析; OOD面向对象设计;OOP面向对象的编程OOT面向对象测试; OOSM面向对象维护。
9、XML在地理空间信息领域的应用是处理分布式信息的选择工具。
利用它可以存储和发布各种特征的地理信息,并控制地理信息在Web浏览器中的显示。
10、定义一个指向整型数组a的整型指针。
其中a的定义如下:int a[1][2][3][4][5][6][7][8]; int *p= a; 。
二选择题(每小题2分,共70分)1、 __ is the address of a variable or a variable in which theaddress of another variable is stored. (B )A.Director;B.Pointer;C.Array ; D.Record;2 面向对象程序设计以____为基本的逻辑构件,用____来描述具有共同特征的一组对象;以____为共享机制,共享类中的方法和数据。
程序设计思想与方法——第一章
31
Python安装与运行
• 版本:教材和上课都采用Python 2.7
– 与最新的Python 3.x有不兼容的地方.
• 安装后,启动Python解释器
– 命令行
– GUI
Lu Chaojun, SJTU
32
第一个程序:HelloWorld
• 交互方式 >>> print "Hello, World!" Hello, World! • 本课程的教学中常用交互方式演示新语句 • 实际上很少用交互方式执行程序
7
Lu Chaojun, SJTU
计算机:软件
• 计算机是信息处理机器,信息处理过程由 预定的程序控制.
– 单条指令是做不了什么事情的,需要大量指 令组成一个逐步执行的指令序列-程序.
• 各种程序统称为计算机软件. • 没有软件的计算机毫无用处.
Lu Chaojun, SJTU
8
计算
• 计算:利用计算机执行程序来解决问题.
– 多次执行同一程序需要多次输入程序 – 多行语句无法一次性执行
Lu Chaojun, SJTU
33
第一个程序:HelloWorld
• 程序文件
– 将语句保存在纯文本文件hello.py中
print "Hello, World!"
– 四种执行方式
在IDLE中用Run Module菜单执行 双击hello.py文件图标 >>> import hello C:\Python27> python hello.py
次级存储器
计算机:硬件(2)
• 中央处理器(CPU):执行指令.
– 每条指令只能完成简单的操作!
算法与程序设计模拟试题附答案
算法与程序设计模拟试题一、单项选择题1.穷举法的适用范围是()。
A.一切问题B.解的个数极多的问题C.解的个数有限且可一一列举D.不适合设计算法2.通过多重循环一一列举出解决问题的所有可能解,并在逐一列举的过程中,检验每个可能的解是否是问题的真正解的算法是(),而从实际问题中归纳出数学解析式,就此设计出合适的算法是()。
A.解析法穷举法B.递归法解析法C.穷举法解析法D.穷举法,递归法3.判断某自然数m是不是素数(只能被1或本身整除的大于1的自然数称为素数)的算法基本思想是:把m 作为被除数,将2到m-1中的自然数作为除数,逐一进行相除,如果都除不尽,m就是素数,否则m就不是素数。
这种判定素数的算法属于()。
A.枚举算法B.解析算法C.递归算法D.排序算法4.图书管理系统对图书管理是按图书的序号从小到大进行管理的,若要查找一本已知序号的书,则能快速的查找的算法是()。
A.枚举算法B.解析算法C.对分查找D.冒泡排序5.VB程序如下:Dim aa = Array(1,2,3,4,5,6,7,8)i = 0For k = 100 To 90 Step -2s = a(i)^2If a(i) > 3 Then Exit Fori = i + 1Next kPrint k; a(i);s上述程序的输出结果是()。
A.88 6 36 B.88 1 2 C.90 2 4 D.94 4 166.在所有排序算法中,关键字比较次数与纪录的初始排列次序无关的是()。
A.希尔排序B.起泡排序C.插入排序D.选择排序7.在使用计算机处理数据的过程中,往往需要对数据进行排序,所谓排序就是()。
A .把杂乱无章的数据变为从小到大排列的数据B .把杂乱无章的数据变为从大到小排列的数据C .把杂乱无章的数据变为有序的数据D .以上说法都错误8.某食品连锁店5位顾客贵宾消费卡的积分依次为900、512、613、700、810,若采用选择排序算法对其进行从小到大排序,如下表,第二趟的排序结果是( )A .512 613 700 900 810B .512 810 613 900 700C .512 900 613 700 810D .512 613 900 700 8109.在《算法与程序设计》教材中,主要介绍了下列“算法”( ) 。
算法和程序设计分析及试题附答案_08-算法和程序设计
选修1:算法与程序设计第一单元算法一、知识内容(一)使用计算机解决问题的一般过程考试要求:对所列知识要知道其内容及含义,并能用自己的语言或动作进行表达、判断和直接运用。
1.一般过程(1)分析问题确定要使用计算机来“做什么”,即确定解题的任务。
(2)寻求解决问题的途径和方法。
(3)用计算机进行处理。
2.确定解决问题的方法及步骤化确定了解决问题的方法后,必须把解决问题的方法步骤化,即用某种方式告诉计算机每个需做什么。
计算机开始计算之前,需把解决问题的程序存储在内存中。
通常一个程序包括指令和数据两部分。
(1)指令部分:指令是对计算机操作类型和操作数地址做出规定的一组符号。
(2)数据部分:计算所需的原始数据、计算的中间结果或最终结果。
3.设计程序时需要考虑的问题(1)数据的存储:计算所需要的原始数据、计算产生的中间结果需要存储在不同的变量中。
(2)计算的过程:把解决问题的方法步骤化,并用计算机能执行的指令来有序地实现对应的步骤。
(3)典型的指令类型有输入指令、输出指令、算术运算指令、逻辑运算指令和控制转移指令。
(二)算法及算法的表示方法考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。
1.算法的特征(1)有穷性。
一个算法必须保证它的执行步骤是有限的,即它是能终止的。
(2)确定性。
算法中的每个步骤必须有确切的含义,不应当有模棱两可的。
(3)能行性。
算法中的每一个步骤都要足够简单,能实际能作的,而且在能在有限的时间内完成。
(4)有0个或多个输入。
(5)有一个或多个输出。
(三)用自然语言、流程图、伪代码表示算法考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。
1.自然语言就像写文章时所列的提纲一样,可以有序地用简洁的自然语言加数学符号来描述算法。
程序设计试卷及答案
程序设计试卷及答案一、选择题(每题2分,共20分)1. 下列哪个选项是正确的?A. 程序设计是一种艺术形式B. 程序设计是一种科学C. 程序设计只涉及硬件的操作D. 程序设计只需要机器语言的理解和应用2. C语言中的函数可以返回多个值吗?A. 可以B. 不可以3. 以下哪个关键字用于定义常量?A. constB. staticC. volatileD. extern4. 以下哪个选项是正确的?A. 集成开发环境(IDE)只用于调试程序代码B. 集成开发环境(IDE)只用于编译程序代码C. 集成开发环境(IDE)用于编写、调试和编译程序代码D. 集成开发环境(IDE)只用于编写程序代码5. 在C语言中,以下哪个运算符用于获取变量的地址?A. &B. *C. ->D. sizeof6. 下列哪个选项是正确的?A. 结构体是由相同类型的数据组成B. 结构体是 C 语言中的一种数据类型C. 结构体可以包含函数D. 结构体只能包含基本数据类型的成员7. 以下哪个关键字用于定义函数的形参类型?A. voidB. intC. externD. typedef8. 哪个是指针的正确声明方式?A. int *p;B. pointer p;C. p int;D. ptr int;9. 标识符的命名规则中,以下哪个选项是错误的?A. 可以使用数字作为标识符的开头B. 可以使用下划线作为标识符的开头C. 标识符可以由字母、数字和下划线组成D. 标识符长度可以任意长短10. 哪个是正确的if语句的用法?A. if (条件) 语句;B. if 条件语句;C. if 条件 then 语句;D. if (条件) then 语句;二、填空题(每空2分,共20分)1. C语言中,定义带有两个整型参数和整型返回值的函数的声明应该是:`int add(int a, int b);`2. 在C语言中,通过`malloc()`函数动态分配内存之后,应使用`free()`函数释放内存。
程序设计Ⅰ复习题2023年修改整理
精品文档名目2单选题_________________________________________8多选题_________________________________________推断题_________________________________________1215填空题_________________________________________精品文档单选题的核心部分。
)是.NET平台是一个新的开发框架,( .NET Framework。
表 )2.Access数据库最基础的对象是(控件的功能(记录导航)。
3.BindingNavigator)属性。
控件中的(DataSource4.要连接数据库,需要设置BindingSource)语言演化而来。
和C++5.C#语言从(C对象 )的语言。
6.C#是一种面向(7.C#语言取消了( 指针 )语法。
)方法更新数据库。
对象的( Update中通过DataAdapter)方法填充记录集。
对象的( Fill中记录集的显示是通过DataAdapter控件中显示的字段名称,应修改( Columns)属性。
要设置DataGridView10.中执行一个存储过程时,假如要设置输出参数则必须同时设置参数的方向和(类型),必要时还要设在11.置参数尺寸。
)对象保存当前数据集。
中通过( DataSet12.)。
13.在下面循环语句中循环体执行的次数为(n/2+1for(int i=0; i<n; i++)if(i>n/2) break;”循环次数为(7)次){ }循环语句“for14.(int i=30;i>=10;i-=3下面程序段的运行后,n的值为(6)。
15.n=1;for(i=1;i<=3;i++)n=n*i;)的值为(55下面程序段执行后,sum16.int i,sum;for(i=1,sum=0;i<=10;i++)sum+=i;中产生二义性,C语言规定else子句总是与(其之前最近的,同一复合语为了幸免在嵌套的条件语句if-else17.)配对。
程序设计试题
程序设计试题程序设计试题一题目:计算两个整数的和描述:编写一个程序,计算两个整数的和,并将结果输出到屏幕上。
答案:```pythonnum1 = 10num2 = 20sum = num1 + num2print("两个整数的和为:", sum)```程序设计试题二题目:判断一个数是否为偶数描述:编写一个程序,判断一个输入的整数是否为偶数,并将判断结果输出到屏幕上。
答案:```pythonnum = int(input("请输入一个整数:"))if num % 2 == 0:print(num, "是偶数")else:print(num, "不是偶数")```程序设计试题三题目:闰年判断描述:编写一个程序,判断输入的年份是否为闰年,并将判断结果输出到屏幕上。
答案:```pythonyear = int(input("请输入一个年份:"))if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):print(year, "是闰年")else:print(year, "不是闰年")```程序设计试题四题目:字符串翻转描述:编写一个程序,实现字符串的翻转,并将结果输出到屏幕上。
答案:```pythonstring = input("请输入一个字符串:")reverse_string = string[::-1]print("翻转后的字符串为:", reverse_string)```程序设计试题五题目:九九乘法表描述:编写一个程序,输出九九乘法表。
答案:```pythonfor i in range(1, 10):for j in range(1, i+1):print(j, "*", i, "=", i*j, end="\t")print()```以上是几道常见的程序设计试题的答案,可以根据需要来选择适合的格式使用。
程序设计思想与方法答案_陆朝俊
程序设计思想与方法课后习题答案陆朝俊1、page76_Q12from math import *r = input("请输入半径长:")V = 4 / 3 * pi * r **3S = 4 * pi * r ** 2print "Volume is ",Vprint "Superficial area is ",S2、page121_Q12x=input("请输入体重/kg:")y=float(input("请输入身高/m:"))l= x / ( y * y )if l < 19:print "您的BMI指数为%.2f" %(l)+",属于"+"轻体重"elif l < 25:print "您的BMI指数为%.2f" %(l)+",属于"+"健康体重"elif l < 28:print "您的BMI指数为%.2f" %(l)+",属于"+"超重"else:print "您的BMI指数为%.2f" %(l)+",属于"+"肥胖"z=raw_input("请输入任意键结束程序")3、page163_Q15def delta(a,b):delta =float( a - b )return deltadef slope(p1, p2, n):delta_x = delta (p1[0], p2[0])delta_y = delta (p1[1], p2[1])if delta_x != 0:k = delta_y / delta_xif n:print "通过两点的直线斜率为%0.2f" %(k)else:k = float("inf")if n:print "通过两点的直线斜率不存在"return k# n用来决定是否执行print语句def intercept(p1, p2, n):delta_x = delta (p1[0], p2[0])delta_y = delta (p1[1], p2[1])k = slope(p1, p2, n)if delta_x != 0:b = p2[1] - k * p2[0]print "通过两点的直线在y轴上的截距为%0.2f" %(b) else:b = float("inf")if n:print "通过两点的直线在y轴上的截距不存在"return bdef input_coor(i):x = input("请输入第%0.1d个点的x坐标:"%(i))y = input("请输入第%0.1d个点的y坐标:"%(i))return (x, y)p1 = input_coor(1)p2 = input_coor(2)slope(p1, p2, 0)intercept(p1, p2, 1)4、page122_Q22pi = 1.0delta = 1.0i = 2x = 1.0while delta >= 0.00001:y = ( - 1.0 )**( i + 1 )/( 2 * i - 1 )i = i + 1pi = pi + ydelta = max(y - x , x - y)x = y#print i,deltaprint 4 * pix = input()5、page201_Q11# -*- coding: cp936 -*-global Cglobal skyglobal gdglobal awayfrom Tkinter import *from math import sin,cos,pi,logfrom time import sleepfrom random import randintdef main():global Cglobal skyglobal gdglobal awayroot = Tk()C = Canvas(root, height = 400, width = 600, bg = "white" )C.pack()gd = C.create_polygon((0,266), (0,400), (600,400), (600,266),fill = "grey", outline = "")sky = C.create_polygon((0,266), (0,0), (600,0), (600,266),fill = "skyblue", outline = "")road= C.create_polygon((250,270),(350,270),(500,400),(100,400),fill ="SlateGray", outline ="SlateGray")side_1= C.create_line((250,270),(100,400),fill = "Bisque",width = 10)side_2= C.create_line((350,270),(500,400),fill = "Bisque",width = 10)away = C.create_polygon((249,266),(351,266),(351,276),(249,276),fill = "skyblue",outline = "skyblue")p1 =(540, 330)# = input("tree location")#3/4处p2 =(80, 330)# = input("snowman location")#1/4处p3 = (100, 100)#太阳tree(p1)#树完成!!!snowman(p2)#少眼睛和鼻子sun(p3)x = input("关闭程序")def snow(p,x):a = p[0]b = p[1]p1 =(a + x, b)p2 =(a + x / 2, b - 1.732 / 2 * x)p3 =(a - x / 2, b - 1.732 / 2 * x)p4 =(a - x, b)p5 =(a - x / 2, b + 1.732 / 2 * x)p6 =(a + x / 2, b + 1.732 / 2 * x)line_14 = C.create_line(p1, p4, fill = "snow")line_25 = C.create_line(p2, p5, fill = "snow")line_36 = C.create_line(p3, p6, fill = "snow")list = [line_14,line_25,line_36]return listdef star(p,i):global Clist = ["red","Gold","PaleTurquoise","pink","orange","Snow"]a = p[0]b = p[1]p1 = (a, b - 11)p2 = (a - 6, b + 9)p3 = (a + 8, b - 3)p4 = (a - 8, b - 3)p5 = (a + 6, b + 9)C.create_polygon(p1,p2,p3,p4,p5,fill = list[i - 1], outline = "" )def sun(p):#太阳的曲线方程:y = 0.00125 * x ^ 2 + 162.5 - 0.75 * x,微分方程: dy/dx = 0.01 * x - 2global Cglobal skyglobal gdglobal awayu = 0#用于记录第几次天亮#v = input("请输入一个数字,可以控制程序运行的速度哦~愈大愈快,建议值为3:") while True:list_x = []for i in range(50):list_x.append(randint(0,600))#用于雪花的x坐标list_y = []for i in range(50):list_y.append(randint(0,600))#用于雪花的y坐标t = 0a = p [0]b = p [1]p1 = [a - 15, b - 15]p2 = [a + 15, b + 15]#sun = C.create_oval(p1, p2, fill = "orange", outline = "")x = aif u >= 1:a = x - 130C.itemconfig(sky,fill = "skyblue")C.itemconfig(gd,fill = "gray")C.itemconfig(away,fill = "skyblue",outline = "skyblue")C.update()sleep(0.5)while x < 650:t = t + 0.005 * pix = a + 1#dx = 1y = 0.00125 * x * x + 162.5 - 0.75 * xa = xb = y#新太阳的x,ylist = []for i in range(12):n = 2 * pi / 12 * ic = a + cos (n + t) * 20d = b + sin (n + t) * 20e = a + cos (n - 0.2 + t) * 40f = b + sin (n - 0.2 + t) * 40m = C.create_line((c, d), (e, f), fill = "red")list.append(m)C.update()sun = C.create_oval([a - 15,b - 15], [a + 15, b + 15], fill = "orange", outline = "")#print a,bC.update()for i in range(len(list)):C.delete(list[i])C.delete(sun)sleep(0.04)t = 0#起始处(-30,186.125)a = -30x = aC.itemconfig(sky,fill = "midnightblue")C.itemconfig(gd,fill = "DarkGray")C.itemconfig(away,fill = "midnightblue",outline = "midnightblue")C.update()sleep(0.5)while x < 650:t = t + 1x = a + 1#dx = 1y = 0.00125 * x * x + 162.5 - 0.75 * xa = xb = y#新月亮的x,ymoon_1 = C.create_oval([a - 17,b - 17], [a + 17, b + 17], fill = "ghostwhite", outline = "")moon_2 = C.create_oval([a - 30, b - 25], [a + 7, b + 12], fill = "midnightblue", outline = "")list = []for i in range(50):snowlo = ((list_x[i] + t)%600, (list_y[i] + 1.5 * t)%400)list.append(snow(snowlo,3))C.update()sleep(0.03)C.delete(moon_1)C.delete(moon_2)for i in range(50):for j in range(3):C.delete(list[i][j])C.update()u = u + 1def tree(p1):#树根的大小不对,再调整p2 = (p1[0] - 25, p1[1] - 25)p3 = (p1[0] - 25, p1[1] - 50)p4 = (p1[0] - 40, p1[1] - 50)p5 = (p1[0] - 40, p1[1] - 25)p6 = (p1[0] - 65, p1[1] )global Cpa = p1pb = p6i = 1while p1[1] - pb[1] <= 50 :#树根高if pa[0] - pb[0] <= 20:pa = (pa[0], pa[1]-1)pb = (pb[0], pb[1]-1)C.create_line(pa, pb, width = 1, fill = "brown")else :pa = (pa[0] - 25 * 0.5 ** i, pa[1]-1)pb = (pb[0] + 25 * 0.5 ** i, pb[1]-1)C.create_line(pa, pb, width = 1, fill = "brown")i = i + 1#root_right_bottom = C.create_line(p1, p2, p3, smooth = 1, width = 4)#root_top = C.create_line(p3, p4, width = 4)#root_left_bottom = C.create_line(p6, p5, p4, smooth = 1, width = 4)#root_right_bottom = C.create_line(p1, p2, smooth = 1, width = 4)#root_top = C.create_line(p2, p3, p4, p5, width = 4)#root_left_bottom = C.create_line(p5, p6, smooth = 1, width = 4)#树根轮廓线p = ( (p1[0] + p6[0]) / 2, (p1[1] + p6[1]) / 2 )pn = (p1[0] + 40, p1[1] - 50)#每层树叶右下角的坐标#改为40,50leaf = []i = 1while pn[0] - p[0] >= 20:#最上层树叶宽度限制dx = pn[0] - p[0]pm = (p[0] - 1 * dx, pn[1] )pl = (p[0], pn[1] - dx )leaf.append(C.create_polygon(pn, pm, pl, width = 1, fill = 'ForestGreen', outline = "YellowGreen"))pn = (pn[0] - 12, pn[1] - 24)px = (pn[0] - 12 - 1.4 ** i, pn[1] + 20)py = (pm[0] + 12 + 2 ** i, pm[1]-4)if i <= 3:star(px,i)star(py,i + 3)else:star(px,i - 3)star(py,i)i = i + 1star(pl,6)def snowman(p1):#p1,身体正中global Ca = body_x = 40#input("body_x")b = body_y = 37#input("body_y")c = head = 25#input("head")#输入雪人的身体宽和高d = theta = 25.0 * pi /180.0e = wide = 4#input("width")#围巾和帽子的宽度#l = leg = input("leg")p2 = (p1[0] + a, p1[1] + b)#身体所在框右下点p3 = (p1[0] - a, p1[1] - b)#身体所在框左上点p4 = (p1[0], p1[1] - c + e - b )#头部中间,做成圆脸p5 = (p1[0] + b * cos(d), p1[1] - b * sin(d) )#它的左手p6 = (p1[0] - b * cos(d), p1[1] - b * sin(d) )#它的右手p7 = (p5[0] + 3, p5[1] + 5)#手臂的宽度由此而来,3/5p8 = (p6[0] - 3, p6[1] + 5)p9 = (p5[0] + 20, p5[1] - 12)#p10= (p6[0] - 20, p6[1] - 12)p11= (p7[0] + 20, p7[1] - 12)#p12= (p8[0] - 20, p8[1] - 12)p13= (p9[0] - 5, p9[1] - 8 )#p14= (p10[0] + 5, p10[1] - 8 )p15= (p9[0] + 5, p9[1] - 3 )p16= (p10[0] - 5, p10[1] - 3 )p17= (p11[0] + 5, p11[1] + 8)# #3,5p18= (p12[0] - 5, p12[1] + 8)p19= (p9[0] + 5 * 1.5, p9[1] - 3 * 0.5)#p20= (p10[0] - 5 * 1.5, p10[1] - 3 * 0.5)p21= (p11[0]+ 5 * 2.5, p11[1]- 3 * 2.5)#p22= (p12[0]- 5 * 2.5, p12[1]- 3 * 2.5)p23= (p4[0] - c, p4[1] - c )p24= (p4[0] + c, p4[1] + c )p25= (p4[0] - 0.167 * c, p4[1] + 0.33 * c )p26= (p4[0] + 0.667 * c, p4[1] + 0.33 * c )p28= (p4[0] + 0.6 * c, p4[1] - 0.5 * c)p27= (p28[0]- c, p28[1])arm1 = C.create_polygon(p5, p7, p11, p9,fill = "brown", smooth = 1)hand1_1= C.create_polygon(p13, p19, p15, p9, fill = "snow", outline = "grey", smooth = 1) hand1_2= C.create_polygon(p15, p21, p17, p11, p9, fill = "snow",outline = "grey", smooth = 1)#arm2 = C.create_polygon(p6, p8, p12, p10,fill = "brown", smooth = 1)hand2_1= C.create_polygon(p14, p20, p16, p10, fill = "snow", outline = "grey", smooth = 1) hand2_2= C.create_polygon(p16, p22, p18, p12, p10, fill = "snow",outline = "grey", smooth = 1)body = C.create_oval(p3, p2, fill = "snow", outline = "" ,width = 10)arm2 = C.create_polygon(p6, p8, p12, p10,fill = "brown", smooth = 1) #让左手臂在身体图层的上面,展现一种立体感head = C.create_oval(p23, p24,fill = "snow", outline = "grey")eyes_1 = C.create_oval((p27[0] - 5, p27[1] - 4), (p27[0] + 5, p27[1] + 4), fill = "Maroon")eyes_2 = C.create_oval((p28[0] - 5, p28[1] - 4), (p28[0] + 5, p28[1] + 4), fill = "Maroon")nose = C.create_polygon(p4, p25, p26, fill = "orange", outline = "", )C.move(nose, 0, -5)main()。
《算法和程序设计》模拟测试卷(一)含答案
《算法与程序设计》模拟测试卷(一)考试时间:90分钟满分:100分一、单项选择题(共20个空,每空2分,共40分)1.使用计算机解题的步骤,以下描述正确的是:( )。
A.正确理解题意→设计正确算法→寻找解题方法→编写程序→调试运行B.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行C.正确理解题意→寻找解题方法→设计正确算法→调试运行→编写程序D.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行2.下列算法展示了一台自动售货机一次售货的工作流程:步骤1:等待接收一枚硬币。
步骤2:若硬币面值不是0.1元、0.5元、1元,退回硬币。
步骤3:若投入货款达1.5元或以上,执行步骤4和5。
步骤4:售出一个口香糖。
步骤5:从接收货款中减去1.5元。
步骤6:退回余额。
下列关于这个算法说法正确的是()。
A.上述算法采用自然语言表示B.这台自动售货机在任何情况下也不会售出口香糖C.上述算法属于顺序算法结构D.这台自动售货机只会在接受硬币达2元时才放出口香糖3.Visual Basic规定窗体文件的扩展名是( )。
A..for B..frm C..vbp D..bas 4.假设某一程序如下,则能触发该程序的事件是()Private Sub command2_Click()Form1.Caption=“VB示例”End SubA.command2 B.click C.form1 D.caption5.下列结果为True的逻辑表达式是()。
A.Not(3<8) B.(3<8)And(5>10) C.(3<8)And(5<10) D.(3>8)Or(5>10) 6.以下语句中正确的是( )。
A.Const var1 as integer=50000 B.Dim 888fl as StringC.x+y = 9 D.Dim d(1 to 500) As Double7.在VB中,添加一个标签,在工具箱中要单击控件是()。
C++程序设计——思想与方法 第1章
集成的编程环境一般都支持各种调试工具,包括: ➢ 变量跟踪 ➢ 单步执行 ➢ 断点设置
第一章 绪论
ห้องสมุดไป่ตู้
13
第一章 绪论
14
THANKS
C++ compiler
01100010 11101001
Object program
链接与加载
链接(link):将目标程序与已有的其它目标程 序连接起来,产生一个可执行的程序。
加载(load):为程序在内存中定位。
第一章 绪论
10
程序设计过程
第一章 绪论
11
源文件 main() {…}
compiler
算法的表示 :有自然语言、传统的流程图、结构 化流程图、伪代码和PAD图等方法。
第一章 绪论
5
内容导航
CONTENTS
第一章 绪论
6
什么是程序设计 算法 编码 编译与链接 程序调试
编码
第一章 绪论
7
用程序设计语言表示算法 C++是从C发展而来,而C又是从B语言发展而来 C语言是由贝尔实验室在B语言的基础上开发的,并有美国国家标准组织和国际
标准化组织进行了标准化 C++是C的扩展,主要是提供了面向对象的功能
内容导航
CONTENTS
第一章 绪论
8
什么是程序设计 算法 编码 编译与链接 程序调试
编译与链接
解释执行:逐句翻译并执行 编译执行:全部翻译成机器指令
第一章 绪论
9
main() {int i, s;
i=1; s=0;
Source program
习题_C++程序设计——思想与方法 慕课版(第3版)_[共3页]
简单的情况区分可以用关系表达式实现。
通俗地讲,关系运算就是比较。
复杂的情况区分可以用逻辑表达式实现。
逻辑表达式就是用逻辑运算符连接多个表达式,以表示更复杂的情况。
关系运算和逻辑运算的结果是布尔型的值:true和false。
但在C++中,布尔型的值可以和其他类型的值混合使用,可以将关系表达式或逻辑表达式作为算术表达式的子表达式,此时,true表示1,false表示0。
也可以将其他类型的值用于逻辑表达式,此时,0表示false,非0表示true。
根据逻辑判断的结果执行不同的处理有两种途径:if语句和switch语句。
if语句用于两个分支的情况,switch用于多分支的情况。
3.7 习题简答题1.写出测试下列情况的关系表达式或逻辑表达式。
a.测试整型变量n的值在0~9之间,包含0和9。
b.测试整型变量a的值是否是整型变量b的值的一个因子。
c.测试字符变量ch中存储的是一个数字字符。
d.测试整型变量a的值是否是奇数。
e.测试整型变量a的值是否为5。
f.测试整型变量a的值是否为7的倍数。
2.假设myFlag声明为布尔型变量,下面的if语句会有什么问题?if (myFlag == true)...3.设a=3,b=4,c=5,写出下列各逻辑表达式的值。
a.a+b > c && b == cb.a || b+c && b-cc.!(a>b) && !cd.(a!=b) || (b<c)4.用一个if语句重写下列代码if (ch =='E') ++c;if (ch =='E') cout << c << endl;5.用一个switch语句重写下列代码if (ch == 'E' || ch =='e')++countE;else if (ch =='A' || ch =='a')++countA;else if (ch =='I' || ch =='I')++countI;elsecout << "error";6.如果a=5,b = 0,c = 1,写出下列表达式的值,以及执行了表达式后变量a、b、c的值。
2017-2018-1 程序设计思想与方法( A)
上海交通大学试卷( A 卷)(2017 至2018 学年第1学期)班级号______________ 学号______________ 姓名课程名称程序设计思想与方法成绩一、选择题,每题只有一个答案正确(每题1分,共25分)。
1. int a = 0x123; cout << a<<endl; 的结果是。
A.291 B. 123 C. 96 D. 语法错误2. 在一个函数中是错误的。
A. 函数中可以没有return语句B. 函数中如果有返回值,就一定要有return语句.C. 函数中一个return语句可返回多个值给主调函数D. 函数中可以使用多个return语句3. 若有int a[10][5],则可得到该数组最后一个元素A. a[10][5]B. a[9][5]C. *((*(a+9))+4)D. (*(a+4))[9]4. 逻辑运算符&&, ||和!的优先级从高到低依次为A. &&>||>! B !>&&>|| C. !>||>&& D. ||>!>&&5. 构造函数的返回类型是A.voidB.取决于类的情况C.所定义类D.没有返回类型6. 字符串“1234567890”需要字节的存储空间A. 10B. 11C. 40D. 447. 如果要支持Rational到double的类型转换,需要在Rational类中声明并定义成员函数。
A. double operator double()B.double operator double(Rational r)C. operator double()D. operator double(const Rational &r)8. 以下错误的语句是A. int a(5);B.int a[5];C. int 5a;D. int a59. 下列有关类的常对象说法不正确的是A . 常对象能调用任何成员函数 B. 常对象是类的一个实例C. 对象是类的一个实例D. 常对象不能改变其属性的值10. 对于任意一个类A ,其拷贝构造函数的参数为A .A aB .A &aC .const A aD .const A &a11. 关于静态成员函数,不正确的是A . 不含有隐含参数thisB . 只能访问静态类型的属性C . 不能通过对象来调用D . 能访问const 类型的属性12. 在 情况下,一个类必须重载赋值和拷贝构造函数A . 类的属性成员中含有静态数组B . 类的属性成员中含有指针类型的变量C . 类的属性成员中含有const 成员D . 类的属性成员中含有静态成员13. 下列运算符在C ++里不能重载的是A . <<B. ||C. /=D. ::14. 语句Rational r1, r2(1,4), r4=4, *a[2]; 中调用了 次Rational 的构造函数?A .3B .2C .5D .415. 在下列各函数中, 不能用类的成员函数来定义A . 拷贝构造函数 B. 析构函数 C. []运算的重载 D. <<运算的重载16. Array<int> arr(10,20); 说明arr 是A . 一个类模板的实例 B. 一次返回模板类的函数调用C. 一次返回类模板的函数调用D. 一个模板类的实例17. 下面关于类的构造函数, 概念是错误的。
习题_C++程序设计——思想与方法 慕课版(第3版)_[共3页]
148C++程序是由一组函数组成。
每个程序必须有一个名为main的函数,它对应于一般程序设计语言中的主程序。
每个C++程序的执行都是从main函数的第一条语句执行到main函数的最后一条语句。
main函数的函数体中可能调用其他函数。
函数中定义的变量和形式参数称为局部变量,它们只在函数体内有效。
当函数执行时,这些变量可以使用。
离开函数后,这些变量就不能使用了。
还有一类变量是定义在所有函数的外面的,被称为全局变量。
全局变量的作用域是从定义点到文件结尾。
凡是在它后面定义的所有函数都能使用它。
全局变量提供了函数间的一种通信手段。
局部变量和全局变量指出了变量的作用域,即变量的有效范围。
根据变量在计算机中的存储位置,变量又可分为自动变量、静态变量、寄存器变量和外部变量。
变量的存储范围决定了变量的生存周期。
自动变量存放于内存的栈工作区。
它在函数调用时生成,函数执行结束时消亡。
静态变量存放于系统的全局变量区。
它在定义时生成,程序执行结束时消亡。
寄存器变量存放在CPU 的寄存器中,它是一类特殊的自动变量,因此也是在函数调用时生成,函数执行结束时消亡。
外部变量是一个其他源文件中定义的全局变量。
函数也可以调用自己,这样的函数称为递归函数。
程序设计中的许多算法设计技术都是基于递归的,如分治法、回溯法和动态规划等。
6.15 习题简答题1.说明函数原型声明和函数定义的区别。
2.什么是形式参数?什么实际参数?3.传递一个数组为什么需要数组名和数组规模两个参数?字符串是存储在数组中,为什么传递字符串只需要数组名一个参数?4.对于如下的函数声明char f(int a, int b = 80, char c = '0'); 下面的调用哪些是合法的,哪些是不合法的?f( ) f(10, 20) f(10, '*')5.什么是值传递?6.什么是函数模板?什么是模板函数?函数模板有什么用途?7.C++是如何实现函数重载的?8.全局变量和局部变量的主要区别是什么?使用全局变量有什么好处?有什么坏处?9.变量定义和变量声明有什么区别?10.为什么不同的函数中可以有同名的局部变量?为什么这些同名的变量不会产生二义性?11.静态的局部变量和普通的局部变量有什么不同?12.如何让一个全局变量或全局函数成为某一源文件独享的全局变量或函数?13.如何引用同一个项目中的另一个源文件中的全局变量?14.在汉诺塔问题中,如果初始时第一根柱子上有64个盘子,将这64个盘子移到第3根柱子需要移动多少次盘子。
习题_C++程序设计——思想与方法 慕课版(第3版)_[共3页]
276 为double或都为有理数类对象的operator-函数。
由于有理数类没有重载过减法运算,但两个double 型的变量是可以相减的。
于是C++将r1转换成double,再对两个double型的值相减。
r1 – r2的操作过程也是如此。
C++找不到两个参数都是有理数的operator-函数,但发现有理数可以转换成double 型。
于是将两个参数转换成double型,再执行减运算。
计算的结果是double型的数值。
凡事都有两面性。
类型转换函数可以减少重载函数,但也可能导致程序出现二义性。
例如,对有理数类的对象r1执行5.5 + r1,就会出现编译错误。
因为5.5可以隐式转换成整型,而一个整型数又能构造一个有理数类的对象,所以这个加法可以用有理数类重载的加法函数。
同时,由于有理数类又定义了一个有理数到double类的转换函数,所以r1能隐式转换成double,而两个double 型的数据也能相加。
编译器无所适从,不知道该执行哪一个operator+函数,只能报错。
运算符的各类操作都是通过操作它的数据成员实现的。
当把运算符重载成全局函数时,应该将此函数声明为友元函数。
11.7 小结在本章中,我们学习了如何通过定义运算符重载函数构建功能更加强大的类。
运算符重载可以使类的用户将类的对象作为C++的内置类型的变量一样用内置的运算符进行操作,从而扩大了C++系统的功能。
运算符重载是“教会”C++如何将内置的运算符用于类类型。
教会计算机做某件事情就是写一个完成这个任务的函数。
如何让C++知道遇到某个运算符应该执行哪个特定的函数?可以通过给函数取一个特殊的名字来解决。
运算符重载函数名必须为"operator@",其中@代表重载的运算符。
运算符重载只是解释如何对该类对象实现运算符的操作,而不能改变运算符的运算对象数、结合性和优先级。
因此,运算符重载函数的参数个数和返回值类型必须与所重载的运算符保持一致。
习题_C++程序设计——思想与方法 慕课版(第3版)_[共3页]
34我们的宗旨是让程序更容易阅读。
为了达到这个目的,最好重新审视自己的程序风格,就像作家校稿一样。
在做程序设计作业时,最好早一些开始,做完后把它扔在一边放几天,然后重新拿出来。
看看对你来说它容易读懂吗?容易维护吗?如果发现程序实际上不易读懂,就应该投入时间来修改它。
2.7 小结本章介绍了C++程序的一个完整实例,以使读者了解C++程序的总体结构及工作方式。
主要内容包括一个完整的C++程序的组成,以及一个完整的函数的组成。
除此之外,着重介绍了构成一个程序必不可少的变量定义、C++的内置数据类型,以及算术运算、赋值运算和输入/输出。
通过本章的学习,读者应能编写一些简单的程序。
2.8 习题简答题1.程序开头的注释有什么作用?2.库的作用是什么?3.在程序中采用符号常量有什么好处?4.有哪两种定义符号常量的方法?C++建议的是哪一种?5.C++定义了一个称为cmath的库,其中有一些数学函数。
要访问这些函数,需要在程序中引入什么语句?6.每个C++语言程序中都必须定义的函数的名称是什么?7.如何定义两个名为num1和num2的整型变量?如何定义3个名为x、y、z的实型双精度变量?8.简单程序通常由哪3个阶段组成?9.一个数据类型有哪两个重要属性?10.两个短整型数相加后,结果是什么类型?11.算术表达式true + false的结果是多少?结果值是什么类型的?12.说明下列语句的效果,假设i、j和k声明为整型变量。
i = (j = 4) * (k = 16);13.怎样用一个简单语句将x和y的值设置为1.0(假设它们都被声明为double型)?14.假如整型数用两字节表示,写出下列各数在内存中的表示,并写出它们的八进制和十六进制表示。
10 32 240 -1 3270015.辨别下列哪些常量为C++语言中的合法常量。
对于合法常量,分辨其为整型常量还是浮点型常量。
42 1,000,000 -17 3.1415926 2+3 123456789 -2.3 0.000001 201.1E+112.0 1.1X+11 23L 2.2E2.216.指出下列哪些是C++语言中合法的变量名?。
习题_C++程序设计——思想与方法 慕课版(第3版)_[共2页]
1988.5 编程规范及常见错误尽管定义结构体类型时可以不指定名字,但指定结构体类型名是一个良好的程序设计习惯。
它使得在程序的其他地方也可以定义该类型的变量。
实质上,结构体就是C++的一个类。
结构体类型定义时在最后的}后要加一个分号。
漏掉这个分号是结构体定义中常见的错误。
结构体类型定义只是指明了一个结构体类型的变量由哪几个部分组成。
定义结构体类型的变量时,编译器按照类型定义时的说明为变量分配空间。
初学者常容易犯的一个错误是将结构体类型和结构体变量混淆起来。
一旦定义了结构体类型,就将类型当变量使用了。
结构体类型的变量可以作为函数的参数。
结构体类型作为函数参数传递时采用的是值传递。
结构体类型的变量占用的空间一般都比较大,值传递既浪费时间又浪费空间,所以结构体一般都采用引用传递。
为了防止引用传递修改了实际参数,可以用const限定形式参数。
8.6 小结在编程过程中,经常会遇到一些复杂的对象,它们不能用一个简单的内置类型来描述,而是需要由一组不同的属性来描述。
本章提供了这样的一个工具,即结构体。
结构体可以将一组无序的、异质的数据组织成一个聚集类型,用来描述一个复杂对象。
数组通常模拟现实世界中对象的集合,而结构体则用来模拟一个复杂的对象。
同时,可以将数组和结构体结合起来,表示任意复杂度的数据或数据集合。
本章的重点为以下几点。
y一个结构体是由多个组成部分组成的,这些组成部分称为字段。
y使用一个结构体分为两个步骤:首先要进行类型定义,为结构体变量提供模板;然后定义该类型的变量。
y给定一个结构体变量,可以使用点操作符来选取其中的字段。
y很多情况下,使用结构体指针比结构体本身更合理。
使用指向结构体的指针时,可以用->操作符选取字段。
y结构体的一个重要应用是链表。
链表用来存储一组数据元素,适合于存储元素个数变化较大的集合,而且它的插入和删除都比较方便,能真正做到按需分配空间。
8.7 习题简答题1.判断:数组中的每个元素类型都相同。
习题_C++程序设计——思想与方法 慕课版(第3版)_[共4页]
都是找剩余元素中的最大值。
这是通过里层的for循环实现的。
程序用max表示上一次找到的数字,本次要找的是小于max的最大数字。
这个最大的数字存储在变量current中。
在寻找下一个数字前,用current更新max。
虽然贪婪法不是对所有问题都能得到整体的最优解,但是实际应用中的许多问题都可以使用贪婪法得到最优解。
有时即使使用贪婪法不能得到问题的最优解,但最终结果也是较优的解。
4.7 编程规范及常见错误与条件语句类似,循环语句中也存在某些语句是另外一些语句的一个部分的问题,例如各类循环语句的循环体。
为了表示这种控制关系,程序中的循环体应该比循环控制行缩进若干个空格。
循环语句中的循环体要执行很多次,优化循环体对程序效率的影响非常大,特别是优化嵌套循环。
在for循环中,循环变量的作用是记录循环执行的次数。
一个不好的程序设计习惯是在循环体内修改循环变量的值。
尽管这不一定会造成程序出错,但会使程序的逻辑混乱。
在使用循环时,最常见的错误是在循环控制行后面加一个分号。
这时你会发现循环体没有如你所想的那样执行多次,而只是被执行了一次。
因为编译器遇见分号就认为循环语句结束了,这个循环语句的循环体是空语句。
而真正的循环体被认为是循环语句的下一个语句。
4.8 小结计算机的强项是不厌其烦地做同样的操作,重复做某个工作是通过循环语句实现的。
本章介绍了C++中计数循环和基于哨兵的循环的实现。
计数循环是用for语句实现。
for循环一般设置一个循环变量,记录已执行的循环次数,在每个循环周期中要更新循环变量的值。
基于哨兵的循环是用while和do-while语句实现。
while语句用来指示在一定条件满足的情况下重复执行某些操作。
while语句先判断条件再执行循环体,因此循环体可能一次都不执行。
do-while类似于while循环,其区别是do-while循环先执行一次循环体,再判断是否要继续循环。
4.9 习题简答题1.假设在while语句的循环体中有这样一条语句:当它执行时,while循环的条件值就变为false。
习题_C++程序设计——思想与方法 慕课版(第3版)_[共3页]
340for (int i = 0; i<=20; ++i) os << i << ' '; //将1~20写入oscout << os.str(); //显示写入os的内容,为1~20,数字间用空格分开 cout << endl;istringstream is(os.str()); //用os对应的字符串初始化输入流iswhile (is >> i) cout << i << '\t'; //从输入流读数据,直到输入流结束return 0;}14.6 编程规范及常见错误在使用输入输出操作时,初学者经常迷惑到底什么时候用输入流,什么时候用输出流。
记住,当要决定是用输入流还是输出流时,将自己立足于程序。
如果数据是流入程序的某个变量,则应该用输入流。
如果数据被流出程序,流到某个外围设备,则应该用输出流。
打开文件后检查打开是否成功是很有必要的。
如果打开文件没有成功,程序后面出现的所有对该文件的操作都会出错,导致程序异常终止。
文件使用结束后关闭文件也是一个良好的程序设计习惯。
对于输出文件或输入输出文件,文件关闭时系统会将文件对应的缓冲区中的内容真正写入文件。
如果没有正常关闭文件,可能会造成文件数据的不完整。
14.7 小结输入/输出是程序中不可缺少的一部分。
在C++中,输入/输出功能是以标准库的形式提供的。
输入/输出操作分为控制台输入/输出,文件输入/输出,以及字符串输入/输出。
由于文件输入/输出和字符串输入/输出类都是从控制台输入/输出类继承的,因此,这3种输入/输出的操作方式是相同的。
本章介绍了如何利用iostream库实现控制台格式化的输入/输出。
例如,以八进制或十六进制输入输出整型数。
着重介绍了文件的概念及常用的操作。
与控制台输入输出相比,文件操作必须通过一个与文件相关联的文件流对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上 海 交 通 大 学 试 卷( 卷)
(20__ 至20____ 学年第____学期)
班级号_______________________ 学号______________ 姓名
课程名称成绩
一、选择题: 将唯一正确的选项写在题前括号中.每题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
【 】(8) 表达式1+2L*3.14>0的结果类型是: [A] int [B] long [C] float [D] bool
【 】(9) 程序设计的原型(Prototyping)方法是指: [A] 先设计程序框架结构,再逐步精化细节 [B] 先设计类,再实例化为对象
[C] 先设计简单版本,再逐步增加功能 [D] 以上都不是
【 】(10) 对n 个数做归并排序(merge sort),这个算法是: [A] log n 时间的 [B] 线性时间的 [C] n log n 时间的 [D] n 2时间的
二、判断题:在题目前面的括号中打勾或叉.每题2分.
【 】(1) 高级语言程序要被机器执行,只有用解释器来解释执行.
【 】(2) 不同类型的数据不能相互运算.
【 】(3) 由于引号表示字符串的开始和结束,所以字符串本身不能包含引号.
【 】(4) 计算机科学并非研究计算机的科学,正如天文学并非研究望远镜.
【 】(5) 算法和程序是不同的概念.
【 】(6) 下面的程序段是错的: temp = 42
print "The temperature is" + temp
【 】(7) 同一Python 变量可以先后赋予不同类型的值.
【 】(8) 计算机的计算是确定的,因此并不能真正产生随机数.
【 】(9) 对象就是类的实例.
【 】(10) Hanoi 塔问题属于不可解问题.
题号 得分 批阅人(流水阅 卷教师签名处)
我承诺,我将严格遵守考试纪律。
承诺人:
三、填空题:每题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的标准随机数生成器模块是: .
四、读程序并回答问题.
(1) 下面程序的输出是什么?
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)
(2) 下面程序的输出是什么?
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()
(3) 下面程序的功能是什么?
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)
五、程序设计.
(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 ① :
print list[i],
print
else:
for i in ②:
list[k],list[i] = list[i],list[k]
③
list[k],list[i] = list[i],list[k]
myList = input(“Input a list([1,2,3,...]): “)
perm(myList,0, ④ )
(2) 编写程序: 输入一个文件A, A中每行包含若干数值.生成文件B, B中每行是A中对应行的数值的平均值.。