程序设计基础习题答案

程序设计基础习题答案
程序设计基础习题答案

Python程序设计基础习题答案与分析

程昱

第1章基础知识

1.1 简单说明如何选择正确的Python版本。

答:

在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。

尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。

1.2 为什么说Python采用的是基于值的内存管理模式?

Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。

>>> x = 3

>>> id(x)

10417624

>>> y = 3

>>> id(y)

10417624

>>> y = 5

>>> id(y)

10417600

>>> id(x)

10417624

>>> x = [1, 2, 3, 1, 1, 2]

>>> id(x[0])==id(x[3])==id(x[4])

True

1.3 解释Python中的运算符“/”和“//”的区别。

答:

在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。

在Python 2.x和Python 3.x中,“//”表示整除,对整数或浮点数进行该运算时,结果为数学除法的整数部分。

1.4 在Python中导入模块中的对象有哪几种方式?

答:常用的有三种方式,分别为

●import 模块名[as 别名]

●from 模块名import 对象名[ as 别名]

●from math import *

1.5 pip 是目前比较常用的Python扩展库管理工具。

1.6 解释Python脚本程序的“__name__”变量及其作用。

答:

每个Python脚本在运行时都有一个“__name__”属性。如果脚本作为模块被导入,则其“__name__”属性的值被自动设置为模块名;如果脚本独立运行,则其“__name__”属性值被自动设置为“__main__”。利用“__name__”属性即可控制Python程序的运行方式。

1.7 运算符“%”可以(可以、不可以)对浮点数进行求余数操作。

1.8 一个数字“5”是(是、不是)合法的Python表达式。

1.9 在Python

2.x中,input()函数接收到的数据类型由界定符确定,而在Python

3.x中该函数则认为接收到的用户输入数据一律为字符串。

1.10 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。例如用户输入1234,则程序输出12。(提示:使用整除运算。)

答:

1)Python 3.4.2代码:

x = input('Please input an integer of more than 3 digits:')

try:

x = int(x)

x = x//100

if x == 0:

print('You must input an integer of more than 3 digits.')

else:

print(x)

except BaseException:

print('You must input an integer.')

2)Python 2.7.8代码:

import types

x = input('Please input an integer of more than 3 digits:')

if type(x) != types.IntType:

print 'You must input an integer.'

elif len(str(x)) != 4:

print 'You must input an integer of more than 3 digits.' else:

print x//100

第2章Python序列

2.1 为什么应尽量从列表的尾部进行元素的增加与删除操作?

答:

当列表增加或删除元素时,列表对象自动进行内存扩展或收缩,从而保证元素之间没有缝隙,但这涉及到列表元素的移动,效率较低,应尽量从列表尾部进行元素的增加与删除操作以提高处理速度。

2.2 range()函数在Python 2.x中返回一个包含整数的列表,而Python

3.x的range()函数返回一个可迭代的range对象。

2.3 编写程序,生成包含1000个0到100之间的随机整数,并统计每个元素的出现次数。

答:可以使用集合来实现该功能。

1)Python 3.4.2代码

import random

x = [random.randint(0,100) for i in range(1000)]

d = set(x)

for v in d:

print(v, ':', x.count(v))

2)Python 2.7.8代码

import random

x = [random.randint(0,100) for i in range(1000)]

d = set(x)

for v in d:

print v, ':', x.count(v)

也可以直接使用字典来实现该功能,并且获得更高的执行效率,例如下面的Python 3.4.2代码:

listRandom = [random.randint(1,100) for i in range(1000000)]

d = dict()

start = time.time()

for i in listRandom: #对随机数列表扫描一次,即可得到结果

d[i] = d.get(i,0)+1

print(time.time()-start)

2.4 表达式“[3] in [1, 2, 3, 4]”的值为False 。

2.5 编写程序,用户输入一个列表和2个整数作为下标,然后输出列表中介于2个下标

之间的元素组成的子列表。例如用户输入[1, 2, 3, 4, 5, 6]和2,5,程序输出[3, 4, 5, 6]。

答:

1)Python 3.4.2代码

x = input('Please input a list:')

x = eval(x)

start, end = eval(input('Please input the start position and the end position:'))

print(x[start:end])

2)Python 2.7.8代码

x = input('Please input a list:')

start, end = input('Please input the start position and the end position:')

print x[start:end]

2.6 列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为None 。

2.7 列表对象的remove() 方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。

2.8 假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是[6, 7, 9, 11] 。

2.9 设计一个字典,并编写程序,用户输入内容作为“键”,然后输出字典中对应的“值”,如果用户输入的“键”不存在,则输出“您输入的键不存在!”

答:

1)Python 3.4.2代码

d = {1:'a', 2:'b', 3:'c', 4:'d'}

v = input('Please input a key:')

