浙江省诸暨市2023-2024学年高二上学期期末检测信息技术试题(解析版)

资源下载
  1. 二一教育资源

浙江省诸暨市2023-2024学年高二上学期期末检测信息技术试题(解析版)

资源简介

诸暨市2023-2024学年第一学期期末考试试题
高二技术
第一部分信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 下列对数据概念的描述中,不正确的是( )
A. 数据是对客观事物属性的描述 B. 数据是记录下来的某种可以识别的符号
C. 数据是信息的载体 D. 数据就是数值
【答案】D
【解析】
【详解】本题主要考查数据的描述。数据是对客观事物属性的描述; 数据是记录下来的某种可以识别的符号; 数据是信息的载体;数据可以是数值、文本、图像等,故本题选D选项。
2. 下列数据结构中属于线性数据结构的是( )
①数组 ②栈 ③队列 ④链表 ⑤树
A. ①②③④⑤ B. ①②③④ C. ①②④⑤ D. ①②③⑤
【答案】B
【解析】
【详解】本题主要考查数据结构的描述。线性结构是一个有序数据元素的集合,如数组、栈、链表和队列。树结构属于非线性结构,故本题选B选项。
3. 关于数据项与数据元素的描述,下面说法不正确的是( )
A. 数据元素可由若干数据项组成
B. 同一数据元素中各数据项的数据类型必须相同
C. 数据项是数据的最小单位,通常用来描述实体的某种属性
D. 数据元素是数据的基本单位,在计算机中通常作为一个整体来处理
【答案】B
【解析】
【详解】本题考查的知识点是数据项与数据元素描述。同一数据元素中的数据项可以具有不同的数据类型。例如,在一个记录学生信息的元素中,姓名项可能是一个字符串类型,年龄项可能是一个整数类型,性别项可能是一个布尔类型(0 或 1)。因此,同一数据元素中各数据项的数据类型并不需要完全相同,同一数据元素中各数据项的数据类型必须相同表述错误。故答案为B选项。
4. 元素1,2,3,4,5,6依次入栈,若第1个出栈元素是4,则不可能是第3个出栈的元素是( )
A. 1 B. 2 C. 3 D. 5
【答案】A
【解析】
【详解】本题主要考查栈的操作。元素1,2,3,4,5,6依次入栈,若第1个出栈的元素是4,说明进栈顺序为1,2,3,4,此时先出栈4,可以继续出栈3,2,所以有可能为2;还有就是进5出5,再出3,所以可能为3;还有可能进5、6,再出6和5,因此有可能为5,不可能为元素1,故本题选A选项。
5. 有1个队列,队首到队尾的元素依次为H,C,B,I,E。约定:T操作是指队列中1个元素出队后再入队,Q操作是指队列中1个元素出队。则经过TTTQTTQ系列操作后,队列中队首到队尾的元素依次为( )
A. B,I,E B. B,E,H C. E,H,B D. H,C,B
【答案】B
【解析】
【详解】本题考查的是队列操作。队列操作原则是先进先出。初始队首到队尾的元素依次为:HCBIE。
经过TTT操作后,队首到队尾的元素依次为:IEHCB;
经过Q操作后,队首到队尾的元素依次为:EHCB;
经过TT操作后,队首到队尾的元素依次为:CBEH;
经过Q操作后,队首到队尾的元素依次为:BEH。
故本题应选B。
6. 如图所示的二叉树,下列说法正确的是( )
A. 该二叉树是一个完全二叉树 B. 该二叉树的深度为4,节点D的度为2
C. 该二叉树的叶子节点数比非叶子节点数少一个 D. 该二叉树中A是D和E的父节点
【答案】C
【解析】
【详解】本题考查是二叉树。完全二叉树是由满二叉树而引出来的,若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1)) 的结点数都达到最大个数(即1~h-1层为一个满二叉树),第 h 层所有的结点都连续集中在最左边,这就是完全二叉数。图中所示的二叉树不是一个完全二叉树;该二叉树的深度为4,节点D的度为1;该二叉树的叶子节点数(3)比非叶子节点数(4)少一个;A是B和C的父节点。故本题应选C。
7. 已知一棵二叉树的后序遍历为CDAFEBG,中序遍历为CADGFBE,则该二叉树的前序遍历序列为( )
A. GACBDFE B. GACDBFE C. GACDBEF D. GCADBEF
【答案】B
【解析】
【详解】本题考查是二叉树的遍历。依据题意可知该二叉树如下:
故该二叉树前序遍历序列为:GACDBFE。选项B正确。
8. 有如下Python程序:
minx=int(input())
n=int(input())
for i in range(n):
x=int(input())
if xminx=x
print(minx)
上述算法的时间复杂度为( )
A. 0(1) B. 0(1og2n) C. 0(n) D. 0(n2)
【答案】C
【解析】
【详解】本题考查时间复杂度。在程序中,有一个循环for i in range(n):,它会执行n次。每次循环中,都会执行一些常数时间的操作,如读取输入、比较大小、更新最小值。因此,这个循环的时间复杂度为O(n),表示与输入规模n成正比。故答案为:C。
9. 某Python程序如下:
s=input("请输入字符串:")
ans=""
a=[1,2,3]
for i in range(len(s)):
x=s[i]
key=a[i%3]
if "A"<=s[i]<="Z":
ans=ans+chr((ord(x)-65+key)%26+65)
else:
ans=ans+x
print(ans)
执行该程序后,输入"B2d5C3"输出的结果为( )
A. 66d4CE B. C2d5E3 C. C4g6E6 D. 6E6g4C
【答案】B
【解析】
【详解】本题主要考查Python程序的执行。分析程序可知, key=a[i%3],a=[1,2,3],即key依次取1、2、1、2……,当s[i]是大写字母时,执行ans=ans+chr((ord(x)-65+key)%26+65),即将该字母循环后移key个长度再拼接到ans中,当s[i]是其他字符时,直接拼接到ans中,输入"B2d5C3",大写字母B、C变为C、E,其余字符不变,因此输出的结果是C2d5E3,故本题选B选项。
10. 有如下Python程序段:
def f(n):
if n<2:
return 0
elif n %2==0:
return n+f(n-2)
else:
return f(n-1)
n=int(input())
print(f(n))
若输入n的值为100,则程序运行后,输出的结果是( )
A. 100 B. 2500 C. 2550 D. 5050
【答案】C
【解析】
【详解】本题考查Python程序设计相关内容。本题涉及到递归算法的应用。计算f(100)的值,由f(n)函数可以得到如下递推关系式:f(100)=100+f(98),f(98)=98+f(96),f(96)= 96+f(94),……,f(2)=2+f(0),f(0)=0,f(101)=100+98+96+……+2=(100+2)*50/2=2550。故本题答案是C选项。
11. 有如下Python程序:
a=[1]*6
b=[96,80,84,90,93,86]
n=len(b)
for i in range(n-1):
for j in range(i+1,n):
if b[j]>b[i]:
a[i]+=1
else:
a[j]+=1
运行程序,列表a的值为( )
A. [0,5,4,2,1,3] B. [1,6,5,3,2,4] C. [5,0,1,3,4,2] D. [6,1,2,4,5,3]
【答案】B
【解析】
【详解】本题考查Python程序。程序的目标是根据列表b中元素的大小来更新列表a中的值。程序中有两个嵌套的循环,外部循环遍历列表b中的元素,内部循环遍历从外部循环当前索引到列表末尾的元素。在内部循环中,根据元素的大小比较来更新列表a中的值。当b[j]>b[i]时,说明b[j]比b[i]大,则a[i]的值应该加1;否则,b[j]比b[i]小或相等,则a[j]的值应该加1。根据程序的逻辑,运行后列表a的值应该是[1,6,5,3,2,4]。故答案为:B。
12. 有如下Python程序段:
a=[34,35,38,41,41,41,45,45,69,78]
i=0;j=9;key=45;n=0
while i<=j:
m=(i+j)//2
n+=1
if keyj=m-1
else:
i=m+1
该程序段运行结束后,下列说法正确的是( )
A. i的值是7 B. j的值是8 C. m的值是6 D. n的值是3
【答案】D
【解析】
【详解】本题考查的是二分查找。程序执行过程,变量变化如下:
m a[m] i j n
初始
0 9 0
第一轮循环 4 41 5 9 1
第二轮循环 7 45 8 9 2
第三轮循环 8 69 8 7 3
由上表可知,选项D正确。
二、非选择题(本大题共3小题,其中第13题8分,第14题8分,第15题10分,共26分)
13. 一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数。现求所有小于等于n的与7无关的正整数的平方和。
(1)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
n=int(input())
sum=0
for i in range(n):
①____
if i%7==0:
flag=True
m=i
while :
if ②____
flag=True
m//=10
if flag==False:
sum=③____
print(sum)
(2)程序中加框处代码有错,请改正,修改代码为:_____________________。
【答案】 ①. flag=False ②. m%10==7 ③. sum+i*i ④. m>0 或 m!=0
【解析】
【详解】本题考查Python程序设计相关内容。分析题意及代码段可知,先排除能7整除的数,flag为标志是否为7相关的数,故①处为:flag=False;接着判断某一位上的数字是否为7,故②处为:m%10==7;求所有小于等于n的与7无关的正整数的平方和,故③处为:sum+i*i;m获得i的值后,判断每一位上的数字是否为7,故加框处代码应改为:m>0 或 m!=0。
14. 从一个文本文件中读入一篇英语文章,统计文章中各个英语单词的出现次数,并找出出现次数最多的单词与该词出现的次数。下面二个图分别为读入的文章与程序运行结果:
Dear Mike, I hope this email finds you well. I am writing to invite you to take part in a research project I am conducting called “Chinese Cuisine in My Eyes.” The aim of this survey is to explore different perceptions of Chinese food, especially from individuals with diverse cultural backgrounds like yourself. The survey will cover a range of topics, including your favorite Chinese dishes, your thoughts on the flavors and presentation of Chinese cuisine, and any overall experiences you've had with Chinese food. Your participation and honest feedback would be incredibly valuable in providing insightful ideas for my research. Please be assured that all responses will only be used for research purposes. The survey should take approximately 10minutes to complete. Your participation would be greatly appreciated. Looking forward to hearing your thoughts on this fascinating topic. Yours, Li Hua
总共单词个数为161 出现最多的单词为to其次数为5
def openfile():
with open("art. txt", "r")as f:
lines=f. readlines()
content=""
for line in lines:
content+=line
return content
st=openfile()
dic={}
①____
word=""
for i in range(len(st)):
ch=st[i]
if "a"<=ch<="z" or "A"<=ch<="Z":
if "A"<=ch<="Z":
ch=chr(②____)
word+=ch
else:
num+=1
if len(word)>0:
if word not in dic:
③____
else:
dic[word]+=1
word=""
max1=0
w=""
for word in dic:
if ④____:
max1=dic[word]
w=word
print("总共单词个数为",num)
print("出现最多的单词为",w,"其次数为",max1)
【答案】 ①. num=0 ②. ord(ch)+32 ③. dic[word]=1 ④. dic[word]>max1
【解析】
【详解】本题考查的是Python综合应用。num是记录总单词数,故①处应为:num=0;读取到大写字母要转换为小写字母,故②处应为:ord(ch)+32;如果word不在字典dic中,表明是新出现的单词应统计为1,故③处应为:dic[word]=1;max1表示出现最多的单词次数,如果找到有比max1大,则要更新max1,故④处应为:dic[word]>max1。
15. 随机产生n个正整数存放到数组a中,实现降序排序,降序关系存储在链表link中(即a[head]>a[link[head]],head为链表头指针)。现从键盘上输入m个数据,若输入数据已在该降序序列中,则将它从该序列中删除;若不在该序列中,则添加该数据到序列中,使得该序列依然有序。
例如:随机产生6数据。其数据存贮如下所示:
数据a=[41,12,36,23,33,37]
链表link=[5,-1,4,1,3,2」
表头指针head=0(注:a[head]=41,a[link[head]]=37)
现在输入2个数据。输入第1个数据为30,对应数据修改为:
数据a=[41,12,36,23,33,37,30]
链表link=[5,–1,4,1,6,2,3]
表头指针head=0
(1)输入第2个数据为33时,对应的操作为____(删除/插入)。
(2)为实现功能,请在划线处填上合适代码。
import random
def makeorder(n):#产生n个节点的降序列表
#代码略
return a,link,head
def dellink(head,link,p):#H删除节点p
if head==p:
①____
else:
q=head
while link[q]!=p:
q=link[q]
②____
return head
def printlink(head,link,a):
#输出链表,代码略
n=int(input("#输入个数:"))
a, link, head=makeorder(n)
print("操作前序列:")
printlink(head,link,a)
m=int(input("#输入个数m:"))
for i in range(m):
x=int(input("#输入数据:"))
p=head
while p!=-1 and xq=p
p=link[p]
if x==a[p]:
head =③____
else:
a. append(x)
link. append(p)
if p==head:
head=len(link)-1
else:
④____
print("操作后序列:")
printlink(head, link, a)
【答案】 ①. 删除 ②. head=link[p] ③. link[q]=link[p] ④. dellink(headlink,p) ⑤. link[q]=len(link)-1 或 link[q]=len(a)-1
【解析】
【详解】本题考查的是Python链表的综合应用。
(1)33已在该降序序列中,故对应的操作为删除。
(2)需要注意的是指针也是用链表形式存储在link中,如果节点p是头节点,则头节点改为p节点的后驱节点,故①处为:head=link[p];如果节点p不是非头节点,则把p的前驱节点,改为p的后驱节点,故②处为:link[q]=link[p];如果输入的数据已在该降序序列中,则将它从该序列中删除,故③处应为:dellink(head,link,p);如果插入的数据不是在头节点,则需要把前驱节点指向它所在的位置,应为数据最佳在列表最后,故④处应为:link[q]=len(link)-1 或link[q]=len(a)-1。诸暨市2023-2024学年第一学期期末考试试题
高二技术
第一部分信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 下列对数据概念的描述中,不正确的是( )
A. 数据是对客观事物属性的描述 B. 数据是记录下来的某种可以识别的符号
C. 数据是信息的载体 D. 数据就是数值
2. 下列数据结构中属于线性数据结构的是( )
①数组 ②栈 ③队列 ④链表 ⑤树
A. ①②③④⑤ B. ①②③④ C. ①②④⑤ D. ①②③⑤
3. 关于数据项与数据元素的描述,下面说法不正确的是( )
A. 数据元素可由若干数据项组成
B. 同一数据元素中各数据项的数据类型必须相同
C. 数据项是数据的最小单位,通常用来描述实体的某种属性
D. 数据元素是数据的基本单位,在计算机中通常作为一个整体来处理
4. 元素1,2,3,4,5,6依次入栈,若第1个出栈的元素是4,则不可能是第3个出栈的元素是( )
A. 1 B. 2 C. 3 D. 5
5. 有1个队列,队首到队尾的元素依次为H,C,B,I,E。约定:T操作是指队列中1个元素出队后再入队,Q操作是指队列中1个元素出队。则经过TTTQTTQ系列操作后,队列中队首到队尾的元素依次为( )
A. B,I,E B. B,E,H C. E,H,B D. H,C,B
6. 如图所示的二叉树,下列说法正确的是( )
A. 该二叉树是一个完全二叉树 B. 该二叉树的深度为4,节点D的度为2
C. 该二叉树叶子节点数比非叶子节点数少一个 D. 该二叉树中A是D和E的父节点
7. 已知一棵二叉树的后序遍历为CDAFEBG,中序遍历为CADGFBE,则该二叉树的前序遍历序列为( )
A. GACBDFE B. GACDBFE C. GACDBEF D. GCADBEF
8. 有如下Python程序:
minx=int(input())
n=int(input())
for i in range(n):
x=int(input())
if xminx=x
print(minx)
上述算法的时间复杂度为( )
A. 0(1) B. 0(1og2n) C. 0(n) D. 0(n2)
9. 某Python程序如下:
s=input("请输入字符串:")
ans=""
a=[1,2,3]
for i in range(len(s)):
x=s[i]
key=a[i%3]
if "A"<=s[i]<="Z":
ans=ans+chr((ord(x)-65+key)%26+65)
else:
ans=ans+x
print(ans)
执行该程序后,输入"B2d5C3"输出的结果为( )
A. 66d4CE B. C2d5E3 C. C4g6E6 D. 6E6g4C
10. 有如下Python程序段:
def f(n):
if n<2:
return 0
elif n %2==0:
return n+f(n-2)
else:
return f(n-1)
n=int(input())
print(f(n))
若输入n的值为100,则程序运行后,输出的结果是( )
A. 100 B. 2500 C. 2550 D. 5050
11. 有如下Python程序:
a=[1]*6
b=[9680,84,90,93,86]
n=len(b)
for i in range(n-1):
for j in range(i+1,n):
if b[j]>b[i]:
a[i]+=1
else:
a[j]+=1
运行程序,列表a的值为( )
A. [0,5,4,2,1,3] B. [1,6,5,3,2,4] C. [5,0,1,3,4,2] D. [6,1,2,4,5,3]
12 有如下Python程序段:
a=[34,35,38,41,41,41,45,45,69,78]
i=0;j=9;key=45;n=0
while i<=j:
m=(i+j)//2
n+=1
if keyj=m-1
else:
i=m+1
该程序段运行结束后,下列说法正确的是( )
A. i值是7 B. j的值是8 C. m的值是6 D. n的值是3
二、非选择题(本大题共3小题,其中第13题8分,第14题8分,第15题10分,共26分)
13. 一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数。现求所有小于等于n的与7无关的正整数的平方和。
(1)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
n=int(input())
sum=0
for i in range(n):
①____
if i%7==0:
flag=True
m=i
while :
if ②____
flag=True
m//=10
if flag==False:
sum=③____
print(sum)
(2)程序中加框处代码有错,请改正,修改代码为:_____________________。
14. 从一个文本文件中读入一篇英语文章,统计文章中各个英语单词的出现次数,并找出出现次数最多的单词与该词出现的次数。下面二个图分别为读入的文章与程序运行结果:
Dear Mike, I hope this email finds you well. I am writing to invite you to take part in a research project I am conducting called “Chinese Cuisine in My Eyes.” The aim of this survey is to explore different perceptions of Chinese food, especially from individuals with diverse cultural backgrounds like yourself. The survey will cover a range of topics, including your favorite Chinese dishes, your thoughts on the flavors and presentation of Chinese cuisine, and any overall experiences you've had with Chinese food. Your participation and honest feedback would be incredibly valuable in providing insightful ideas for my research. Please be assured that all responses will only be used for research purposes. The survey should take approximately 10minutes to complete. Your participation would be greatly appreciated. Looking forward to hearing your thoughts on this fascinating topic. Yours, Li Hua
总共单词个数为161 出现最多的单词为to其次数为5
def openfile():
with open("art. txt", "r")as f:
lines=f. readlines()
content=""
for line in lines:
content+=line
return content
st=openfile()
dic={}
①____
word=""
for i in range(len(st)):
ch=st[i]
if "a"<=ch<="z" or "A"<=ch<="Z":
if "A"<=ch<="Z":
ch=chr(②____)
word+=ch
else:
num+=1
if len(word)>0:
if word not in dic:
③____
else:
dic[word]+=1
word=""
max1=0
w=""
for word in dic:
if ④____:
max1=dic[word]
w=word
print("总共单词个数为",num)
print("出现最多的单词为",w,"其次数为",max1)
15. 随机产生n个正整数存放到数组a中,实现降序排序,降序关系存储在链表link中(即a[head]>a[link[head]],head为链表头指针)。现从键盘上输入m个数据,若输入数据已在该降序序列中,则将它从该序列中删除;若不在该序列中,则添加该数据到序列中,使得该序列依然有序。
例如:随机产生6数据。其数据存贮如下所示:
数据a=[41,12,36,23,33,37]
链表link=[5,-1,4,1,3,2」
表头指针head=0(注:a[head]=41,a[link[head]]=37)
现在输入2个数据。输入第1个数据为30,对应数据修改为:
数据a=[41,12,36,23,33,37,30]
链表link=[5,–1,4,1,6,2,3]
表头指针head=0
(1)输入第2个数据为33时,对应的操作为____(删除/插入)。
(2)为实现功能,请在划线处填上合适代码。
import random
def makeorder(n):#产生n个节点降序列表
#代码略
return a,link,head
def dellink(head,link,p):#H删除节点p
if head==p:
①____
else:
q=head
while link[q]!=p:
q=link[q]
②____
return head
def printlink(head,link,a):
#输出链表,代码略
n=int(input("#输入个数:"))
a, link, head=makeorder(n)
print("操作前序列:")
printlink(head,link,a)
m=int(input("#输入个数m:"))
for i in range(m):
x=int(input("#输入数据:"))
p=head
while p!=-1 and xq=p
p=link[p]
if x==a[p]:
head =③____
else:
a. append(x)
link. append(p)
if p==head:
head=len(link)-1
else:
④____
print("操作后序列:")
printlink(head, link, a)

展开更多......

收起↑

资源列表