中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2024年3月寧波十校高三聯考信息技術卷 Word版含解析

資源下載
  1. 二一教育資源

2024年3月寧波十校高三聯考信息技術卷 Word版含解析

資源簡介

寧波“十?!?024 屆高三 3 月聯考 技術試題卷
解析
信息技術(共 50 分)
1. 下列關于數據與信息的說法,不正確的是
A. 在計算機中, 數據一般以文件的形式存儲
B. 存儲信息的載體遭到破壞,其承載的信息會消失
C. 大數據需要特定的技術和分析方法將其轉化為價值
D. 預訂車票時, 余票的數量是數據, 座位等級不是數據
【答案】D
(
【解析】
(本題考查數據與信息)
【推薦指數】
★★
(常規概念題)
數據是對客觀事物的符號表示。
D
:預訂車票時,
余票的數量是數據,座位等級也是數據
)
2. 下列關于人工智能的說法,正確的是
A. 深度學習需要手工構造知識庫
B. 強化學習是從過去的經驗中不斷學習,提升能力
C. 行為主義人工智能中,智能行為就是對符號的推理和運算
D. 混合增強人工智能中, 以人工智能為主,人類智能為輔助
【答案】B
(
【解析】
(本題考查人工智能)
【推薦指數】
★★
(常規概念題)
A.
深度學習從數據出發, 學習數據中蘊含的概念或模式, 不需要手工構造知識庫;
B.
強化學習是根據結果反饋
來調整相應的學習方法,
即從過去的經驗中不斷學習,
提升能力;
C.
符號主義人工智能中,
智能行為就是對符
號的推理和運算;
D.
混合增強人工智能中,人類智能和機器智能彼此協調、相互取長補短,但是人類智
能是“智
能回路”的總開關
)
閱讀下列材料, 回答第 3 至 5 題:
某科技館售票系統,參觀者可以通過科技館官方網站或手機應用程序購買門票,并可以選擇將電子門票保存 到手機上, 可用電子門票或二維碼等電子形式進行檢票。系統通過收集和分析參觀者的購票數據、參觀路線和參 與活動情況,優化展覽設計和活動策劃, 并對參觀者流量和使用情況進行實時監控和統計, 為科技館的管理決策 提供科學依據。
3. 下列關于該信息系統組成的說法,正確的是
A. 手機應用程序是系統軟件
B. 該系統中的用戶就是全體參觀者
C. 該系統的運行可以沒有通信網絡
D. 該系統中參觀者的購票數據、參觀路線一般存儲在數據庫中
【答案】D
1
(
【解析】
(本題考查信息系統組成)
【推薦指數】
★★
(常規概念題)
A.
手機應用程序是應用軟件;
B.
該系統中的用戶包括全體參觀者、使用者、維護者、開發者等;
C.
該系統的運
行需要通信網絡去完成購買等各項服務;
D.
該系統中參觀者的購票數據、參觀路線一般存儲在數據庫中
)
4. 下列關于該信息系統功能和應用的說法, 不正確的是
A. 該系統基于數據分析, 支持科學決策
B. 該售票系統簡單易用,不存在技術門檻
C. 斷電后該系統無法運行, 體現了系統對外部環境有依賴性
D. 參觀者向系統提交購票數據、參觀路線等, 體現了數據的收集和輸入功能
【答案】B
(
【解析】
(本題考查信息系統功能和應用)
【推薦指數】
★★
(常規概念題)
B.
該售票系統簡單易用,但是依舊存在技術門檻(
手機、打字等都算是門檻)
)
5. 智能手機已廣泛應用到人們的日常生活中,下列說法不正確的是
A. 智能手機是一種最常見的移動終端設備
B. 參觀者將電子門票保存到手機后,存儲在 RAM 中
C. 影響智能手機的主要性能指標有 CPU、存儲和屏幕分辨率等
D. 手機出示二維碼檢票時,屏幕會根據環境自動調節亮度,主要依賴光線傳感器的植入
【答案】B
(
【解析】
(本題考查移動終端)
【推薦指數】
★★
(常規概念題)
B.
參觀者將電子門票保存到手機后,存儲在
R
OM

)
6. 下列關于網絡系統的說法,正確的是
A. 傳輸控制協議負責將信息從一個地方傳送到另一個地方
B. 構建家庭網絡時, 往往將無線終端與路由器的 LAN 口連接
C. 數據通信是通信技術和計算機技術相結合而產生的一種通信方式
D. 手機之間通過移動通信網絡通信時,一部手機可以直接將信號傳遞給另一部手機
【答案】C
(
【解析】
(本題考查網絡系統)
【推薦指數】
★★
(常規概念題)
A.
網際協議負責將信息從一個地方傳送到另一個地方
B.
構建家庭網絡時,
往往將有線終端與路由器的
LAN
口連接
D.
手機之間通過移動通信網絡通信時,一部手機不可以直接將信號傳遞給另一部手機
)
7. 某段未經壓縮的音頻,采樣頻率是 44. 1kHz,量化位數為 8b,下列說法正確的是
A. 聲音數字化需要經過采樣和量化兩個過程
B. 該音頻數字化時, 量化值取值范圍為 1~256
2
C. 用手機播放音頻的過程實現了信號的數模轉換
D. 該音頻數字化時, 每分鐘的采樣樣本數為 44100 個
【答案】C
(
【解析】
(本題考查信息編碼)
【推薦指數】
★★★★
A
選項, 數字化需要經過采樣、量化、編碼三個過程。
B
選項,
8b
的量化值取值范圍是
0~255

D
選項,
44.1kHz
說明每秒采樣樣本數是
44100
)
8. 某完全二叉樹, 中序遍歷結果為“ 甲乙丙丁” ,則后序遍歷結果是
A. 甲乙丁丙 B. 丙乙甲丁 C. 甲丁丙乙 D. 乙丁丙甲
【答案】A
(
【解析】
(本題考查二叉樹)
【推薦指數】
★★
根據節點數,以及完全二叉樹畫出二叉樹結構圖,
再根據中序遍歷。所
以后序遍歷是甲乙丁丙。








)
9. 有一個空棧, 若元素入棧的順序是 a ,b ,c ,d ,e ,第 1 個出棧的元素是 d,則當所有元素都出棧后,下列說 法正確的是
A. c 一定比 a ,b 先出棧 B. 最后一個出棧的元素一定是 e
C. 最后一個出棧的元素一定是 a D. a ,b ,c 出棧的先后順序不確定
【答案】A
(
【解析】
(本題考查棧)
【推薦指數】
★★
d

1
個出棧,
所以
a

b
、
c
一定在棧內,則根據先進后出原則,
c
一定比
a

b
先出
棧。
)
10. 有如下 Python 程序段:
import random
def binary(L,R,key):
m=(L+R)//2
ifL>R:
return L
if key<=a[m]:
return binary(m+1,R,key)
else:
return binary(L,m-1,key)
a=[9,8,7,7,7,5,5,3]
x=random. randint(1,4)*2+1
print(binary(0,7,x))
執行該程序段后,輸出結果不可能是
3
A. 2 B. 5 C. 7 D. 8
【答案】A
(
【解析】
(本題考查二分查找和遞歸算法)
【推薦指數】
★★
x
的值可能是
3,5,7,9

a=[9, 8,7,7,7, 5,5, 3 ]
,則
x=3
時,
L=8
,
x=5
時,
L=7
,
x=7
時,
x=9 x=7 x=5 x
=3
L=5
,
x=9
時,
L=1.
)
11. 用數組 a 和 b 存儲兩個降序序列,用數組 c 存儲合并后的降序序列。如 a = [19,16,12,8,5],b = [20,15,14,10,6], c=[20,19,16,15,14,12,10,8,6,5]。實現該功能的程序段如下:
c = [- 1]*(len(a)+len(b))
p = 0;tot=len(a)
for i in range(len(a)):
(1)
for i in range(len(b)):
while b[i]p += 1
if c[p]==-1:
c[p]=b[i];tot+=1
else:
for j in range( (2) ):
c[j+1] = c[j]
c[p] = b[i]
tot+=1
上述程序段劃線處可選代碼為:
①c. append(a[i]) ②c[i]=a[i] ③tot,p-1,- 1 ④tot,p,-1 ⑤tot-1,p-1,- 1
則(1)(2)處的代碼依次為
A. ①③ B. ①④ C. ②⑤ D. ②③
【答案】C
(
【解析】
(本題考查插入排序)
【推薦指數】
★★★
已知
c
已賦長度,
因此
(1)
應填寫

而非

。從
to
t=len(a)
,可知
tot
表示數組的最后個元素的后一個位置或數組的
元素個數。例如
c=[10,20,30,40,-1,-1
…]

tot=4
,因此向后移動時,先執行
c[4]=c[3]
,因此
(2)
填寫

)
12. 有如下 Python 程序段:
(
def
)poem(lst,q,flag):
st=""
for i in range(7):
st+=lst[q][0]
q=lst[q][flag]
print(st)
hw=[["冬",-1,1],["梅",0,2],["枝",1,3],["幾",2,4],["點",3,5],["雪",4,6],["花",5,7],
["開",6,8],["春",7,9],["信",8,10],["來",9,0]]
4
p=head=0
flag =1;step=3
for i in range(2):
flag=-flag
p=hw[head][flag]
poem(hw,p,flag) #①
for j in range(step):
p=hw[p][flag]
poem(hw,p,flag) #②
關于上述程序段的說法, 不正確的是
A. 語句①第一次執行時,輸出“梅枝幾點雪花開”
B. 語句②第二次執行時,輸出“開花雪點幾枝梅”
C. 若加框處語句改為 flag+=(-1)**i,不會影響程序運行結果
D. 若將 hw 中的 ["梅",0,2]修改為["梅",0,3],輸出結果將不含文字“枝”
【答案】D
(
【解析】
(本題考查鏈表)
【推薦指數】
★★★★
原循環雙向鏈表是冬





















冬, 第
1
次從
p
節點開始輸出七言, 再跳
3
個節點,繼續輸出七言。第
2
次反向從
p

點開始輸出七言,
再跳
3
個節點,
繼續輸出七言。因此依次輸出
4
句話
是梅枝幾點雪花開,
點雪花開春信來,來信春開花雪點, 開花雪點幾枝梅。因此
AB
選項正確
。
C
選項,
i=0
時,
flag+=(-1)**i=2
,切片效果等效
flag=-1
。
i=1
時,
flag+=(-1)**i=1
。因此
C
也正
確。
D
選項,修改后, 第
4
次輸出還
是含有枝。
)
13. 某網約巴士, 車上最初有 12 個空座位, 從起點站向終點站行駛, 不允許掉頭或改變方向, 現有新的訂單, 請 判斷其是否能預約成功。請回答下列問題:
(1)若網約巴士已預約成功的數據為: [2,1,5],[1,3,7],[3,2,8],[2,4,7],[3,5,10],其中每個元素有 3 個數據項, 分
別表示預約人數、出發站點和到達站點, 當前接到訂單[4,5,8],
▲ (選填: 能/不能)預約成功。
(2)實現上述功能的部分 python 程序如下, 請在劃線處填入合適的代碼。
#數組 trips 存儲預約信息,trips[i]=[num, start, end]表示第 i 個預約信息有num 個乘客,出發站點為 start, 到達站點為 end,站點編號為 1~10。
total=12 #空座位總數
stations=10 #站點總數
diff=[0]*(stations+1)
count=[0]*(stations) #存儲站點上下車后的乘客人數
for i in trips:

diff[i[2]]-=i[0]
for j in range(1,stations):
for k in range( ② ):
count[j]+=diff[k]
num=int(input("請輸入乘車人數: "))
start=int(input("請輸入出發站點編號: "))
end=int(input("請輸入到達站點編號: "))
flag=True
5
for i in range(start,end):
if ③ :
flag=False
break
if flag:
print("預約成功, 請到站點等候! ")
else:
print("該訂單未能成功預約到即將駛來的 bus!")
【答案】
(1)不能(1分)
(2)①diff[i[1]]+=i[0](2分);
②1,j+1 或 0,j+1 或 j+1 或 j,0,-1,或 j,-1,-1 或其他等價答案(2分)
③count[i]+num>total 或 num>total-count[i]或其他等價答案(2分)
(
【解析】
(本題考查數組)
【推薦指數】
★★★

1
)由預約數據分析可以得到
下方左邊的圖示
過程
(
與第
2
小題的思路稍有不同
)
,站點
5
的空位數
只有
3
個,訂

[4,5,8]
不能
預約成功。

2
)遍歷每個訂單,
diff[i[2]]-=i[0]
記錄了每個訂單在達到站點下車人數,
①處
要記錄每個訂單在出發站點上
車人數
diff[i[1]]+=i[0]
;遍歷每個站點,
count[j]+=diff[k]
在統計
j
站點車上的總人數,
又因為
diff
中記錄了
每個站點的上下車數據,因此
每個站點的總人數等于該站點及前面所有站點的上下車數據之和
,因此②