v = eval(v)

print(d.get(v,'您输入的的键不存在'))

2)Python 2.7.8代码

d = {1:'a', 2:'b', 3:'c', 4:'d'}

v = input('Please input a key:')

print(d.get(v,'您输入的的键不存在'))

2.10 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。

答:

1)Python 3.4.2代码

import random

x = [random.randint(0,100) for i in range(20)]

print(x)

y = x[0:10]

y.sort()

x[0:10] = y

y = x[10:20]

y.sort(reverse=True)

x[10:20] = y

print(x)

2)Python 2.7.8代码

import random

x = [random.randint(0,100) for i in range(20)]

print x

y = x[0:10]

y.sort()

x[0:10] = y

y = x[10:20]

y.sort(reverse=True)

x[10:20] = y

print x

2.11 在Python中,字典和集合都是用一对大括号作为界定符,字典的每个元素有两部分组成,即“键”和“值”,其中“键”不允许重复。

2.12 使用字典对象的items() 方法可以返回字典的“键-值对”列表,使用字典对象的keys() 方法可以返回字典的“键”列表,使用字典对象的values() 方法可以返回字典的“值”列表。

2.13 假设有列表a = ['name', 'age', 'sex']和b = ['Dong', 38, 'Male'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为 c = dict(zip(a,b)) 。

2.14 假设有一个列表a,现要求从列表a中每3个元素取1个,并且将取到的元素组成新的列表b,可以使用语句 b = a[::3] 。

2.15 使用列表推导式生成包含10个数字5的列表,语句可以写为[5 for i in range(10)] 。

2.16 不可以(可以、不可以)使用del命令来删除元组中的部分元素。

第3章选择与循环

3.1 分析逻辑运算符“or”的短路求值特性。

答:

假设有表达式“表达式1 or 表达式2”,如果表达式1的值等价于True,那么无论表达式2的值是什么,整个表达式的值总是等价于True。因此,不需要再计算表达式2的值。

3.2 编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。

答:

1)Python 3.4.2代码

x = input('Please input an integer of 4 digits meaning the year:')

x = eval(x)

if x%400==0 or (x%4==0 and not x%100==0):

print('Yes')

else:

print('No')

2)Python 2.7.8代码

x = input('Please input an integer of 4 digits meaning the year:')

if x%400==0 or (x%4==0 and not x%100==0):

print 'Yes'

else:

print 'No'

3.3 Python提供了两种基本的循环结构:for循环和while循环。

3.4 编写程序,生成一个包含50个随机整数的列表,然后删除其中所有奇数。(提示:从后向前删。)

答:Python 3.4.2代码如下,

import random

x = [random.randint(0,100) for i in range(50)]

print(x)

i = len(x)-1

while i>=0:

if x[i]%2==1:

del x[i]

i-=1

print(x)

3.5 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)

答:Python 3.4.2代码如下,

import random

x = [random.randint(0,100) for i in range(20)]

print(x)

y = x[::2]

y.sort(reverse=True)

x[::2] = y

print(x)

3.6 编写程序,用户从键盘输入小于1000的整数,对其进行因式分解。例如,10=2×5,60=2×2×3×5。

答:

1)Python 3.4.2代码

x = input('Please input an integer less than 1000:')

x = eval(x)

t = x

i = 2

result = []

while True:

if t==1:

break

if t%i==0:

result.append(i)

t = t/i

else:

i+=1

print(x,'=','*'.join(map(str,result)))

2)Python 2.7.8代码

x = input('Please input an integer less than 1000:')

t = x

i = 2

result = []

while True:

if t==1:

break

if t%i==0:

result.append(i)

t = t/i

else:

i+=1

print x,'=','*'.join(map(str,result))

3.7 编写程序,至少使用2种不同的方法计算100以内所有奇数的和。

答:Python 3.4.2代码如下,如果使用Python 2.7.8只需要把其中的print()函数改为print 语句即可。

x = [i for i in range(1,100) if i%2==1]

print(sum(x))

print(sum(range(1,100)[::2]))

3.8 编写程序,输出所有由1、2、3、4这四个数字组成的素数,并且在每个素数中每个数字只使用一次。

答:Python 3.4.2代码如下,

答:Python 3.4.2代码如下,如果使用Python 2.7.8只需要把其中的print()函数改为print 语句即可。

x = input('Please input x:')

x = eval(x)

if x<0 or x>=20:

print(0)

elif 0<=x<5:

print(x)

elif 5<=x<10:

print(3*x-5)

elif 10<=x<20:

print(0.5*x-2)

3.9 编写程序,实现分段函数计算,如下表所示。

x y

x<0 0

0<=x<5 x

5<=x<10 3x-5

10<=x<20 0.5x-2

20<=x 0

