资源简介 三、 抽象数据类型1. 下列关于抽象数据类型的说法,错误的是( D )A. Python的字符串类型就是一个抽象数据类型B. 抽象数据类型是指一个数学模型及定义在该模型上的一组操作C. 抽象数据类型还可以是编程者在程序设计时使用的函数D. 定义一个抽象数据类型,只需清晰地表述出各方面的形式要求即可【解析】 本题考查对抽象数据类型的理解。定义一个抽象数据类型,需要清晰地表述出各方面的形式要求(如操作的名字、参数的个数和类型等)和功能要求(希望这个操作完成什么样的计算或产生什么效果等)。D符合题意。2. 在Python程序设计语言中,有如下语句:a=13b=10c=a+bprint(c)下列说法中,错误的是( D )A. 语句“a=13”在给变量a赋值的同时也定义了其数据类型为整型B. “+”操作在整型类中已经定义,编程者不必关心计算机如何实现“+”操作C. 该编程语言中的其他数据类型的运算操作,都可以抽象出来D. 语句“b=10”中的“=”操作在程序设计语言中没有定义,需要编程者自己编程实现【解析】 同“+”等操作一样,“=”操作在Python程序设计语言中已经定义,编程者不必自己编程实现,D符合题意。3. 下面是一个简单的ADT:class jdage(): def _ init_ (self,name,age): #初始化属性name和age self.name=name self.age=age def jd(self): if self.age<18: print(self.name+"还未成年。") else: print(self.name+"已成年。")my_stu=jdage( Peter ,22)my_stu.jd()下列关于该抽象数据类型实例的说法,错误的是( D )A. 创建的类名称为jdageB. my_stu为jdage类的一个对象C. 代码执行后的结果为“Peter已成年。”D. def jd(self)的功能是定义jd函数【解析】 本题考查抽象数据类型(ADT)的组成。def jd(self)的功能是定义jg操作,而不是函数,D符合题意。4. 抽象数据类型的三个组成部分分别为( C )A. 数据项、数据元素和数据类型B. 数据元素、数据类型和数据结构C. 数据对象、数据关系和基本操作D. 数据元素、逻辑结构和存储结构【解析】 本题考查抽象数据类型(ADT)的知识。根据ADT的定义可知,抽象数据类型的三个组成部分分别为数据对象、数据关系和基本操作,C正确。5. 下面给出了字符串抽象数据类型的部分描述信息:ADT String: String(self,sseq)#基于字符串序列sseq建立一个字符串 is_empty(self) #判断字符串是否为空串 len(self) #取得字符串的长度 char(self,index)#取得字符串中位置在index的字符 substr(self,a,b)#取得字符串[a:b]的子串,左闭右开区间 ……现有一字符串对象s,请回答下列问题:(1)根据字符串抽象数据类型的描述,若要获取字符串[x:y](左闭右闭)区间内容的子串,正确的调用方式为 substr(s,x,y+1) 。 (2)基于字符串序列sseq建立一个字符串的操作String(s,sseq),可以理解为对字符串s的初始化操作,初始值为 sseq 。 (3)当s="" 时,is_empty(s)的返回值为True,则当s= "abc123"时,is_empty(s)的返回值为 False ,len(s)的返回值为 6 。 (4)当要调用char方法时,需要提供的参数个数为 2 。 【解析】 (1)根据ADT描述,从字符串中获取子串的操作为substr,需要三个参数,第一个为字符串本身s,第二、三个参数分别为子串的开始位置和结束位置的下一个位置。(2)由于操作String(s,sseq)的作用是基于字符串序列sseq建立一个字符串s,所以s的初值为sseq。(3)操作is_empty(s)的作用是判断字符串是否为空,当字符串为空时返回True,非空时返回False;操作len(s)的作用是返回字符串s的长度,所以len(s)的结果为6。(4)根据ADT描述,操作char(self,index)调用时需要两个参数,第一个参数为字符串本身,第二个参数为位置。6. 用抽象数据类型实现队列操作的代码如下,请回答下列问题:class Queue:def _ init _ (self): self.queue=[]def isEmpty(self): return self.queue==[]def enqueue(self,data): #入队操作 ① self. queue. insert(0,data) def dequeue(self): #出队操作 if len(self.queue): ② return self. queue. pop() def size(self): #测试队列长度 return len(self.queue)q=Queue()q.enqueue(8)q.enqueue(9)q.enqueue(10)while not q.isEmpty(): print(q.dequeue(),end=" ")(1)程序运行后,输出的结果是 8 9 10 。 (2)请在画线处填入合适的代码。【解析】 本题考查用抽象数据类型表示队列操作。①队列的特点是先进先出,元素入队时是从队列的首部插入,故此处代码为self. queue. insert(0,data)。②此处代码为出队操作,通过pop()方法实现,将元素从队尾取出,故此处代码为return self. queue. pop()。7. 创建一个ADT,实现如下功能:输入一个18位的公民身份号码,输出拥有该公民身份号码的人的性别。判断方法:根据公民身份号码的第17位数字来判断,若是奇数,则表示为男士;若是偶数,则表示为女士。程序运行界面如图所示:请输入公民身份号码:330425198202261156公民身份号码为:330425198202261156是位男士实现上述功能的代码如下,请回答下列问题:class sexpd:def_init_(self,sfzcode): self.code=sfzcodedef isxb(self): xbcode=int(self.code[16]) sfzcode=input("请输入公民身份号码:")sfz1=sexpd(sfzcode)sfz1.isxb()(1)程序运行时,若输入的18位公民身份号码为“330425198002251269”,则输出结果为 身份证号码为:330425198002251269是位女士 。 (2)完善isxb(self)操作中的程序代码。【答案】 isxb(self)操作中的程序代码如下:if xbcode % 2==1: print("公民身份号码为:",self. code,"是位男士")else: print("公民身份号码为:",self. code,"是位女士")【解析】 本题考查ADT的实际应用。(1)公民身份号码330425198002251269的第17位上的数字是6,是偶数,因此该公民身份号码的人的性别是位女士,参考输出示例可知,输出结果为“公民身份号码为:330425198002251269 是位女士”。(2)isxb(self)操作中的代码的功能是:根据公民身份号码的第17位上(索引位置为16)的数字的奇偶性来判断性别,因此使用if语句来实现,方法不唯一,只要输出结果正确即可。(共16张PPT)三、 抽象数据类型第四章 树信息技术 选择性必修1 数据与数据结构必备知识练1. 下列关于抽象数据类型的说法,错. 误. 的是( )A. Python的字符串类型就是一个抽象数据类型B. 抽象数据类型是指一个数学模型及定义在该模型上的一组操作C. 抽象数据类型还可以是编程者在程序设计时使用的函数D. 定义一个抽象数据类型,只需清晰地表述出各方面的形式要求即可【解析】 本题考查对抽象数据类型的理解。定义一个抽象数据类型,需要清晰地表述出各方面的形式要求(如操作的名字、参数的个数和类型等)和功能要求(希望这个操作完成什么样的计算或产生什么效果等)。D符合题意。D2. 在Python程序设计语言中,有如下语句:a=13b=10c=a+bprint(c)下列说法中,错. 误. 的是( )A. 语句“a=13”在给变量a赋值的同时也定义了其数据类型为整型B. “+”操作在整型类中已经定义,编程者不必关心计算机如何实现“+”操作C. 该编程语言中的其他数据类型的运算操作,都可以抽象出来D. 语句“b=10”中的“=”操作在程序设计语言中没有定义,需要编程者自己编程实现【解析】 同“+”等操作一样,“=”操作在Python程序设计语言中已经定义,编程者不必自己编程实现,D符合题意。D3. 下面是一个简单的ADT:class jdage(): def _ init_ (self,name,age): #初始化属性name和age self.name=name self.age=age def jd(self): if self.age<18: print(self.name+"还未成年。") else: print(self.name+"已成年。")my_stu=jdage( Peter ,22)my_stu.jd()下列关于该抽象数据类型实例的说法,错. 误. 的是( ) A. 创建的类名称为jdageB. my_stu为jdage类的一个对象C. 代码执行后的结果为“Peter已成年。”D. def jd(self)的功能是定义jd函数【解析】 本题考查抽象数据类型(ADT)的组成。def jd(self)的功能是定义jg操作,而不是函数,D符合题意。D4. 抽象数据类型的三个组成部分分别为( ) A. 数据项、数据元素和数据类型B. 数据元素、数据类型和数据结构C. 数据对象、数据关系和基本操作D. 数据元素、逻辑结构和存储结构【解析】 本题考查抽象数据类型(ADT)的知识。根据ADT的定义可知,抽象数据类型的三个组成部分分别为数据对象、数据关系和基本操作,C正确。C5. 下面给出了字符串抽象数据类型的部分描述信息:ADT String: String(self,sseq)#基于字符串序列sseq建立一个字符串 is_empty(self) #判断字符串是否为空串 len(self) #取得字符串的长度 char(self,index)#取得字符串中位置在index的字符 substr(self,a,b)#取得字符串[a:b]的子串,左闭右开区间 ……现有一字符串对象s,请回答下列问题:(1)根据字符串抽象数据类型的描述,若要获取字符串[x:y](左闭右闭)区间内容的子串,正确的调用方式为_________________。 (2)基于字符串序列sseq建立一个字符串的操作String(s,sseq),可以理解为对字符串s的初始化操作,初始值为__________。 (3)当s="" 时,is_empty(s)的返回值为True,则当s= "abc123"时,is_empty(s)的返回值为__________,len(s)的返回值为__________。 (4)当要调用char方法时,需要提供的参数个数为__________。 substr(s,x,y+1)sseqFalse62【解析】 (1)根据ADT描述,从字符串中获取子串的操作为substr,需要三个参数,第一个为字符串本身s,第二、三个参数分别为子串的开始位置和结束位置的下一个位置。(2)由于操作String(s,sseq)的作用是基于字符串序列sseq建立一个字符串s,所以s的初值为sseq。(3)操作is_empty(s)的作用是判断字符串是否为空,当字符串为空时返回True,非空时返回False;操作len(s)的作用是返回字符串s的长度,所以len(s)的结果为6。(4)根据ADT描述,操作char(self,index)调用时需要两个参数,第一个参数为字符串本身,第二个参数为位置。关键能力练6. 用抽象数据类型实现队列操作的代码如下,请回答下列问题:class Queue:def _ init _ (self): self.queue=[]def isEmpty(self): return self.queue==[]def enqueue(self,data): #入队操作 ①______________________________ def dequeue(self): #出队操作 if len(self.queue): ②________________________ self. queue. insert(0,data)return self. queue. pop()def size(self): #测试队列长度 return len(self.queue)q=Queue()q.enqueue(8)q.enqueue(9)q.enqueue(10)while not q.isEmpty(): print(q.dequeue(),end=" ")(1)程序运行后,输出的结果是__________。 (2)请在画线处填入合适的代码。8 9 10【解析】 本题考查用抽象数据类型表示队列操作。①队列的特点是先进先出,元素入队时是从队列的首部插入,故此处代码为self. queue. insert(0,data)。②此处代码为出队操作,通过pop()方法实现,将元素从队尾取出,故此处代码为return self. queue. pop()。7. 创建一个ADT,实现如下功能:输入一个18位的公民身份号码,输出拥有该公民身份号码的人的性别。判断方法:根据公民身份号码的第17位数字来判断,若是奇数,则表示为男士;若是偶数,则表示为女士。程序运行界面如图所示:请输入公民身份号码:330425198202261156公民身份号码为:330425198202261156是位男士实现上述功能的代码如下,请回答下列问题:class sexpd:def_init_(self,sfzcode): self.code=sfzcodedef isxb(self): xbcode=int(self.code[16])sfzcode=input("请输入公民身份号码:")sfz1=sexpd(sfzcode)sfz1.isxb()(1)程序运行时,若输入的18位公民身份号码为“330425198002251269”,则输出结果为___________________________________________。 (2)完善isxb(self)操作中的程序代码。【答案】 isxb(self)操作中的程序代码如下:if xbcode % 2==1: print("公民身份号码为:",self. code,"是位男士")else: print("公民身份号码为:",self. code,"是位女士")【解析】 本题考查ADT的实际应用。(1)公民身份号码330425198002251269的第17位上的数字是6,是偶数,因此该公民身份号码的人的性别是位女士,参考输出示例可知,输出结果为“公民身份号码为:330425198002251269 是位女士”。(2)isxb(self)操作中的代码的功能是:根据公民身份号码的第17位上(索引位置为16)的数字的奇偶性来判断性别,因此使用if语句来实现,方法不唯一,只要输出结果正确即可。身份证号码为:330425198002251269是位女士 展开更多...... 收起↑ 资源列表 三、 抽象数据类型.docx 三、 抽象数据类型.pptx