k
要遍歷第
1
個站到第
j
個站點, 填
1,j+1

0,j+1

j
+1

j,0,-1,

j,-1,-1
,第
(1)
小題例子用該算法的計算過
程如
上方右邊圖
所示;

3
)若新訂單的預約站點區間存在座位不夠的情況則預約失
敗, ③處填
count
[i]+
num
>
total

num
>
total
-
count[i]
。
)
(
【解析】
(本題考查數組的應用)
【推薦指數】
★★★★
trips
(已預約)
5
3
-3
4
2
-2
3
3
-3
2
1
-1
1
2
-2
stations
1
2
3
4
5
6
7
8
9
10
diff
0
5
1
2
1
0
-3
-3
-3
count
0
5
6
8
9
9
6
3
0
根據題干
trips
存儲了預約信息例如
[[2,1,5],[1,3,7],[3,2,8],[2,4,7],[3,
5,10]]
)
6
(
瀏覽器
1
) (
Web
服務器
) (
IoT
模塊
) (
智能終端
) (
瀏覽器
2
) (

14
題圖
a
) (
diff
存儲對應站點人員變化情況, 上車用
+
人數,下車用
-
人數。變化情況入上圖。

1

count
為該站點上下車后的乘客人數,從上表可知,站點
5
乘客上下車后人數為
9
,若當前訂單為
[4,5,8] ,
車子座位總數為
12
,
9+4
大于
12
故不能預約成功。

2
)①該程序段為遍歷
trips
數據,
將對應的人員變化添加到對應的
diff
中。第
1