答:Python 3.4.2代码如下,如果使用Python 2.7.8只需要把其中的print()函数改为print 语句即可。

x = input('Please input x:')

x = eval(x)

if x<0 or x>=20:

print(0)

elif 0<=x<5:

print(x)

elif 5<=x<10:

print(3*x-5)

elif 10<=x<20:

print(0.5*x-2)

第4章字符串与正则表达式

4.1 假设有一段英文,其中有单独的字母“I”误写为“i”,请编写程序进行纠正。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

1)不使用正则表达式

x = "i am a teacher,i am man, and i am 38 years old.I am not a businessman."

x = x.replace('i ','I ')

x = x.replace(' i ',' I ')

print(x)

2)使用正则表达式

x = "i am a teacher,i am man, and i am 38 years old.I am not a businessman."

import re

pattern = https://www.360docs.net/doc/3a6921697.html,pile(r'(?:[^\w]|\b)i(?:[^\w])')

while True:

result = pattern.search(x)

if result:

if result.start(0) != 0:

x = x[:result.start(0)+1]+'I'+x[result.end(0)-1:]

else:

x = x[:result.start(0)]+'I'+x[result.end(0)-1:]

else:

break

print(x)

4.2 假设有一段英文,其中有单词中间的字母“i”误写为“I”,请编写程序进行纠正。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

import re

x = "I am a teacher,I am man, and I am 38 years old.I am not a busInessman."

print(x)

pattern = https://www.360docs.net/doc/3a6921697.html,pile(r'(?:[\w])I(?:[\w])')

while True:

result = pattern.search(x)

if result:

if result.start(0) != 0:

x = x[:result.start(0)+1]+'i'+x[result.end(0)-1:]

else:

x = x[:result.start(0)]+'i'+x[result.end(0)-1:]

else:

break

print(x)

4.3 有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词并只保留一个。例如文本内容为“This is is a desk.”,程序输出为“This is a desk.”

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

1)方法一

import re

x = 'This is a a desk.'

pattern = https://www.360docs.net/doc/3a6921697.html,pile(r'\b(\w+)(\s+\1){1,}\b')

matchResult = pattern.search(x)

x = pattern.sub(matchResult.group(1),x)

print(x)

2)方法二

x = 'This is a a desk.'

pattern = https://www.360docs.net/doc/3a6921697.html,pile(r'(?P\b\w+\b)\s(?P=f)')

matchResult = pattern.search(x)

x = x.replace(matchResult.group(0),matchResult.group(1))

4.4 简单解释Python的字符串驻留机制。

答:

Python支持字符串驻留机制,即:对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。这一点不适用于长字符串,即长字符串不遵守驻留机制,下面的代码演示了短字符串和长字符串在这方面的区别。

>>> a = '1234'

>>> b = '1234'

>>> id(a) == id(b)

True

>>> a = '1234'*50

>>> b = '1234'*50

>>> id(a) == id(b)

False

4.5 编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

import re

x = input('Please input a string:') pattern = https://www.360docs.net/doc/3a6921697.html,pile(r'\b[a-zA-Z]{3}\b') print(pattern.findall(x))

第5章函数设计与使用

5.1 运行5.3.1小节最后的示例代码,查看结果并分析原因。

答:原因是对于函数的默认值参数只会被处理一次,下次再调用函数并且不为默认值参数赋值时会继续使用上一次的结果,对于列表这样的结构,如果调用函数时为默认值参数的列表插入或删除了元素,将会得到保留,从而影响下一次调用。

5.2 编写函数,判断一个整数是否为素数,并编写主程序调用该函数。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

import math

def IsPrime(v):

n = int(math.sqrt(v)+1)

for i in range(2,n):

if v%i==0:

return 'No'

else:

return 'Yes'

print(IsPrime(37))

print(IsPrime(60))

print(IsPrime(113))

5.3 编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

def demo(v):

capital = little = digit = other =0

for i in v:

if 'A'<=i<='Z':

capital+=1

elif 'a'<=i<='z':

little+=1

elif '0'<=i<='9':

digit+=1

else:

other+=1

return (capital,little,digit,other)

x = 'capital = little = digit = other =0'

print(demo(x))

5.4 在函数内部可以通过关键字global 来定义全局变量。

5.5 如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为None 。

5.6 调用带有默认值参数的函数时,不能为默认值参数传递任何值,必须使用函数定义时设置的默认值。(对、错)

5.7 在Python程序中,局部变量会隐藏同名的全局变量吗?请编写代码进行验证。

答案:会。

>>> def demo():

a=3

print a

>>> a=5

>>> demo()

3

>>> a

5

5.8 lambda表达式只能用来创建匿名函数,不能为这样的函数起名字。(对、错)

5.9 编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

def demo(*v):

print(v)

print(max(v))

print(sum(v))

demo(1,2,3)

