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

浙江省紹興市第一名校2023-2024學年高二上學期期中技術(選考)試題(解析版)

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

浙江省紹興市第一名校2023-2024學年高二上學期期中技術(選考)試題(解析版)

資源簡介

紹興一中2023學年第一學期期中考試
高二技術試卷(選考)
第一部分 信息技術(共50分)
一、選擇題(本大題共12小題,每小題2分,共24分。在每小題給出的四個選項中,只有一個符合題目要求,不選、多選、錯選均不得分)
1. 下列關于數據和信息的說法,正確的是( )
A. 圖形符號不是數據
B. 信息不會因為被別人獲取而發生耗損
C. 信息具有載體依附性,不能脫離他反映的事物傳播
D. 信息可用模擬信號來表達,模擬信號是離散、不連續的信號
2. 下列關于大數據的說法,不正確的是( )
A 處理大數據時,一般采用分治思想
B. 社交網絡數據可采用圖計算進行處理
C. 速度快是大數據的特征之一,僅指數據的產生速度快
D. 價值密度的高低與數據總量的大小成反比
3. 下列關于信息的編碼,說法不正確的是( )
A. 8位二進制數能表示的最大的十進制數是255
B. n進制數120是n進制數12的n倍
C. 十進制數x剛好能整除8,則轉換為二進制數后三位都為0
D. 十六進制數E0H中的“E”對應的權值是162
4. 相同像素大小的兩幅圖像,分別由黑白像素和256種顏色像素組成,其容量大小之比為( )
A. 1:8 B. 1:1 C. 1:128 D. 1:256
5. 某算法的部分流程圖如下圖所示,以下說法正確的是( )
A. 該流程執行后,變量s的值是42 B. 該流程執行后,變量a的值是16
C. 該流程用于計算并輸出2-4+8-16的值 D. 該流程完整執行1次,“a<32 " 共執行了5次
6. 象限是平面直角坐標系(笛卡爾坐標系)中橫軸和縱軸所劃分的四個區域,每一個區域叫做一個象限。象限以原點為中心,x,y 軸為分界線,原點和坐標軸上的點不屬于任何象限。某同學根據輸入的坐標點(x,y)來判斷該坐標點的位置所在,以下實現該分類的 Python 程序段中正確的是( )
A. B. C. D.
7. 有如下Python程序段:
n=int(input())
a=[0,0,0,0,0,0,0,0,0,0]
c=0
while n>0:
a[n%10]=a[n%10]+1
if a[n%10]==1:
c=c+1
n=n//10
print(c)
執行上述程序段,若輸出c的值為4,則輸入n的值可能為( )
A. 1123 B. 2373 C. 14551 D. 20045
8. 有如下Python程序段:
s=input()
s1=""
for i in s:
if "0" <= i <= "9":
s1=i+s1
else:
s1+=i
print(s1)
輸入s值為“13Ka5iSh79”,執行該程序段后,輸出結果是( )
A. 13Ka5iSh79 B. 13579KaiSh C. 97531KaiSh D. 31Ka5iSh97
9. 有如下Python程序段:
s="VictoryOnTheWay"#'A'的ASCII值為65,"a"的ASCII碼值為97
mx=""
pre=0
for i in range(1len(s)):
if ord(s[i]) < 97:
if mxmx=s[pre:i]
pre=i
print(mx)
A. Victory B. On C. The D. Way
執行完以上程序段后,輸出的內容為( )
10. 有如下Python 程序段:
lst=[74,32,66,46,38,28,85]
k=1
for i in range(len(lst)-1):
if lst[i]*k < lst[i+1]*k:
print(lst[i],end=" ")
k=-k
執行完以上程序段后,輸出的內容為(  )
A. 74 66 38 B. 74 32 66 38 28 C. 74 32 66 46 38 28 D. 46
11. lst1和lst2都是升序排序的列表,執行如下Python程序段:
result=[]
i=0#用于遍歷1st1
j=0#用于遍歷1st2
while iif lst1[i]result.append(lst1[i])
i+=1
else:
result.append(lst2[j])
j+=1
while iresult.append(lst1[i])#②
i+=1
while jresult.append(lst2[j])#③
j+=1
下列說法不正確的是( )
A. 程序段①執行后,result可能與lst1相同 B. 程序段①執行后,result可能與lst2相同
C. 在一次程序運行中,②處代碼和③處代碼可能都被執行 D. 程序執行后,列表result中的元素升序排序
12. 有如下Python程序段:
from random import random
a=[1]*5
i=1
while i<=4:
a[i]=int(random()*10)+1
if a[i]==a[i-1]//2 or a[i]==a[i-1]*2:
i+=1
執行該程序段后,數組a的值可能是( )
A. [1,2,1,2,1] B. [1,2,4,8,16] C. [2,1,2,1,2,] D. [8,4,2,4,8]
二、非選擇題(本大題共4小題,其中第13小題6分,第14小題6分,第15小題7分,第16小題7分,共26分)
13. 一個正整數,如果它能被7整除,或者它的十進制表示法中某一位上的數字為7,則稱其為與7相關的數。現求所有小于等于n的與7無關的正整數的平方和。實現上述功能的部分Python程序如下,請在劃線處填入合適的代碼。
n=int(input())
①____
for i in range(n+1):
flag=False
if i%7==0:
flag=True
m=i
while ②____:
if m%10==7:
flag=True
m//=10
if ③____:
sum=sum+i*i
print(sum)
14. 檢查數學表達式中的括號是否配對是計算機進行數學計算的重要環節。括號序列“()()”中的“(”與“)”是配對的,而序列“())(”中的括號則是不配對的。對于不配對的序列,可以將“(”括號修改為“)”,或者將“)”修改為“(”來實現配對。如下圖所示是括號序列“())(()”通過不同的方案所需要的修改次數,最少修改次數為2。
編寫程序,計算修改括號序列使其配對的最少次數。部分Python程序如下,請在劃線處填入合適的代碼。
s=input() #輸入括號序列,序列中僅包含“(”、“)”兩種字符,且長度為偶數
x=0
ans=0
for i in range(len(s)):
if s[i]=="(":
①____
elif s[i]==")" and x>=1:
x-=1
elif s[i]==")" and ②____:
ans+=1
x+=1
ans+=③____
print(ans)
15. 某貨品倉庫最多存儲m件貨物,只能從左右兩側取出,現要在移動其他貨物次數盡可能少的情況下取出一件某類貨物,取出后,其他貨物按照原有順序重新存入,貨物間不留空隙。比如:倉庫存儲情況列表a=["0","A","A","B","B","A","0","0","0","0","0"],其中“0”表示空位,“A”,“B”表示位置上貨物種類,現需從中取出一件B貨物,則應從右側取出,取完后,倉庫存儲列表更新為a=["0","A","A","B","A","0","0","0","0"]。
(1)若要在上述實例中,再取出一件B貨物,則應從____(選填:左側/右側)取出。
(2)實現上述功能的部分Python程序如下,請在劃線處填入合適代碼
#讀取倉庫存儲情況列表a,最多存儲件數m,代碼略
kind=input("請輸入貨物:")
left=right=0 #left記錄從左側取出此貨物時需移動其他物品的次數,right記錄從右側取出此貨物時需移動其他物品的次數
i=0;j=m-l
t=[0,0] #t表示是否找到此貨物
while i<=j and t!=[11]
if____:
i=i+1
elif a[i]!=kind:
left+=1
i=i+l
else:
t[0]=1
if a[j]== "0":
j=j-1
elif a[j]!=kind:
____
j=j-1
else:
t[1]=1
if left>right:
for k in range(j,m-l):
a[k]=a[k+1]
a[m-1]= "0"
else:
for k in range(____):
a[k]=a[k-1]
a[0]= "0"
print(a)
16. 某公路由于長期沒有維修,路上出現了很多個坑。為了盡快填補好這些坑,交通管理部門決定對m處地段采取交通管制。將該公路看成一條直線,坑就是直線上的坐標點,坑所在的路段需要封控管制。例如某管制路段2~4,需封控2、3、4路段。交管部門為了減少管制路段的長度,希望將這n個坑分成m段(一段可以只有一個坑),使得這m段公路的總長度最小。請你根據n個坑的位置(位置已按照從小到大進行排序),計算管制路段最小的總長度。代碼運行效果如下圖所示。
請回答下列問題:
(1)上圖所示的例子中,若將路段數量修改為5,則管制路段總長度為____
(2)實現上述功能的Python程序如下,請在劃線處填入合適的代碼。
m=int(input("路段數量: "))
s=input("坑坐標依次為:").split(',') #實現字符串“3,4,6”,轉化為列表[“3”,”4”,”6”]
n=len(s)
for i in range(n) :
s[i]=int(s[i])
flag=[False]*(n-1)
for i in range(1,m) :
k=-1
for j in range(n-1) :
if ①____:
if k==-1 or s[j+1]-s[j]>s[k+1]-s[k]:
k=j
flag[k]=True
print("維修管制的路段依次為:")
dis,t=0,0
for i in range(n-1):
if flag[i]:
print(s[t],"~",s[i])
dis+=s[i]-s[t]+1
②____
print(s[t],"~",s[n-1])
dis=③____
print("管制總長度為",dis)紹興一中2023學年第一學期期中考試
高二技術試卷(選考)
第一部分 信息技術(共50分)
一、選擇題(本大題共12小題,每小題2分,共24分。在每小題給出的四個選項中,只有一個符合題目要求,不選、多選、錯選均不得分)
1. 下列關于數據和信息說法,正確的是( )
A. 圖形符號不是數據
B. 信息不會因為被別人獲取而發生耗損
C. 信息具有載體依附性,不能脫離他反映的事物傳播
D. 信息可用模擬信號來表達,模擬信號是離散、不連續的信號
【答案】B
【解析】
【詳解】本題考查數據、信息相關內容。數據是信息的表現形式和載體,可以是符號、文字、數字、語音、圖像、視頻等,A選項錯誤;信息可被多次重復使用,不會損耗和消失,B選項正確;信息可以脫離它所反映的事物被存儲和傳播,C選項錯誤;信息可用模擬信號來表達,但模擬信號是連續的信號,D選項錯誤。故本題答案是B選項。
2. 下列關于大數據的說法,不正確的是( )
A. 處理大數據時,一般采用分治思想
B. 社交網絡數據可采用圖計算進行處理
C. 速度快是大數據的特征之一,僅指數據的產生速度快
D. 價值密度的高低與數據總量的大小成反比
【答案】C
【解析】
【詳解】本題考查大數據相關內容。大數據的數據體量大,在處理時需采用分治思想,選項A正確;對社交網絡、網購行為等數據一般采用圖計算方式進行處理,選項B正確;大數據的速度快不僅僅指處理速度快,還體現在產生速度快,選項C錯誤;大數據的價值密度的高低與數據總量的大小成反比,選項D正確;故本題答案是C選項。
3. 下列關于信息的編碼,說法不正確的是( )
A. 8位二進制數能表示最大的十進制數是255
B. n進制數120是n進制數12的n倍
C. 十進制數x剛好能整除8,則轉換為二進制數后三位都為0
D. 十六進制數E0H中的“E”對應的權值是162
【答案】D
【解析】
【詳解】本題考查數制相關內容。A選項,8位二進制數能表示的十進制數是0-255,選項正確;B選項,n進制數120是n進制數12的n倍,比如十進制數120是十進制數12的10倍,選項正確;C選項,十進制數x剛好能整除8,8轉換成二進制位:1000,能被8整除的十進制數轉換成二進制后同樣也能被二進制8整除,則該十進制數轉換為二進制后,其后三位均為0,選項正確;D選項,“E”對應的權值為161,選項錯誤。故本題答案是D選項。
4. 相同像素大小的兩幅圖像,分別由黑白像素和256種顏色像素組成,其容量大小之比為( )
A. 1:8 B. 1:1 C. 1:128 D. 1:256
【答案】A
【解析】
【詳解】本題主要考查圖像文件容量。圖像文件容量(字節)=像素*顏色深度/8,黑白像素圖顏色深度是1位(21=2),256種顏色像素圖顏色深度是8位(28=256),因此相同像素大小的兩幅圖像,分別由黑白像素和256種顏色像素組成,其容量大小之比為1:8,故本題選A選項。
5. 某算法的部分流程圖如下圖所示,以下說法正確的是( )
A. 該流程執行后,變量s的值是42 B. 該流程執行后,變量a的值是16
C. 該流程用于計算并輸出2-4+8-16的值 D. 該流程完整執行1次,“a<32 " 共執行了5次
【答案】D
【解析】
【詳解】本題考查算法流程圖相關內容。s=0,k=1,a=2,第一次循環,a<32成立(a<32執行1次),執行s=s+k*a=2,k=1-k=0,a=2*a=4;第二次循環,滿足a<32(a<32執行2次),執行s=s+k*a=2,k=1-k=1,a=2*a=8;第三次循環,滿足a<32(a<32執行3次),執行s=s+k*a=10,k=1-k=0,a=2*a=16;第四次循環,滿足a<32(a<32執行4次),執行s=s+k*a=10,k=1-k=1,a=2*a=32;不滿足a<32(a<32執行5次),循環結束。該流程執行后,變量k的值是1,變量a的值是32,變量s的值是10,該流程完整執行1次,“a<32?”共執行了5次.故本題答案是D選項
6. 象限是平面直角坐標系(笛卡爾坐標系)中橫軸和縱軸所劃分的四個區域,每一個區域叫做一個象限。象限以原點為中心,x,y 軸為分界線,原點和坐標軸上的點不屬于任何象限。某同學根據輸入的坐標點(x,y)來判斷該坐標點的位置所在,以下實現該分類的 Python 程序段中正確的是( )
A. B. C. D.
【答案】D
【解析】
【詳解】本題考查Python選擇結構相關知識。A選項,當x=0,y=0時出現“原點”、“數軸”兩個結果,錯誤;B選項,if x==0 or y==0 與elif x==0 and y==0 相矛盾,錯誤;C選項,當x=0,y=0時出現“原點”、“數軸”兩個結果,錯誤;故本題答案為D選項。
7. 有如下Python程序段:
n=int(input())
a=[0,0,0,0,0,0,0,0,0,0]
c=0
while n>0:
a[n%10]=a[n%10]+1
if a[n%10]==1:
c=c+1
n=n//10
print(c)
執行上述程序段,若輸出c值為4,則輸入n的值可能為( )
A 1123 B. 2373 C. 14551 D. 20045
【答案】D
【解析】
【詳解】本題考查Python程序設計相關內容。輸入D選項,n=20045,n>0成立,進入循環:20045%10=5,a[5]=a[5]+1=0+1=1,a[5]==1成立,c=c+1=0+1=1,n=n//10=20045//10=2004;n>0成立,進入循環:2004%10=4,a[4]=a[4]+1=0+1=1,a[4]==1成立,c=c+1=1+1=2,n=n//10=2004//10=200;n>0成立,進入循環:200%10=0,a[0]=a[0]+1=0+1=1,a[0]==1成立,c=c+1=2+1=3,n=n//10=200//10=20;n>0成立,進入循環:20%10=0,a[0]=a[0]+1=1+1=2,a[0]==1不成立,n=n//10=20//10=2;n>0成立,進入循環:2%10=2,a[2]=a[2]+1=0+1=1,a[2]==1成立,c=c+1=3+1=4,n=n//10=2//10=0;n>0不成立,不再進入循環。此時,c=4,符合題目要求。輸入ABC選項,C的值均為3,不符合題意。故本題答案是D選項。
8. 有如下Python程序段:
s=input()
s1=""
for i in s:
if "0" <= i <= "9":
s1=i+s1
else:
s1+=i
print(s1)
輸入s值為“13Ka5iSh79”,執行該程序段后,輸出的結果是( )
A. 13Ka5iSh79 B. 13579KaiSh C. 97531KaiSh D. 31Ka5iSh97
【答案】C
【解析】
【詳解】本題主要考查Python程序的執行。分析程序可知,變量i依次取字符串s中的字符,如果i是數字,則逆著拼接到s1中;如果i是字母,則正序拼接到s1中,故輸入s值為“13Ka5iSh79”,執行該程序段后,輸出的結果是97531KaiSh,故本題選C選項。
9. 有如下Python程序段:
s="VictoryOnTheWay"#'A'的ASCII值為65,"a"的ASCII碼值為97
mx=""
pre=0
for i in range(1,len(s)):
if ord(s[i]) < 97:
if mxmx=s[pre:i]
pre=i
print(mx)
A. Victory B. On C. The D. Way
【答案】A
【解析】
【詳解】本題考查的是Python應用。閱讀程序可知,從字符串s的i字母開始,如果是大寫字母,并且mx"Victory",不執行mx=s[pre:i],故最后輸出:Victory。選項A正確。
執行完以上程序段后,輸出的內容為( )
10. 有如下Python 程序段:
lst=[74,32,66,46,38,28,85]
k=1
for i in range(len(lst)-1):
if lst[i]*k < lst[i+1]*k:
print(lst[i],end=" ")
k=-k
執行完以上程序段后,輸出的內容為(  )
A. 74 66 38 B. 74 32 66 38 28 C. 74 32 66 46 38 28 D. 46
【答案】D
【解析】
【詳解】本題主要考查Python程序的執行。分析程序可知,每次循環k都變號,如果滿足lst[i]*k < lst[i+1]*k,則輸出lst[i]否則跳過。74>32,-32>-66,66>46,-46<-38,38>28,-28>-85,故滿足if判斷的只有-46<-38,故輸出的內容為46,故本題選D選項。
11. lst1和lst2都是升序排序的列表,執行如下Python程序段:
result=[]
i=0#用于遍歷1st1
j=0#用于遍歷1st2
while iif lst1[i]result.append(lst1[i])
i+=1
else:
result.append(lst2[j])
j+=1
while iresult.append(lst1[i])#②
i+=1
while jresult.append(lst2[j])#③
j+=1
下列說法不正確的是( )
A. 程序段①執行后,result可能與lst1相同 B. 程序段①執行后,result可能與lst2相同
C. 在一次程序運行中,②處代碼和③處代碼可能都被執行 D. 程序執行后,列表result中的元素升序排序
【答案】C
【解析】
【詳解】本題考查Python程序設計相關內容。分析題意可知,該代碼段是連接兩個升序列表lst1和lst2,使之成為一個新的升序列表result,D選項正確;有可能lst1中元素都比lst2中元素小,則執行完①后,result與lst1相同,A選項正確;同樣道理,執行完①后,result與lst2也可能相同,B選項正確;選項C結論與lst1和lst2各自長度相關,兩者有可能長度相等,此時執行完①后不再執行②③,有可能一長一短,要么執行②,要么執行③,該選項錯誤;故本題答案是C選項。
12. 有如下Python程序段:
from random import random
a=[1]*5
i=1
while i<=4:
a[i]=int(random()*10)+1
if a[i]==a[i-1]//2 or a[i]==a[i-1]*2:
i+=1
執行該程序段后,數組a的值可能是( )
A. [1,2,1,2,1] B. [1,2,4,8,16] C. [2,1,2,1,2,] D. [8,4,2,4,8]
【答案】A
【解析】
【詳解】本題考查Python程序設計相關內容。 a[0]=1;a[i]=int(random.random()*10+1),a[i]隨機生成1~10之間的整數,可以排除B選項;由i=1及if a[i]==a[i-1]//2 or a[i]==a[i-1]*2:i+=1;可知,從a[1]開始,每一項是前一項的2倍或1/2,由于a[0]=1,則a[1]肯定為2,排除CD選項。故本題答案是A選項。
二、非選擇題(本大題共4小題,其中第13小題6分,第14小題6分,第15小題7分,第16小題7分,共26分)
13. 一個正整數,如果它能被7整除,或者它的十進制表示法中某一位上的數字為7,則稱其為與7相關的數。現求所有小于等于n的與7無關的正整數的平方和。實現上述功能的部分Python程序如下,請在劃線處填入合適的代碼。
n=int(input())
①____
for i in range(n+1):
flag=False
if i%7==0:
flag=True
m=i
while ②____:
if m%10==7:
flag=True
m//=10
if ③____:
sum=sum+i*i
print(sum)
【答案】 ①. sum=0 ②. m>0 或 m!=0 ③. flag==False
【解析】
【詳解】本題考查Python程序設計相關內容。分析題意及代碼段可知,sum作用是計算平方和,其初值應為0,故①處應填寫:sum=0;②處,m=i,m獲得i的值,當m(即i)的值為正整數時才可以去討論其與7的關系,故此處應填寫:m>0 或 m!=0;③處,由if m%10==7:flag=True,得出m與7有關時,flag=True,則當m與7無關(即flag==False)時,才可以計算平方和,故此處應填寫:flag==False。
【分析】
【點睛】
14. 檢查數學表達式中的括號是否配對是計算機進行數學計算的重要環節。括號序列“()()”中的“(”與“)”是配對的,而序列“())(”中的括號則是不配對的。對于不配對的序列,可以將“(”括號修改為“)”,或者將“)”修改為“(”來實現配對。如下圖所示是括號序列“())(()”通過不同的方案所需要的修改次數,最少修改次數為2。
編寫程序,計算修改括號序列使其配對的最少次數。部分Python程序如下,請在劃線處填入合適的代碼。
s=input() #輸入括號序列,序列中僅包含“(”、“)”兩種字符,且長度為偶數
x=0
ans=0
for i in range(len(s)):
if s[i]=="(":
①____
elif s[i]==")" and x>=1:
x-=1
elif s[i]==")" and ②____:
ans+=1
x+=1
ans+=③____
print(ans)
【答案】 ①. x=x+1或x+=1 ②. x==0 ③. x//2
【解析】
【詳解】本題考查表達式括號匹配相關操作。分析代碼段,可知:①處,s存放括號序列,當s[i]=='('時,新括號對即將產生,可能需要修改的括號對數量x增1,故此處應填寫:x+=1(或x=x+1);②處,由下面代碼ans+=1,且x+=1,當s[i]==')',說明此處前已匹配完,s[i]處需要修改,因此判斷條件除了當s[i]==')'外,x也為0,故此處應填寫:x==0;③處,ans統計最終需要修改的次數,由于出現不匹配時,要么將“(”修改為“)”,要么將“)”修改為“(”,有兩種修改可能,我們只需要選擇一種修改方式即可,故此處應填寫:x//2。
15. 某貨品倉庫最多存儲m件貨物,只能從左右兩側取出,現要在移動其他貨物次數盡可能少的情況下取出一件某類貨物,取出后,其他貨物按照原有順序重新存入,貨物間不留空隙。比如:倉庫存儲情況列表a=["0","A","A","B","B","A","0","0","0","0","0"],其中“0”表示空位,“A”,“B”表示位置上貨物種類,現需從中取出一件B貨物,則應從右側取出,取完后,倉庫存儲列表更新為a=["0","A","A","B","A","0","0","0","0"]。
(1)若要在上述實例中,再取出一件B貨物,則應從____(選填:左側/右側)取出。
(2)實現上述功能的部分Python程序如下,請在劃線處填入合適代碼
#讀取倉庫存儲情況列表a,最多存儲件數m,代碼略
kind=input("請輸入貨物:")
left=right=0 #left記錄從左側取出此貨物時需移動其他物品的次數,right記錄從右側取出此貨物時需移動其他物品的次數
i=0;j=m-l
t=[0,0] #t表示是否找到此貨物
while i<=j and t!=[1,1]
if____:
i=i+1
elif a[i]!=kind:
left+=1
i=i+l
else:
t[0]=1
if a[j]== "0":
j=j-1
elif a[j]!=kind:
____
j=j-1
else:
t[1]=1
if left>right:
for k in range(j,m-l):
a[k]=a[k+1]
a[m-1]= "0"
else:
for k in range(____):
a[k]=a[k-1]
a[0]= "0"
print(a)
【答案】 ①. 右側
②. a[i]==0 ③. right+=1或right=right+1 ④. i,0,-1
【解析】
【詳解】本題考查Python程序設計相關內容。分析題意可知:只能從左右兩側取出,取出后,其他貨物按照原有順序重新存入,貨物間不留空隙。①處,再取出一件B貨物,則應從右側取出。原因:右側是B貨物的最近存放位置,取出后需要移動貨物次數最少。故此處應填寫:右側。分析給定代碼段,可知:left記錄離左外側最近的此貨物的離外側距離,從左遍歷時,若當前a[i]為“0”,則繼續下一個,不增加left值;若當前a[i]為此貨物,則左側遍歷結束;若當前a[i]是其他貨物,則left+1并繼續下一個;右側同理。最后判斷left和right大小,小的那側內移。②處,用于檢查倉庫的第i個位置是否為空位。在倉庫存儲情況列表a中,“0”表示空位,因此條件檢查了當前位置是否為空。故此處應填寫:a[i]=="0"。③處,表示從右側取出此貨物時,需移動其他物品的次數增加1。在這個循環中,右側的貨物被往左移動,所以右側取出貨物需要移動右邊的貨物,因此right記錄了離右外側最近的此貨物的離外側距離。故此處應填寫:right+=1。④處,表示在左側取出貨物時,將左邊的貨物往右移動一位,以保持倉庫中沒有空隙。具體來說,a[k]的值被設置為a[k-1],這表示當前位置的貨物被前一個位置的貨物替代,實現了左側取出貨物并移動其他貨物的目標,所以k的位置應從右側往左側變化,故此處應填寫:i,0,-1。
16. 某公路由于長期沒有維修,路上出現了很多個坑。為了盡快填補好這些坑,交通管理部門決定對m處地段采取交通管制。將該公路看成一條直線,坑就是直線上的坐標點,坑所在的路段需要封控管制。例如某管制路段2~4,需封控2、3、4路段。交管部門為了減少管制路段的長度,希望將這n個坑分成m段(一段可以只有一個坑),使得這m段公路的總長度最小。請你根據n個坑的位置(位置已按照從小到大進行排序),計算管制路段最小的總長度。代碼運行效果如下圖所示。
請回答下列問題:
(1)上圖所示的例子中,若將路段數量修改為5,則管制路段總長度為____
(2)實現上述功能的Python程序如下,請在劃線處填入合適的代碼。
m=int(input("路段數量: "))
s=input("坑的坐標依次為:").split(',') #實現字符串“3,4,6”,轉化為列表[“3”,”4”,”6”]
n=len(s)
for i in range(n) :
s[i]=int(s[i])
flag=[False]*(n-1)
for i in range(1,m) :
k=-1
for j in range(n-1) :
if ①____:
if k==-1 or s[j+1]-s[j]>s[k+1]-s[k]:
k=j
flag[k]=True
print("維修管制的路段依次為:")
dis,t=0,0
for i in range(n-1):
if flag[i]:
print(s[t],"~",s[i])
dis+=s[i]-s[t]+1
②____
print(s[t],"~",s[n-1])
dis=③____
print("管制總長度為",dis)
【答案】 ①. 22 ②. flag[j]==False或not flag[j] ③. t=i+1 ④. dis+s[n-1]-s[t]+1
【解析】
【詳解】本題考查Python程序設計相關內容。
(1)若將4段分成5段,只需要將其中一段中兩個坑之間間隔最大的分割,在這里最大的為21~25,分割之后長度減少了3,故總長度為:22。
(2)根據程序的輸出結果,可知變量dis為最后的總長度,最后一個循環中變量t為每一段起始位置的下標,i為末尾位置的下標,flag[i]表示s[i]與s[i+1]是否分割。故當輸出每一段之后,dis加上每一段的距離,變量t要更新為i+1,故③處應填寫:t=i+1。當結束循環,還有最后一段的長度未加上,最后一段為s[t]~s[n-1],則④處填寫:dis+s[n-1]-s[t]+1。根據flag數組的含義,當flag[k]為True表示s[k]與s[k+1]已經分割,則下一次找分割位置時,必須為未分割的部分,故②處填寫:not flag[j]或flag[j]==False。

展開更多......

收起↑

資源列表

<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. 主站蜘蛛池模板: 华池县| 天等县| 深泽县| 朝阳县| 金川县| 剑阁县| 曲水县| 慈利县| 郓城县| 平山县| 酒泉市| 芦山县| 安远县| 延安市| 凤庆县| 花垣县| 遂宁市| 苏州市| 洱源县| 宁河县| 仁布县| 山西省| 平江县| 聊城市| 长岛县| 繁昌县| 靖安县| 罗田县| 阿城市| 潢川县| 吉安市| 宜春市| 中西区| 襄城县| 鄂托克前旗| 合川市| 海晏县| 东乡| 陵水| 宽甸| 鄯善县|