i

[2,1,5]
即在站點
1

2
個人上車,

diff[[i[1]]+=i
[0](

diff[1]+=2)
,站點
5
這兩個人下車
diff[[i[2]]-=i[0](

diff[5]-=2)
,因
此①處為
diff[[i[1]]+=i[
0]

②題干中已經表明
count
[j]
為站點
j
乘客人數,即從站點
1
到站點
j
上下車的人數的總和。故
for
k
為從
1

diff
中的值的和,故②為
1

j+1

flag==False
表示該訂單未能預約成功。當該站點原有人數
+
新訂單人數超過
total

12

),
則不能預約
成功, 故③處為
_count[j]+num>t
otal
)
14. 小丁同學發現小區附近的路燈開啟時間不合理, 他設計并搭建了一個光線監測系統, 傳感器采集光線值由智 能終端經 IoT 模塊發送到 Web 服務器,當光線值低于閾值時蜂鳴器播放音頻,小丁和路燈管理人員可以通 過瀏覽器查看歷史數據。請回答下列問題:

(
互聯網
)

(1)第 14 題圖 a 中①和②處的設備依次為 ▲ (單選,填字母:A. 執行器、傳感器/ B. 傳感器、執行 器)。
(2)關于該系統的說法正確的是 ▲ (多選, 填字母)
A. 瀏覽器可直接訪問數據庫來獲取歷史數據
B. 該系統軟件架構的優勢之一是方便升級和維護
C. 在硬件搭建時需要考慮智能終端與 IoT 模塊之間的接口匹配問題
D. 根據數據的存儲要求, 確定數據庫的結構, 該過程屬于前期準備中的概要設計 (注:全部選對的得 2 分, 選對但不全的得 1 分, 不選或有選錯的得 0 分)
7
(3)小丁基于 Flask Web 框架編寫服務器端的程序,部分代碼如下。若要通過瀏覽器獲取視圖函數 hello()返 回的頁面, 則應訪問的 URL 是 http:// ▲ 。
#導入 Flask 框架模塊及其他模塊, 代碼略
app=Flask(__name__)
@app. route("/show")
def hello():
#從數據庫中讀取光線數據,并返回頁面,代碼略
#服務器其他功能,代碼略
if name ==" main ":
app. run(host=" 192. 168. 43. 17", port=8080)
(4)小丁在系統開發完成后, 想從多角度觀察程序運行時是否有錯誤。該系統每隔 5 分鐘采集一次數據,當 小丁測試時,光線值一直高于閾值, 系統運行正常。小丁想立刻觀察當光線值低于閾值時, 蜂鳴器能否 播放音頻,請你幫助小丁設計可行方案。(注:本系統中光線傳感器和蜂鳴器正常,并且與智能終端的 連接正常。請回答兩項, 1 項正確得 1 分)
(5)小丁將系統中 2024-01-01 到 2024-01-07 的每天 17:00- 18:00 數據導出,保存在 light. csv 文件中, 部分數據 如第 14 題圖 b 所示,統計每天該時間段中光線值小于 100 的次數, 并繪制如第 14 題圖 c 所示線形圖, 部分 Python 程序代碼如下:
(

14
題圖
b

14
題圖
c
)
df=pd. read_csv("light. csv")
day=[]
for data in df["上傳時間"]:
day. append(data[8:10])
df. insert(0,"日期",day) #插入列
df=df[ ]
df1=df. groupby("日期"). count()
plt. plot( )
#設置繪圖參數,代碼略
①請在劃線處填入合適的代碼。
②小丁要繪制如第 14 題圖 c 所示線形圖, 則方框中應填入的正確代碼為 ▲ (單選, 填字母)
A. df1. 日期,df1. 檢測值 B. df1. index,df1. 檢測值 C. df1. index,df1. values
【答案】
(1)A(1分)(2)B C(2分)(3)192.168.43.17:8080/show (1分)
(4)①將光線傳感器置于黑暗的環境中;②將程序代碼中的閾值調整到足夠大;或其他等價答案;注:回答兩 項, 1項正確得1分,共2分(2分)
(5)①df. 檢測值<100 或 df[“檢測值”]<100 (2分)②B(2分)
(
【解析】
(本題考查信息系統搭建和
pandas
數據處理)
)
8
(
【推薦指數】
★★★
(本題考點較為常規,題目較為簡單,可以作為保溫練習)

1
)傳感器采集到數據發送給智能終端,智能終端將
指令發給執行器,
因此①處是執行器;②處是傳感器。
答案選
A


2

A.
瀏覽器需要訪問服務器才能獲取歷史數據。
B.
正確。
C.
正確。
D.
根據數據的存儲要求,
確定數據庫的結
構屬于詳細設計。答案選
BC
。

3
)要通過瀏覽器獲取視圖函數
hello
()
返回的頁面, 需要正確的服
務器地址、端口以及路由,
URL
是:
http://192.168.43.17:8080/show
。