demo(1,2,3,4)

demo(1,2,3,4,5)

5.10 编写函数,模拟内置函数sum()。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

def Sum(v):

s = 0

for i in v:

s += i

return s

x = [1,2,3,4,5]

print(Sum(x))

x = (1,2,3,4,5)

print(Sum(x))

5.11 包含yield 语句的函数可以用来创建生成器。

5.12 编写函数,模拟内置函数sorted()。

答:这里给出Python 3.4.2代码,如果使用Python 2.7.8的话只需要修改其中的print()函数为print语句即可。

def Sorted(v):

t = v[::]

r = []

while t:

tt = min(t)

r.append(tt)

t.remove(tt)

return r

x = [1,3,5,2,1,0,9,7]

print(x)

print(Sorted(x))

第6章面向对象程序设计

6.1 继承6.5节例2中的Person类生成Student类,填写新的函数用来设置学生专业,然后生成该类对象并显示信息。

答:Python 3.4.2代码为

import types

class Person(object): #基类必须继承于object,否则在派生类中将无法使用super()函数def __init__(self, name = '', age = 20, sex = 'man'):

self.setName(name)

self.setAge(age)

self.setSex(sex)

def setName(self, name):

if not isinstance(name,str):

print('name must be string.')

return

self.__name = name

def setAge(self, age):

if not isinstance(age,int):

print('age must be integer.')

return

self.__age = age

def setSex(self, sex):

if sex != 'man' and sex != 'woman':

print('sex must be "man" or "woman"')

return

self.__sex = sex

def show(self):

print(self.__name)

print(self.__age)

print(self.__sex)

class Student(Person):

def __init__(self, name='', age = 30, sex = 'man', major = 'Computer'):

#调用基类构造方法初始化基类的私有数据成员

super(Student, self).__init__(name, age, sex)

self.setMajor(major) #初始化派生类的数据成员

def setMajor(self, major):

if not isinstance(major, str):

print('major must be a string.')

return

self.__major = major

def show(self):

super(Student, self).show()

print(self.__major)

if __name__ =='__main__':

zhangsan = Person('Zhang San', 19, 'man')

zhangsan.show()

lisi = Student('Li Si',32, 'man', 'Math')

lisi.show()

6.2 设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法和除法运算。

答:Python 3.4.2代码如下

class Vecter3:

def __init__(self, x=0, y=0, z=0):

self.X = x

self.Y = y

self.Z = z

def __add__(self, n):

r = Vecter3()

r.X = self.X + n.X

r.Y = self.Y + n.Y

r.Z = self.Z + n.Z

return r

def __sub__(self, n):

r = Vecter3()

r.X = self.X - n.X

r.Y = self.Y - n.Y

r.Z = self.Z - n.Z

return r

def __mul__(self, n):

r = Vecter3()

r.X = self.X * n

r.Y = self.Y * n

r.Z = self.Z * n

return r

def __truediv__(self, n):

r = Vecter3()

r.X = self.X / n

r.Y = self.Y / n

r.Z = self.Z / n

return r

def __floordiv__(self, n):

r = Vecter3()

r.X = self.X // n

r.Y = self.Y // n

r.Z = self.Z // n

return r

def show(self):

print((self.X,self.Y,self.Z))

v1 = Vecter3(1,2,3)

v2 = Vecter3(4,5,6)

v3 = v1+v2

v3.show()

v4 = v1-v2

v4.show()

v5 = v1*3

v5.show()

v6 = v1/2

v6.show()

6.3 面向对象程序设计的三要素分别为封装、继承和多态。

6.4 简单解释Python中以下划线开头的变量名特点。

答:

在Python中,以下划线开头的变量名有特殊的含义,尤其是在类的定义中。用下划线作为变量前缀和后缀来表示类的特殊成员:

●_xxx:这样的对象叫做保护变量,不能用'from module import *'导入,只有类对象

和子类对象能访问这些变量;

●__xxx__:系统定义的特殊成员名字;

●__xxx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问到这个成

员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。Python中没有纯粹的C++意义上的私有成员。

6.5 与运算符“**”对应的特殊方法名为__pow__() ,与运算符“//”对应的特殊方法名为__floordiv__() 。

6.6 假设a为类A的对象且包含一个私有数据成员“__value”,那么在类的外部通过对象a直接将其私有数据成员“__value”的值设置为3的语句可以写作 a._A__value 。

程序设计基础试题库

