浙江省諸暨市2023~2024學(xué)年高二信息技術(shù)上學(xué)期期末檢測試題[含答案]
諸暨市2023-2024學(xué)年第一學(xué)期期末考試試題
高二技術(shù)
第一部分信息技術(shù)(共50分)
一、選擇題(本大題共12小題,每小題2分,共24分。每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,不選、多選、錯(cuò)選均不得分)
1. 下列對數(shù)據(jù)概念的描述中,不正確的是()
A. 數(shù)據(jù)是對客觀事物屬性的描述 B. 數(shù)據(jù)是記錄下來的某種可以識(shí)別的符號
C. 數(shù)據(jù)是信息的載體 D. 數(shù)據(jù)就是數(shù)值
【答案】D
【解析】
【詳解】本題主要考查數(shù)據(jù)的描述。數(shù)據(jù)是對客觀事物屬性的描述; 數(shù)據(jù)是記錄下來的某種可以識(shí)別的符號; 數(shù)據(jù)是信息的載體;數(shù)據(jù)可以是數(shù)值、文本、圖像等,故本題選D選項(xiàng)。
2. 下列數(shù)據(jù)結(jié)構(gòu)中屬于線性數(shù)據(jù)結(jié)構(gòu)的是( )
①數(shù)組 ②棧 ③隊(duì)列 ④鏈表 ⑤樹
A. ①②③④⑤ B. ①②③④ C. ①②④⑤ D. ①②③⑤
【答案】B
【解析】
【詳解】本題主要考查數(shù)據(jù)結(jié)構(gòu)的描述。線性結(jié)構(gòu)是一個(gè)有序數(shù)據(jù)元素的集合,如數(shù)組、棧、鏈表和隊(duì)列。樹結(jié)構(gòu)屬于非線性結(jié)構(gòu),故本題選B選項(xiàng)。
3. 關(guān)于數(shù)據(jù)項(xiàng)與數(shù)據(jù)元素的描述,下面說法不正確的是( )
A. 數(shù)據(jù)元素可由若干數(shù)據(jù)項(xiàng)組成
B. 同一數(shù)據(jù)元素中各數(shù)據(jù)項(xiàng)的數(shù)據(jù)類型必須相同
C. 數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小單位,通常用來描述實(shí)體的某種屬性
D. 數(shù)據(jù)元素是數(shù)據(jù)的基本單位,在計(jì)算機(jī)中通常作為一個(gè)整體來處理
【答案】B
【解析】
【詳解】本題考查的知識(shí)點(diǎn)是數(shù)據(jù)項(xiàng)與數(shù)據(jù)元素描述。同一數(shù)據(jù)元素中的數(shù)據(jù)項(xiàng)可以具有不同的數(shù)據(jù)類型。例如,在一個(gè)記錄學(xué)生信息的元素中,姓名項(xiàng)可能是一個(gè)字符串類型,年齡項(xiàng)可能是一個(gè)整數(shù)類型,性別項(xiàng)可能是一個(gè)布爾類型(0 或 1)。因此,同一數(shù)據(jù)元素中各數(shù)據(jù)項(xiàng)的數(shù)據(jù)類型并不需要完全相同,同一數(shù)據(jù)元素中各數(shù)據(jù)項(xiàng)的數(shù)據(jù)類型必須相同表述錯(cuò)誤。故答案為B選項(xiàng)。
4. 元素1,2,3,4,5,6依次入棧,若第1個(gè)出棧元素是4,則不可能是第3個(gè)出棧的元素是()
A. 1 B. 2 C. 3 D. 5
【答案】A
【解析】
【詳解】本題主要考查棧的操作。元素1,2,3,4,5,6依次入棧,若第1個(gè)出棧的元素是4,說明進(jìn)棧順序?yàn)?,2,3,4,此時(shí)先出棧4,可以繼續(xù)出棧3,2,所以有可能為2;還有就是進(jìn)5出5,再出3,所以可能為3;還有可能進(jìn)5、6,再出6和5,因此有可能為5,不可能為元素1,故本題選A選項(xiàng)。
5. 有1個(gè)隊(duì)列,隊(duì)首到隊(duì)尾的元素依次為H,C,B,I,E。約定:T操作是指隊(duì)列中1個(gè)元素出隊(duì)后再入隊(duì),Q操作是指隊(duì)列中1個(gè)元素出隊(duì)。則經(jīng)過TTTQTTQ系列操作后,隊(duì)列中隊(duì)首到隊(duì)尾的元素依次為( )
A. B,I,E B. B,E,H C. E,H,B D. H,C,B
【答案】B
【解析】
【詳解】本題考查的是隊(duì)列操作。隊(duì)列操作原則是先進(jìn)先出。初始隊(duì)首到隊(duì)尾的元素依次為:HCBIE。
經(jīng)過TTT操作后,隊(duì)首到隊(duì)尾的元素依次為:IEHCB;
經(jīng)過Q操作后,隊(duì)首到隊(duì)尾的元素依次為:EHCB;
經(jīng)過TT操作后,隊(duì)首到隊(duì)尾的元素依次為:CBEH;
經(jīng)過Q操作后,隊(duì)首到隊(duì)尾的元素依次為:BEH。
故本題應(yīng)選B。
6. 如圖所示的二叉樹,下列說法正確的是( )
A. 該二叉樹是一個(gè)完全二叉樹 B. 該二叉樹的深度為4,節(jié)點(diǎn)D的度為2
C. 該二叉樹的葉子節(jié)點(diǎn)數(shù)比非葉子節(jié)點(diǎn)數(shù)少一個(gè) D. 該二叉樹中A是D和E的父節(jié)點(diǎn)
【答案】C
【解析】
【詳解】本題考查是二叉樹。完全二叉樹是由滿二叉樹而引出來的,若設(shè)二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1)) 的結(jié)點(diǎn)數(shù)都達(dá)到最大個(gè)數(shù)(即1~h-1層為一個(gè)滿二叉樹),第 h 層所有的結(jié)點(diǎn)都連續(xù)集中在最左邊,這就是完全二叉數(shù)。圖中所示的二叉樹不是一個(gè)完全二叉樹;該二叉樹的深度為4,節(jié)點(diǎn)D的度為1;該二叉樹的葉子節(jié)點(diǎn)數(shù)(3)比非葉子節(jié)點(diǎn)數(shù)(4)少一個(gè);A是B和C的父節(jié)點(diǎn)。故本題應(yīng)選C。
7. 已知一棵二叉樹的后序遍歷為CDAFEBG,中序遍歷為CADGFBE,則該二叉樹的前序遍歷序列為( )
A. GACBDFE B. GACDBFE C. GACDBEF D. GCADBEF
【答案】B
【解析】
【詳解】本題考查是二叉樹的遍歷。依據(jù)題意可知該二叉樹如下:
故該二叉樹前序遍歷序列為:GACDBFE。選項(xiàng)B正確。
8. 有如下Python程序:
minx=int(input())
n=int(input())
foriinrange(n):
x=int(input())
ifx<minx:
minx=x
print(minx)
上述算法的時(shí)間復(fù)雜度為( )
A. 0(1) B. 0(1og2n) C. 0(n) D. 0(n2)
【答案】C
【解析】
【詳解】本題考查時(shí)間復(fù)雜度。在程序中,有一個(gè)循環(huán)for i in range(n):,它會(huì)執(zhí)行n次。每次循環(huán)中,都會(huì)執(zhí)行一些常數(shù)時(shí)間的操作,如讀取輸入、比較大小、更新最小值。因此,這個(gè)循環(huán)的時(shí)間復(fù)雜度為O(n),表示與輸入規(guī)模n成正比。故答案為:C。
9. 某Python程序如下:
s=input("請輸入字符串:")
ans=""
a=[1,2,3]
foriinrange(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)
執(zhí)行該程序后,輸入"B2d5C3"輸出的結(jié)果為( )
A. 66d4CE B. C2d5E3 C. C4g6E6 D. 6E6g4C
【答案】B
【解析】
【詳解】本題主要考查Python程序的執(zhí)行。分析程序可知, key=a[i%3],a=[1,2,3],即key依次取1、2、1、2……,當(dāng)s[i]是大寫字母時(shí),執(zhí)行ans=ans+chr((ord(x)-65+key)%26+65),即將該字母循環(huán)后移key個(gè)長度再拼接到ans中,當(dāng)s[i]是其他字符時(shí),直接拼接到ans中,輸入"B2d5C3",大寫字母B、C變?yōu)镃、E,其余字符不變,因此輸出的結(jié)果是C2d5E3,故本題選B選項(xiàng)。
10. 有如下Python程序段:
deff(n):
ifn<2:
return0
elifn %2==0:
returnn+f(n-2)
else:
returnf(n-1)
n=int(input())
print(f(n))
若輸入n的值為100,則程序運(yùn)行后,輸出的結(jié)果是( )
A. 100 B. 2500 C. 2550 D. 5050
【答案】C
【解析】
【詳解】本題考查Python程序設(shè)計(jì)相關(guān)內(nèi)容。本題涉及到遞歸算法的應(yīng)用。計(jì)算f(100)的值,由f(n)函數(shù)可以得到如下遞推關(guā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選項(xiàng)。
11. 有如下Python程序:
a=[1]*6
b=[96,80,84,90,93,86]
n=len(b)
foriinrange(n-1):
forjinrange(i+1,n):
ifb[j]>b[i]:
a[i]+=1
else:
a[j]+=1
運(yùn)行程序,列表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程序。程序的目標(biāo)是根據(jù)列表b中元素的大小來更新列表a中的值。程序中有兩個(gè)嵌套的循環(huán),外部循環(huán)遍歷列表b中的元素,內(nèi)部循環(huán)遍歷從外部循環(huán)當(dāng)前索引到列表末尾的元素。在內(nèi)部循環(huán)中,根據(jù)元素的大小比較來更新列表a中的值。當(dāng)b[j]>b[i]時(shí),說明b[j]比b[i]大,則a[i]的值應(yīng)該加1;否則,b[j]比b[i]小或相等,則a[j]的值應(yīng)該加1。根據(jù)程序的邏輯,運(yùn)行后列表a的值應(yīng)該是[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
whilei<=j:
m=(i+j)//2
n+=1
ifkey<a[m]:
j=m-1
else:
i=m+1
該程序段運(yùn)行結(jié)束后,下列說法正確的是( )
A. i的值是7 B. j的值是8 C. m的值是6 D. n的值是3
【答案】D
【解析】
【詳解】本題考查的是二分查找。程序執(zhí)行過程,變量變化如下:
m
a[m]
i
j
n
初始
0
9
0
第一輪循環(huán)
4
41
5
9
1
第二輪循環(huán)
7
45
8
9
2
第三輪循環(huán)
8
69
8
7
3
由上表可知,選項(xiàng)D正確。
二、非選擇題(本大題共3小題,其中第13題8分,第14題8分,第15題10分,共26分)
13. 一個(gè)正整數(shù),如果它能被7整除,或者它的十進(jìn)制表示法中某一位上的數(shù)字為7,則稱其為與7相關(guān)的數(shù)。現(xiàn)求所有小于等于n的與7無關(guān)的正整數(shù)的平方和。
(1)實(shí)現(xiàn)上述功能的部分Python程序如下,請?jiān)趧澗€處填入合適的代碼。
n=int(input())
sum=0
foriinrange(n):
①____
ifi%7==0:
flag=True
m=i
while:
if ②____
flag=True
m//=10
ifflag==False:
sum=③____
print(sum)
(2)程序中加框處代碼有錯(cuò),請改正,修改代碼為:_____________________。
【答案】 ①. flag=False ②. m%10==7 ③. sum+i*i ④. m>0 或 m!=0
【解析】
【詳解】本題考查Python程序設(shè)計(jì)相關(guān)內(nèi)容。分析題意及代碼段可知,先排除能7整除的數(shù),flag為標(biāo)志是否為7相關(guān)的數(shù),故①處為:flag=False;接著判斷某一位上的數(shù)字是否為7,故②處為:m%10==7;求所有小于等于n的與7無關(guān)的正整數(shù)的平方和,故③處為:sum+i*i;m獲得i的值后,判斷每一位上的數(shù)字是否為7,故加框處代碼應(yīng)改為:m>0 或 m!=0。
14. 從一個(gè)文本文件中讀入一篇英語文章,統(tǒng)計(jì)文章中各個(gè)英語單詞的出現(xiàn)次數(shù),并找出出現(xiàn)次數(shù)最多的單詞與該詞出現(xiàn)的次數(shù)。下面二個(gè)圖分別為讀入的文章與程序運(yùn)行結(jié)果:
DearMike,
Ihopethisemailfindsyouwell. IamwritingtoinviteyoutotakepartinaresearchprojectIamconductingcalled “ChineseCuisineinMyEyes.”
TheaimofthissurveyistoexploredifferentperceptionsofChinesefood, especiallyfromindividualswithdiverseculturalbackgroundslikeyourself. Thesurveywillcoverarangeoftopics, includingyourfavoriteChinesedishes, yourthoughtsontheflavorsandpresentationofChinesecuisine, andanyoverallexperiencesyou'vehadwithChinesefood. Yourparticipationandhonestfeedbackwouldbeincrediblyvaluableinprovidinginsightfulideasformyresearch. Pleasebeassuredthatallresponseswillonlybeusedforresearchpurposes. Thesurveyshouldtakeapproximately10minutestocomplete.
Yourparticipationwouldbegreatlyappreciated. Lookingforwardtohearingyourthoughtsonthisfascinatingtopic.
Yours,
LiHua
總共單詞個(gè)數(shù)為161
出現(xiàn)最多的單詞為to其次數(shù)為5
defopenfile():
withopen("art. txt", "r")asf:
lines=f. readlines()
content=""
forlineinlines:
content+=line
returncontent
st=openfile()
dic={}
①____
word=""
foriinrange(len(st)):
ch=st[i]
if "a"<=ch<="z" or "A"<=ch<="Z":
if "A"<=ch<="Z":
ch=chr(②____)
word+=ch
else:
num+=1
iflen(word)>0:
ifwordnotindic:
③____
else:
dic[word]+=1
word=""
max1=0
w=""
forwordindic:
if ④____:
max1=dic[word]
w=word
print("總共單詞個(gè)數(shù)為",num)
print("出現(xiàn)最多的單詞為",w,"其次數(shù)為",max1)
【答案】 ①. num=0 ②. ord(ch)+32 ③. dic[word]=1 ④. dic[word]>max1
【解析】
【詳解】本題考查的是Python綜合應(yīng)用。num是記錄總單詞數(shù),故①處應(yīng)為:num=0;讀取到大寫字母要轉(zhuǎn)換為小寫字母,故②處應(yīng)為:ord(ch)+32;如果word不在字典dic中,表明是新出現(xiàn)的單詞應(yīng)統(tǒng)計(jì)為1,故③處應(yīng)為:dic[word]=1;max1表示出現(xiàn)最多的單詞次數(shù),如果找到有比max1大,則要更新max1,故④處應(yīng)為:dic[word]>max1。
15. 隨機(jī)產(chǎn)生n個(gè)正整數(shù)存放到數(shù)組a中,實(shí)現(xiàn)降序排序,降序關(guān)系存儲(chǔ)在鏈表link中(即a[head]>a[link[head]],head為鏈表頭指針)?,F(xiàn)從鍵盤上輸入m個(gè)數(shù)據(jù),若輸入數(shù)據(jù)已在該降序序列中,則將它從該序列中刪除;若不在該序列中,則添加該數(shù)據(jù)到序列中,使得該序列依然有序。
例如:隨機(jī)產(chǎn)生6數(shù)據(jù)。其數(shù)據(jù)存貯如下所示:
數(shù)據(jù)a=[41,12,36,23,33,37]
鏈表link=[5,-1,4,1,3,2」
表頭指針head=0(注:a[head]=41,a[link[head]]=37)
現(xiàn)在輸入2個(gè)數(shù)據(jù)。輸入第1個(gè)數(shù)據(jù)為30,對應(yīng)數(shù)據(jù)修改為:
數(shù)據(jù)a=[41,12,36,23,33,37,30]
鏈表link=[5,–1,4,1,6,2,3]
表頭指針head=0
(1)輸入第2個(gè)數(shù)據(jù)為33時(shí),對應(yīng)的操作為____(刪除/插入)。
(2)為實(shí)現(xiàn)功能,請?jiān)趧澗€處填上合適代碼。
importrandom
defmakeorder(n):#產(chǎn)生n個(gè)節(jié)點(diǎn)的降序列表
#代碼略
returna,link,head
defdellink(head,link,p):#H刪除節(jié)點(diǎn)p
ifhead==p:
①____
else:
q=head
whilelink[q]!=p:
q=link[q]
②____
returnhead
defprintlink(head,link,a):
#輸出鏈表,代碼略
n=int(input("#輸入個(gè)數(shù):"))
a, link, head=makeorder(n)
print("操作前序列:")
printlink(head,link,a)
m=int(input("#輸入個(gè)數(shù)m:"))
foriinrange(m):
x=int(input("#輸入數(shù)據(jù):"))
p=head
whilep!=-1andx<a[p]:
q=p
p=link[p]
ifx==a[p]:
head =③____
else:
a. append(x)
link. append(p)
ifp==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鏈表的綜合應(yīng)用。
(1)33已在該降序序列中,故對應(yīng)的操作為刪除。
(2)需要注意的是指針也是用鏈表形式存儲(chǔ)在link中,如果節(jié)點(diǎn)p是頭節(jié)點(diǎn),則頭節(jié)點(diǎn)改為p節(jié)點(diǎn)的后驅(qū)節(jié)點(diǎn),故①處為:head=link[p];如果節(jié)點(diǎn)p不是非頭節(jié)點(diǎn),則把p的前驅(qū)節(jié)點(diǎn),改為p的后驅(qū)節(jié)點(diǎn),故②處為:link[q]=link[p];如果輸入的數(shù)據(jù)已在該降序序列中,則將它從該序列中刪除,故③處應(yīng)為:dellink(head,link,p);如果插入的數(shù)據(jù)不是在頭節(jié)點(diǎn),則需要把前驅(qū)節(jié)點(diǎn)指向它所在的位置,應(yīng)為數(shù)據(jù)最佳在列表最后,故④處應(yīng)為:link[q]=len(link)-1 或link[q]=len(a)-1。