4
)題干中提到想立刻觀察當光線低于閾值時,蜂鳴器能否播放音頻。可行的方案為:
①將光線傳感器置于黑暗的環境中
②將程序代碼中的閾值調整到足夠大
或其他等價答案。

5
)要統計每天該時間段中光線值小于
100
的次數,所以得對檢測值進行篩選,
語句為
df=df[df.
檢測值
<100]
。故答案為
df.
檢測值
<100

df[“
檢測值
”]<100

根據
df1=df.groupby(“
日期
”).count()
可知,日期已經作為索引,最后形成的

DataFrame
對象,因此繪制線
型圖時,應該用
df1.index,df
1.
檢測值。故答案選
B
。
)
(
【解析】
(本題考查信息系統和
Pandas

【推薦指數】
★★★

1
)在信息系統中,傳感器向智能終端中傳輸收集到的數據;智能終端向執行器發送指令,執行相應操作。
則①處為執行器,②處為傳感器,選
A
。

2
)當需要查詢數據時,
瀏覽器主要向服務器發送對應的請求, 服務器再從數據庫中讀取相應數據,

A
錯。
該信息系統架構為
B/S
架構,
其優勢之一為方便升級和維護,

B
對。由于
不同的智能終端和
IoT
模塊,連
接方式可能會有不同,故需要考慮只能終端和
IoT
模塊之間的連接關系型,