练习题一Visual FoxPro 基础 、选择题 1. 关系数据库管理系统应能实现的专门关系运算包括___c __________ A 显示、打印、制表B关联、更新、排序 C 选择、投影、连接D排序、索引、统计 2. 关系是指__b__。 A 属性的集合B元组的集合 C 实例的集合 D 字段的集合 3. 如果把学生看成实体,某个学生的姓名叫“杨波”,则“杨波”应看成是___b ______ 。 A)属性型B )属性值C )记录型D )记录值 4. 关系数据库系统中所使用的数据结构是 _______ d ___ 。 A)图B )树C )表格D )二维表 5. 对表进行水平方向的分割用的运算是 _______ b ___ 。 A)交B )选择C )投影D )连接 6. 下列数据库技术的术语与关系模型的术语的对应关系中_______ d _____ 是正确的。 A)实例与关系 B )字段与元组C )记录与属性 D )记录类型与关系模式 7. 下列关于数据库系统的叙述中,正确的是 _____ c _____ 。 A)数据库系统中数据的一致性是指数据类型一致 B)数据库系统只是比文件系统管理的数据更多 C)数据库系统减少了数据冗余 D数据库系统避免了数据冗余 8. 关系数据模型 ______ d ___ 。 A)只能表示实体间的1:1联系 B)只能表示实体间的1:n C只能表示实体间的m:n D 可以表示实体间的上述三种联系 9. 在一个关系中如果有这样一个属性存在,它的值能惟一地标识关系中的每一个元组,称

这个属性为 _____ a____ 。 A)关键字B )主属性C )数据项D )主属性值 10. 关系数据库管理系统中的元组是______ b ____ 。 A)关系中的垂直方向的列 B )关系中的水平方向的行 C属性或属性的组合 D )以上的答案均不正确 11. 从数据库的整体结构看,数据库系统采用的数据模型有_________ a __ 。 A)层次模型、网状模型和关系模型 B)层次模型、网状模型和环状模型 C)网状模型、链状模型和层次模型 D链状模型、关系模型和层次模型 12. 设有属性A B、C D以下表示中不是关系的是___________ d__。 A)R( A) B )R( A, B)C )R (A, B, C, D) D )R (A X B X C X D) 13. 若实体间联系是M N的,则将联系类型_________ a___ 。 A)也转换为关系模型 B)属性加入任一个关系模式中 C)属性加入N端实体类型相应的关系模式中 D)属性加入M端实体类型相应的关系模式中 14. 数据库系统的构成为数据库、计算机硬件系统、用户和________ a ____ 。 A 数据库管理系统 B 操作系统 C 数据集合 D 文件系统 15. 层次型、网状型和关系型数据库划分原则是________ c ___ 。 A 文件大小 B 记录长度 C 数据之间的联系 D 联系的复杂程度 16. 在数据库设计中用关系模型来表示实体和实体之间的联系,关系模型的结构是 _____ d ___ 。 A 封装结构 B 层次结构 C 网状结构 D 二维表结构 17. 在关系模型中,实现“关系中不允许出现相同的元组”的约束是通过__a ________ 。 A 主键 B 超键 C 外键 D 候选键 18. 层次模型不能直接表示 ______ b __ 关系。 A 1:1 B m:n C 1:m D 1:1 和1:m 19. DBAS旨的是_____ d____ 。

C++程序设计基础课后答案 第八章

8.1 阅读下列程序,写出执行结果 1.#include class Bclass { public: Bclass( int i, int j ) { x = i; y = j; } virtual int fun() { return 0 ; } protected: int x, y ; }; class Iclass:public Bclass { public : Iclass(int i, int j, int k):Bclass(i, j) { z = k; } int fun() { return ( x + y + z ) / 3; } private : int z ; }; void main() { Iclass obj( 2, 4, 10 ); Bclass p1 = obj; cout << p1.fun() << endl; Bclass & p2 = obj ; cout << p2.fun() << endl; cout << p2.Bclass :: fun() << endl; Bclass *p3 = &obj;

cout << p3 -> fun() << endl; } 2.#include class Base { public: virtual void getxy( int i,int j = 0 ) { x = i; y = j; } virtual void fun() = 0 ; protected: int x , y; }; class A: public Base { public: void fun() { cout<<"x = "< main() { intnum=0; While(num<=3) { num=num+1; printf("%d",num); } } A 1 B 1 2 C 1 2 3 D 1 2 3 4 11、在定义inta[10];之后,如下对a的引用正确的是()。 A a[10] B a[6.3] C a(6) D a[0] 12、如下程序的输出结果是()。

(完整版)程序设计基础试题_10_答案

广州大学学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查) 学院系专业班级学号姓名 一、填空题(每空1分,共10分) 1.C源程序的基本单位是(函数)。 2.一个C源程序中至少应包含一个(main()函数)。 3.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++ 后,a的值为(10 ),b的值为( 6 )。 4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,b值为( 4 ),c 值为( 2 )。 5.表达式8.2-2/3 的计算结果是(8 )。 6.在C语言中,整数可用三种数制表示,它们分别是(十进制)、(八进制)和(十六进制)。 二、程序计算题(每小题5分,共15分) 1. # define f(a) printf(“%d”,a) main() { int i,b[]={1,2,3,5,7,9,11,13,15},*p=5+b; for(i=3;i;i--) switch(i) { case 1: case 2: f(*p++); break;