C
對。確定數據
庫的結構屬
于需求分析中的詳細設計,則
D
錯。選
B
、
C
。

3
)根據代碼
,確定
IP
地址為
192.168
.43.17
,端口號為
8080
,路由地址為
/
show
,則完整地址

192.168.43.17
:8080/show


4
)根據題干要求,需要測試光線低于閾值時,蜂鳴器能否正常
播放。從系統測試角度, 可以從硬件測試和
軟件測試兩個角度取設置。從硬件角度,可以選擇遮擋光
線或將光線傳感器置于黑暗的環境中去測試。
從軟件角度,可以考慮將程序代碼中的閾值調整到足夠大去測試。

5
)代碼首先從
light.csv
中讀取數據,之后在
df
中插入“
日期”列,
記錄當前日期。之后要對每天該時間段中
光線小于
100
的次數進行統計, 則可知劃線處為篩選操作,篩選條件為小于
100
次,則答案為
df
.
檢測值
<100
,下一行代碼對日期進行分組統計,由于默認
as
_
index
取值為
True
,則將日期列變為索
引列,即
df1.index
,則最后繪制圖像時,選擇的
x
軸為
df1.index
,
y
軸為
df1.
檢測值。則答案選
B
。
)
15. 某學校舉行游園活動, 有 n 個限時活動項目(如 5 分鐘夾珠),活動項目編號為 1~n ,每個活動項目從上午 8:30 開始, 結束時間不一定相同。考慮到活動場地間的距離, 活動規定:參加前一個活動后,需間隔 10 分 鐘再參加下一個活動,每個同學不能同時進行兩個及兩個以上的活動。
小丁同學對 n 個游園活動項目都非常感興趣,但是時間有限,他最多可以參加幾個活動項目?編寫程序 模擬計算過程, 從結束時間最早的活動項目開始選擇, 如果完成該項活動的時間不超過該項目結束時間, 選 擇該活動,如果超出結束時間,則考慮是否可以替換之前選中的某個活動,使完成已選項目的時間盡可能少。 請回答下列問題:
(1)若活動項目數據如下圖所示, 則最多可以參加的活動項目數量為 ▲ 。
編號 名稱 限時 結束時間
1 夾珠 5 9:20
2 聯想 ABC 20 9:30
9
3 套圈 5 9:00
4 趣味畫 10 9:10
(2)定義如下函數 time(),將結束時間(格式:“ 時:分” )轉換為分鐘,請在劃線處填入合適的代碼。 def time():
for x in activity: # 列表 activity 存儲活動項目數據
y=x[3]
for j in range(len(y)):
if y[j]==":":
break
t= ▲
x[3]=t-510 #開始時間 8:30 為 510 分鐘
(3)定義如下 sort(x)函數, 參數 x 為活動項目數據,按照結束時間進行升序排序。
def sort(lst):
n=len(lst)
for i in range(n,1,- 1):
for j in range(1,i):
下列選項中,可填入方框中的正確代碼是 ▲ (單選,填字母)。
A. iflst[j] >lst[j+1]: lst[j],lst[j+1]=lst[j+1],lst[j] B. iflst[j] C. iflst[j][3]lst[j+1][3]: lst[j],lst[j+1]=lst[j+1],lst[j]
(4)實現程序功能的部分代碼如下, 請在劃線處填上合適的代碼。
‘’’
讀取 n 個活動項目的數據, 存儲在列表 activity 中,每個元素有四個數據項, 分別為編號,名稱, 限時, 結束時間, 如[1,"夾珠",5,"9:20"],代碼略。
‘’’
time()
sort(activity)
que=[""]*n
head=tail=0
total=0
for i in range(n):
if total+activity[i][2]<=activity[i][3]:
que[tail]=activity[i]
tail+=1
total+=activity[i][2]+10
elif head!=tail and que[head][2]>activity[i][2]:

head+=1
que[tail]=activity[i]
tail+=1
temp=que[tail-1]
j=tail-2
while ② :
10
que[j+1]=que[j]
j-=1
que[j+1]=temp
print("最多可以參加的活動項目數量是:", tail-head)
【答案】
(1)3;(2)int(y[:j]) * 60 + int(y[j + 1:]) 或 int(y[0:j]) * 60 + int(y[j + 1:len(y)]) 等類似答案(3)C (4)①total += activity[i][2] - que[head][2];
②j >= head and temp[2] > que[j][2] 或 j >= head and temp[2] >= que[j][2] 或類似答案
【解析】 (本題考查字符轉換、冒泡排序和隊列維護)
【推薦指數】★★(第1-3題難度不大,第4題算法不夠好)
(1)根據題目規則, 如下表的數據選擇過程為:
編號 名稱 限時 結束時間
1 夾珠 5 9:20
2 聯想ABC 20 9:30
3 套圈 5 9:00
4 趣味畫 10 9:10
第1個選擇:選3號活動套圈,且完成時間是8:35,小于結束時間9:00,+10分鐘后為8:45;
第2個選擇: 選4號活動趣味畫, 且完成時間是8:55,小于結束時間9:10 ,+10分鐘后為9:05; 第3個選擇: 選1號活動夾珠,且完成時間是9:10,小于結束時間9:20,+10分鐘后為9:20;
第4個選擇: 選2號聯想ABC,且完成時間是9:40,大于結束時間9:30,且該活動完成時間最長, 不能替換 前面已有的活動,故不選擇該活動;
所以最多參加3個活動,分別是3號、 4號和1號活動。
(2)time()函數中,用一個j循環找到“: ”所在的位置,則從0位置到j-1位置是小時數據, j+1到末尾是分鐘數 據,且統一換算成分鐘的公式是:小時*60+分鐘,故答案是int(y[:j]) * 60 + int(y[j + 1:]) 或 int(y[0:j]) * 60 + int(y[j + 1:len(y)])
(3)sort(x)函數,將列表x按照結束時間升序排列, 從題目所給的數據來看, 結束時間在列表x的第4列;從題 目所給的代碼可以, 該排序是冒泡排序, 外循環i從n到2,內循環j從1到i,即從前向后冒泡, 則應當是大 數向后沉, 結合以上分析,題目中冒泡部分代碼如下注釋:
for i in range(n, 1, - 1): #循環n-1次, i從n到2
for j in range(1, i): #每次循環從1到i,從前向后冒泡
iflst[j][3] < lst[j- 1][3]: #若前一個元素j-1的結束時間大于后一個元素j lst[j],lst[j- 1] = lst[j- 1],lst[j] #將前一個元素j-1換到j
(4)算法整體分析:
第一步,將所有活動按照結束時間從小到大排序;
第二步,從第一個活動開始,逐個選擇活動, 并計算完成時間到total變量中,選擇邏輯為: 若total + 限時 < 結束時間, 將活動記錄到que隊列的末尾;
若total + 限時 > 結束時間, 則看que隊列中最大的元素的限時是否大于當前活動,若大于則用 當前活動替換原來活動, 否則就放棄這個活動。
每一次修改過que后,都從后向前做一次插入排序,保持que中元素是從大到小的
關鍵代碼注釋及答案如下:
for i in range(n):
if total + activity[i][2] <= activity[i][3]: #當前活動完成后累積時間小于結束時間 que[tail] = activity[i] #將當前活動放到隊列末尾
tail += 1
total += activity[i][2] + 10 #更新當前時間total
elif head != tail and que[head][2] > activity[i][2]: #當前活動限時小于已選擇的最長活動
11
(
que[tail]=activity[i]
) (
j=
tail
-2
) (

#
total +=
activity[i][2] - que[head][2]
用當前活動替換隊
列頭的活動,并重新
計算
total
head +=
1
que[tail] = activity[i]
tail +=
1
temp = que[tail -
1] #
去隊列最后一個元素
j = tail - 2 #j
從后向前遍歷隊列
while

: #
j
>=
head
and
temp[2]
>
que[j][2]
隊列沒有到頭且
temp
大于
j
元素
,就向
前找
que[j+1] = que[j]
j
-=
1
que[j+1] = temp #
找到
temp
插入位置
,插入
)
【解析】 (本題以游園活動的簡單進程為依托,考查了字符串、排序、數組、插入排序等知識)
(
【推薦指數】
★★★★
(題目難度不大,有利于學生考場正常發揮)
)
(

1
)依據題目表述,從結束時間最早的活動項目開始選擇,那么先選擇套圈,結束時間為
8
:35
,間隔
10
分鐘
)
(
后,
選擇趣味
畫,
結束時間為
8:55
,間隔
10
分鐘后,
選擇夾珠, 結束時間為
9:10
,間隔
10
分鐘后, 若選

)
(
聯想
ABC
,則超出該活動的結束時間,也無法替換前
面消耗時間最長的活動。所以最多可以參加的活動
)
(
項目數量為
3
。
)
(

2

自定義函數
time
()
實現了將時間格式轉換成分鐘格式,考查了字符串的切片操作。空格所在處應該是將
)
(
“時: 分”的兩部分內容轉換為分鐘,所以為
int(y[:j])*60+int(y[j+1:])
。
)
(

3

A
、
B
選項排序的關鍵字都是錯誤的,是按照活動的結束時間升序排序。
D
選項缺了最左邊兩個
元素的比
)
(
較排序。
C
選項正確。
)
(

4

)
(
time()
)
(
sort(activity)
)
(
que=[""]*n
)
(
head=tail=0
)
(
total=0
)
(
for i in
range(n):
)
(
if
total+activity[i][2]<=activity[i][3]:
#total
為參加了活動的結束時間
)
(
tail+=1
) (
total+=activity[i][2]
+10
) (
elif
head!=tail and que[head][2]>activity[i][2]:
) (

) (
head+=1
) (
que[tail]=activity[i]
) (
tail+=1
)#新的活動參加后修改活動排列順序為按活 動時長降序排序,為了替換時直接替換掉活 動序列中的最前面的活動項目。此處用了插 入排序算法。這里要注意的是 j 是已排序的 活動范圍,那么最前面的位置應該是 head, 而不是 0,序列中替換的活動沒有刪除,而是 用隊列出隊的思想解決的。 (
temp=que[tail-1]
)所以, 此處為 j>=head and temp[2]>que[j][2]
(
while

:
) (
que[j+1]=que[j]
)#無法參加 i 項活動,則考慮替換活動時間 較長的項目替換后, 修改活動結束時間 (
j-=1
)total 為減去活動減少的時間。所以為 (
que[j+1]=temp
)total+=activity[i][2]-que[head][2]
(
print("
最多可以參加的活動項目數量是:
", tail-head)
)
12

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 伊川县| 舒城县| 平度市| 房山区| 天门市| 湘潭县| 蓝田县| 弥勒县| 会理县| 封开县| 安塞县| 皋兰县| 肥城市| 明水县| 麻栗坡县| 崇左市| 武定县| 莱芜市| 永宁县| 腾冲县| 湟中县| 汕尾市| 托克逊县| 西乌珠穆沁旗| 中牟县| 元阳县| 科尔| 伊金霍洛旗| 苍梧县| 昌平区| 东光县| 长汀县| 綦江县| 隆安县| 沈阳市| 瓮安县| 嘉祥县| 西乌珠穆沁旗| 武山县| 咸丰县| 广宁县|