case 3: f(*(--p)); } } 2. main() { int arr_sum(int arr[],int n); int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total; int (*pt)( int arr[],int n); pt=arr_sum; p=a[0]; total=(*pt)(p,12); printf(“total=%d\n”,total); } arr_sum(int arr[],int n) { int i,sum=0; for(i=0;i

Visual Basic 程序设计基础教程-课后习题答案-范荣强

第一章程序与编程环境 一、填空题 1. 工程,Form_Load 2. 事件(触发) 3. 窗体,Name 4. CurrentX, CurrentY 5. maxButton, BorderStyle = 1 or 3 or 4 or 5 6. Alignment, 空缺,AutoSize 7. Style, LoadPicture 8. Line, Shape 9. 重画10. FillStyle ll. MultiLine, maxLength, Locked 12. Font 13. sub, 对象名,事件名14. 方法,Object.Method, text1.setfocus() 15. Name, minButtom, CurrentX(Y), Caption 16. Interval, Enable 17. timer, Interval, ms(毫秒) 18. Mouse Down, Click, LoastFocus 19. .Frm, .Frx, .bas. cls. Vbp 20. 注释, “Rem 语句”或者“’语句” 第二章数据的类型、表示以及运算 一、请指出下列哪些是VB的合法常量,并说明原因 (1)√(2)X 常量不能加类型说明符号改成123.4 (3)X与上题类似,如果是常量,则类型说明符放在后面(4)√等价于2E3 (5) √(6)√等于十进制的4113 (7)X 如果是16进制要写&符号(8)X 指数不能为小数(9)X 月份超过12,日超过31 (10)√(11)√(12)√等价于上一题(13)X 8进制数每一位不能超过8 (14)√(15)X 变量,常量要为基本数据类型的值(16)√ 二、找出合法变量 (1)√(2)√如果与控件Label1同在一个应用程序里面,该变量会屏蔽掉控件Label1 (3) X 保留字(4)√(5)X 变量不能以数字开头(6)变量不能有小数点 (7)√(8)√数组变量(9)X保留字(10)√可以,但rnd()不可以,rnd()是函数 (11) √(12)√(13)√(14)X ’符号表示注释(15)X 这是表达式,不是变量(16)X 同上,是表达式 三、指出下列数据x,y,z的声明是否正确,如果正确请指明其类型 (1)√ x--long, y—variant, z—integer (2) √ x—long, y—long, z—integer (3) √ x—double, y—double, z—integer (4) X 变量x &中间不能有空格 (5)√自动转换成字符串 (6)X 变量声明不能直接赋值 (7)√ (8)√自动转换成字符串 (9)X 常量不能把函数写上去 (10)√ 四、写出下列表达式的结果 (1)1 (2) 1 (3)false (4) ab12 (5)123 (6)出错,加法表达式中如果有一个是数值类型,则“+”表示加号,而不是字符的链接符号(7)False (8)true (9) true (10) false 默认转换成相同类型(数值),建议这里把2改成D试试 (P.S. 布尔类型TRUE = -1, FALSE = 0; 优先顺序:^(乘方)→-(求负)→*、/→\(整除)→MOD→+、-) 五、写出下列函数的结果

《程序设计基础》练习题

《程序设计基础》综合练习题1009 姓名:学号: 一.选择题(以熟悉概念为主) 1.在C++的结构化程序设计框架中,程序的基本组成单元是___。 A.函数B.类 C.关系D.数据结构 2.下列特性中, C 与C++ 共有的是_____。 A. 继承 B. 封装 C. 多态性 D. 函数定义不能嵌套 3.面向对象程序设计思想的主要特征中,不包含____。 A.继承性B.封装性和信息隐藏性 C.功能分解、逐步求精D.多态性 4.在C++中所有的函数名称后面都紧跟着一对____,其中既可以没有内容,也可以包含函有选举权的参数。 A.( ) B.< > C.[ ] D.{ } 5.在C++的面向对象程序设计中,类与类之间通过____来实现独立性。 A.友元B.继承C.派生D.封装 6.下列哪个是C++语言的有效标识符?____。 A._No1 B.No.1 C.12345 D.int 7.在C++语言中,所有函数说明都必须指明返回值类型,没有返回值的函数应说明为____类型的函数。 A.int B.char C.float D.void 8.下列字符常量的写法中,错误的是____。 A.?\105?B.?*?C.????D.?\a? 9.下列变量的存储分配方式中,系统不为其分配内存空间的是____。 A.auto变量B.register变量C.static变量D.extern变量 10.如int型变量x的初始值为1,变量y和t皆为int型,且表达式y=(t=x,x+=t, t),则变量y的值为____。 A.0 B.1 C.2 D.不确定 11.下列关于C++运算符结合性的说法中,正确的是____。 A.赋值运算符是左结合的B.复合赋值运算符是左结合的 C.单目运算符是左结合的D.双目算术符是左结合的 12.表达式18/5*sqrt(4.0)/5值的数据类型是____。 A.int B.double C.float D.不确定 13.下列代码的输出结果是____。 int j=int( ); double d=double( ); cout<

C程序设计基础_复习题

c语言规定,任何非0的数像1 -1等都被认为是真,而0被认为是假 1>1为假 试题一、单选题 1. 已知int k,m=1;执行语句k=-m++;后,k的值是_____。【知识点:难度:正确答案:A】 A.-1 B.0 C.1 D.-2 2. 已知定义int m; float k; 正确的语句是。【知识点:难度:正确答案:D】 A.(int k)%m B.int(k)%m C.int(k%m)D.(int)k%m 3. 当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是______。【知识点:难度: 正确答案:B】 A.m=k=n B.(m=k)&&(n=m) C.(m=k)||(n=k)D.(n=m)&&(m=k) 4. 已知int x=5; 表达式6>x>1值是_____。【知识点:难度:正确答案:A】 A.0 B.1 C.5 D.表达式语法错 表达式6>x>1 ,先 判断6>x 为0,再 判断0>1,所以值 为0。 (6>x 为1 ,再判 断1>1,所以值为 0。) 5. 下列程序段执行后c值为_____。【知识点:难度:正确答案:D】 int k=7, c=0; while(--k) if (k%3) continue; else c++; A.5 B.4 C.3 D.2 6. 已知字母a的ASCII码为十进制数97,且ch为字符型变量,则执行语句ch=…a?+…D?-…A?;后,ch 中的值为_____。【知识点:难度:正确答案:C】 A.d B.c C.100 D.不确定 7. 设m,n已正确定义,执行语句{for(m=0, n=10; m,能使puts(s)语句正确输出ABCDE字符串的程序 段是______。【知识点:难度:正确答案:C】 A.char s[5] = {"ABCDE"}; puts(s) B.char s[5] = {…A?,?B?,?C?,?D?,?E?}; puts(s); C.char *s; s = "ABCDE"; puts(s); D.char *s; scanf(“%s”,s); puts(s); 《C程序设计基础及实验》

《程序设计基础》题库(50道)

《程序设计基础》题库(50道) <说明> 1、难易程度依次为:易(16道)、较易(38道)、较难(31道)、难(15道)。 2、总共抽8道题,按难易程度:易(1道)、较易(4道)、较难(2道)、难(1道); 按题型:顺序(1道)、分支(2道)、单循环(2道)、多循环(1道)、数组(1道)、字符串(1道) 3、考试要求:先画流程图再写程序,理论考试,2个半小时 一、顺序结构 1、 请定义4个整型变量,并打印输出这4个变量的加、减、乘、除后的结果。(易) 2、 将华氏温度转化成摄氏温度。公式为:C=(5/9)*(F-32),其中F 为华氏温度,C 为 摄氏温度。请根据给定的华氏温度输出对应的摄氏温度。(易) 3、 根据观察,蟋蟀的名叫频率与温度有关,具体的公式为T=(c+40)/10.其中,c 代表 蟋蟀每分钟鸣叫数,T 代表华氏温度。请根据蟋蟀每分钟的鸣叫数输出相应的华氏温度。(易) 4、 编写程序,读入0~1000的一个整数并将其各位数字之和赋给一个整数,如整数932, 各位数字之和为14. (较易) 5、 编程实现两个整数交换位置,例如:int x = 6,y = 9,交换后 x = 9,y = 6。(较易) 6、 求空间两点之间的距离。(提示:空间一点(x,y,z ),可由三个实数来描述)(较易) 7、 已知圆的半径,求圆的面积。(易) 8、 已知一个三角形的三边边长分别为a,b,c ,利用海伦公式求三角形的面积。(较难) 海伦公式: 9、 求两数平方和的算术根。(易) 10、 给定一段时间求出它的秒数。(如计算2小时 17分30秒等于多少秒)(易) 11、 某印刷厂3月1日有A4纸500盒,3月2日又买进进100盒,3月3日用掉A4 纸存量的三分之二,3月4日又买进A4纸存量的2倍,问该印刷厂3月1日到3月4日期间每天的A4纸存量分别是多少盒?(易) 12、 三个小朋友,大毛有糖果50粒,二毛有糖果43粒,三毛有糖果13粒。现在他们 三兄弟做游戏,从大毛开始,将自己的糖果三等分,三兄弟每人一份,多余的自己吃掉;然后二毛和三毛也依次这样做,问最后三兄弟各有多少糖果?(较易) 二、分支结构 13、 两个整数比较大小,输出较大值。(易) 14、 三个整数比较大小,输出最大值。(较易) 15、 求下列函数中y 的值。(较易) y=10 (x=0) y=3x+5 (x>0) y=x-2 (x<0) 16、 判断某年是否为闰年。(闰年的条件是:该年的年号能被4整除且不能被100整除, 或该年的年号能被400整除,则该年是闰年,否则不是闰年。)(较易) 17、 根据某同学的成绩,判定其成绩的等级。(90~100分为“优秀”,80~89为“良好”, 70~79为“中等”,60~69为“及格”,60分以下为“不及格”。)(较易) ))()((c p b p a p p S ---=2 c b a p ++=

C++程序设计基础(第4版)(上)习题解答

《C++程序设计基础》(第4版)(上) 习题与解答 第1章基本数据与表达式 1.1 选择题 1.一个最简单的C++程序,可以只有一个(C )。 (A)库函数(B)自定义函数(C)main函数(D)空函数 2.用C++语言编写的源程序要成为目标程序必须要经过(D )。 (A)解释(B)汇编(C)编辑(D)编译3.C++程序中的简单语句必须以(B )结束。 (A)冒号(B)分号(C)空格(D)花括号4.假设有说明int a=0; double x=5.16;,则在以下语句中,(C )属于编译错误。 (A)x=a/x; (B)x=x/a; (C)a=a%x; (D)x=x*a; 5.执行C++程序时出现的“溢出”错误属于(C )错误。 (A)编译(B)连接(C)运行(D)逻辑 6.在下列选项中,全部都是C++关键字的选项为(C )。 (A)while IF Static (B)break char go (C)sizeof case extern (D)switch float integer 7.按C++标识符的语法规定,合法的标识符是(A )。 (A)_abc (B)new (C)π(D)"age" 8.在C++语句中,两个标识符之间(A )不能 ..作为C++的分隔符。 (A)数字(B); (C): (D)+ 9.下列正确的八进制整型常量表示是(B )。 (A)0a0 (B)015 (C)080 (D)0x10 10.下列错误的十六进制整型常量表示是(C )。 (A)0x11 (B)0xaf (C)0xg (D)0x1f 11.在下列选项中,全部都合法的浮点型数据的选项为(B )。 (A)-1e3.5 15. 2e-4 (B)12.34 -1e+5 0.1E-12 (C)0.2e-2 -12345. e-5 (D)5.0e(1+4)0.1 8e+2 12.在下列选项中,正确的字符常量为(D )。 (A)"a" (B)'name' (C)a (D)'\101' 13.在下列选项中,(D )不能 ..交换变量a和b的值。 (A)t=b; b=a; a=t; (B)a=a+b; b=a-b; a=a–b; (C)t=a; a=b; b=t; (D)a=b; b=a; 14.关于下列语句,叙述错误的是(A )。

程序设计基础试题一知识讲解

山东科技大学200 —200 学年第学期 《程序设计基础》考试试卷一 班级姓名学号____________ 一、选择题(20分) 1.算法具有五个特性,以下选项中不属于算法特性的是B (A)有穷性(B)简洁性(C)可行性(D)确定性 2.以下选项中可作为C语言合法常量的是A (A)-80. (B)-080 (C)-8e1.0 (D)-80.0e 3.以下叙述中正确的是C (A)用C语言实现的算法必须要有输入和输出操作 (B)用C语言实现的算法可以没有输出但必须要有输入 (C)用C程序实现的算法可以没有输入但必须要有输出 (D)用C程序实现的算法可以既没有输入也没有输出 4.以下不能定义为用户标识符是D (A)Main (B) _0 (C) _int (D) sizeof 5.以下选项中,不能作为合法常量的是B (A)1.234e04 (B)1.234e0.4 (C)1.234e+4 (D)1.234e0 6.数字字符0的ASCII值为48,若有以下程序 main() {char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a);} 程序运行后的输出结果是C (A)3,2 (B)50,2 (C)2,2 (D)2,50

7.有以下程序 main(){ int m=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);}程序运行后的输出结果是A (A)12353514 (B)12353513 (C)12343514 (D)12343513 8.有以下语句:int b;char c[10];,则正确的输入语句是B A)scanf("%d%s",&b,&c); B) scanf("%d%s",&b,c); (C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c); 9.有以下程序 main(){ int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是A A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 10.有以下程序 main(){ int a,b,d=25; a=d/10%9;b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是B A)6,1 B)2,1 C)6,0 D)2,0 11.有以下程序 main(){ int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k);}程序运行后的输出结果是D (A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3

相关文档
最新文档