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

浙江省杭州地區含周邊重點中學2023-2024學年高二上學期期中聯考技術試題(解析版)

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

浙江省杭州地區含周邊重點中學2023-2024學年高二上學期期中聯考技術試題(解析版)

資源簡介

絕密★考試結束前
2023學年第一學期期中杭州地區(含周邊)重點中學
高二年級技術學科試題
考生須知:
1.本卷滿分100分,考試時間90分鐘;
2.答題前,在答題卷指定區域填寫班級、姓名、考場號、座位號及準考證號并填涂相應數字。
3.所有答案必須寫在答題卷上,寫在試卷上無效;
4.考試結束后,只需上交答題卷。
第一部分:信息技術(共50分)
一、選擇題(本大題共12小題,每小題2分,共24分。每小題列出的四個備選項中只有一個是符合題目要求的,不選、錯選、多選均不得分)
1. 下列關于數據、信息與知識說法,正確的是( )
A. 真實的數據一定是信息
B. 信息一旦產生,就會產生損耗
C. 人們接收同樣的信息后,會形成相同的知識
D. 計算機中的數據都是以二進制方式存儲
2. 現如今共享單車已經成為人們出行中必不可少的一部分。當手機掃描單車上的二維碼時,會將車鎖編號發送給服務器,服務器接收到編號會給單車發送開鎖信號,打開車鎖。掃描單車二維碼的過程,屬于( )
A. 信息的編碼 B. 信息的采集 C. 信息的表達 D. 圖像的數字化
3. 現如今共享單車已經成為人們出行中必不可少的一部分。當手機掃描單車上的二維碼時,會將車鎖編號發送給服務器,服務器接收到編號會給單車發送開鎖信號,打開車鎖。已知某黑白二維碼(如第3題圖所示)點陣圖規模為16×16,若用“1”表示黑,“0”表示白,則下列描述正確的是( )
A. 存儲該二維碼需要256B
B. 該二維碼整體上是左右對稱的
C. 二維碼的規模與能夠表示的信息量成正比
D. 二維碼的應用不會給人們的生活帶來安全隱患
4. 下列進制運算結果正確的是( )
A. 14D+1011B=25D B. 1001B+9D=1010B
C. 1101B-1011B=10D D. 1001B+1AH=37H
5. 下列關于大數據的說法,不正確的是( )
A. 大數據就是指數據量龐大的數據
B. 處理大數據時,一般采用分治思想
C. 導航規劃最優行駛路徑,是大數據的典型應用
D. 大數據的應用會帶來各種社會問題,如信息泄露等
6. 某算法的部分流程圖如圖所示。執行這部分流程,若輸入m和n的值分別為18,12,則輸出的結果是( )
A. 0 B. 2 C. 4 D. 6
7. Python表達式int(19/4)-25%3**2的值是( )
A. -3 B. -2 C. 2 D. 3
8. 現有雞兔同籠,上有11頭,下有28腳。試計算籠中雞、兔各有多少只(設雞有a只,兔有b只)。下列代碼中不能正確計算雞、兔數量的是( )
A. B.
C. D.
9. 有如下Python程序段
import pandas as pd
data=[["小嘉","男",97],["小浙","男",89],["小溫","女",98],["小華","女",89],["小杭","男",99]]
df=pd.DataFrame(data,columns=["姓名","性別","成績"])
下列選項左側語句與右側輸出結果不一致的是
A. print(df.groupby("性別",as_index=False).mean()) 性別 成績
女 93.5
男 950
B. print(df[df["成績"]>97])
姓名 性別 成績
2 小溫 女 98
4 小杭 男 99
C. print(df.sort_values("成績"))
姓名 性別 成績
1 小浙 男 99
3 小華 女 89
0 小嘉 男 97
2 小溫 女 98
4 小杭 男 99
D. print(df.drop(2))
姓名 性別 成績
0 小嘉 男 97
1 小浙 男 89
3 小華 女 89
4 小杭 男 99
A. A B. B C. C D. D
10. 有如下Python程序段:
a = [123,32,66,12,54,95,211]
p = q = a[0]
for x in a[1:]:
if x < p:
p,q = x,p
elif x < q:
q = x
print(q)
執行該程序段后,輸出的結果是( )
A. 123 B. 32 C. 211 D. 12
11. 完全數是指真因子(即除了自身以外的約數)之和等于它本身的自然數。
def per_num(x):
sum=1#①
for i in range(2,x):#②
if x % i == 0:#③
sum = sum + i#④
return x == sum
print(per_num(6))
則下列說法正確的是( )
A. 上述程序段有誤,應將①處語句更改為“sum=0”
B. ②處語句可以更改為“for i in range(x,2,-1)”
C. ③處語句的執行次數比④處語句的執行次數多
D. 函數返回值為False
12. 用Python程序對分辨率為500*500的圖像文件white.jpg(如圖所示)進行處理,程序段如下:
from PIL import Image
im = Image.open("white.jpg").convert("L")#打開圖像文件,并將其轉換為灰度圖像
pix=im.load()#加載圖像像素數據
width,height=im.size#獲取圖像寬度值和高度值
for x in range(width):
for y in range(height):
if x<= width//2 and y<= height//2:
if x%50 == 0 or y%50 == 0:
pix[x,y]=0
elif y > height//2:
if x == y:
pix[x,y]=0
im.show()
執行上述程序段后,顯示的圖像效果是( )
A. B. C. D.
二、非選擇題(本大題共3小題,其中第13小題8分,第14小題10分,第15小題8分,共26分)
13. 小嘉給好朋友小浙發送了一段字符串信息,該字符串信息是小嘉利用某種編碼規則編碼后的結果。編碼規則如下:將字符串中連續出現n(n≥2)次的字符串str編碼為“n[str]”的形式,若字符串str中仍然有連續出現多次的字符串,則繼續轉換,直到字符只出現1次。例如,可將原始字符串“mmfffmmfff”編碼為“2[2[m]3[f]]”。
請幫助小浙設計一段解碼程序,將收到的字符串信息恢復成原始字符串。
實現解碼功能的程序段如下,請回答下列問題:
(1)若小浙收到的字符串信息是“3[a2[c]]”,則原始字符串是“______”
(2)請在劃線處填入合適的代碼
s = input("請輸入經過編碼的字符串:")
Lst = []
res,k="",0
for i in range(len(s)):
①______
If ch == "[":
lst.append([k,res])#在列表末尾添加元素[k,res]
k,res=0,""
elif ch == "]":
curk,lres = lst.pop(-1)#將列表末尾元素取出,并分別賦值給curk,lres
res = lres + curk*res
elif②______:
k = k*10+int(ch)
else:
res=③______
print("原始字符串為:",res)
14. 三位一體(綜合評價招生)是指部分高校拿出一定比例的招生名額,實行的面對浙江考生的以高考成績、學校綜合測試成績和學業水平考試成績三種成績,按照一定的規則計算出綜合成績后,擇優錄取考生的一種錄取形式。
已知某校的“三位一體”綜合成績計算方法如下:
綜合成績=高考成績×850÷750+校測成績+學考折算成績
學考折算成績=學考成績之和×30%,其中A等10分,B等9分,C等8分,D等6分,其它等級0分。
例如:某考生高考成績630分,校測成績96分,學考成績為“BAAAAABCCA”,學考折算成績為94×30%,則其綜合成績=630×850÷750+96+94×30%。
現已知申報某校某專業的學生信息(如圖a所示)存儲在文件“info.xlsx”中,編寫Python程序實現,輸入擬錄取人數,輸出擬錄取學生信息的功能,運行界面如圖b所示。
(1)已知某學生的學考成績為“ABACCDAAAB”,則其學考折算成績是______
(2)計算綜合成績的Python程序段如下,請在劃線處填入合適代碼:
import pandas as pd
df = pd.read_excel("info.xlsx")
def score_xk(s):
①______
for ch in s:
if ch == 'A':
score+=10
elif ch==’B’:
score+=9
elif ch==’C’:
score+=8

score+=6
return score*0.3
df["綜合成績"]=df["高考成績"]*850/750+df["校測成績"]+②______
(3)若將第(2)小題中加框處代碼改為else,對程序運行結果______(填:有/無)影響。
(4)依據擬錄取人數,輸出擬錄取學生信息
cnt = int(input("擬錄取人數:"))
print("擬錄取學生信息如下:")
df1=______
print(df1)
為實現輸出如圖b的效果,劃線處可以填寫的語句是______(多選,填字母。注:多選錯選不給分)
A.df.sort_values("綜合成績",ascending=False).head(cnt)
B.df.sort_values("綜合成績",ascending=True).head(cnt)
C.dfsort_values("綜合成績",ascending=False).tail(cnt)
D.df.sort_values("綜合成績",ascending=True).tail(cnt)
E.df.sort_values("綜合成績",ascending=False)[:cnt]
15. 你是一名數據分析師,正在開發一個處理特定序列數據的應用程序,這些數據是以環狀序列的形式提供的。現在需要設計一個算法,能夠在這些環狀序列中找出最長升序子串(若有多組最長子串,則輸出最先出現那組)。例如環狀序列“BCEGHBCEFGA”中最長升序子串是“ABCEGH”。程序運行界面如圖所示。
請輸入序列數據:BCEGHBCEFGA
最長升序長度是:6
最長升序子串:ABCEGH
實現上述功能的程序段如下,請回答下列問題:
(1)請在劃線處填入合適的代碼
(2)加框處代碼有誤,請改正____
s=input("請輸入序列數據:")
n=len(s)
for i in range(n-1):
if:
break
if i==n-2:
k=n-1
maxc=n
else:
maxc=1
cnt=1
p1=i+1
p2=(p1+1)%n
while①____:
if s[p1]cnt+=1
if cnt>maxc:
maxc=cnt
②____
else:
cnt=1
p1=p2
p2=(p2+1)%n
print("最長升序長度:",maxc)
s1=""
for i in range(maxc):
s1=s[k]+s1
③____絕密★考試結束前
2023學年第一學期期中杭州地區(含周邊)重點中學
高二年級技術學科試題
考生須知:
1.本卷滿分100分,考試時間90分鐘;
2.答題前,在答題卷指定區域填寫班級、姓名、考場號、座位號及準考證號并填涂相應數字。
3.所有答案必須寫在答題卷上,寫在試卷上無效;
4.考試結束后,只需上交答題卷。
第一部分:信息技術(共50分)
一、選擇題(本大題共12小題,每小題2分,共24分。每小題列出的四個備選項中只有一個是符合題目要求的,不選、錯選、多選均不得分)
1. 下列關于數據、信息與知識的說法,正確的是( )
A. 真實的數據一定是信息
B. 信息一旦產生,就會產生損耗
C. 人們接收同樣信息后,會形成相同的知識
D. 計算機中的數據都是以二進制方式存儲
【答案】D
【解析】
【詳解】本題考查數據、信息與知識。數據是記錄客觀事物的、可鑒別的符號;信息是指音訊、消息、通訊系統傳輸和處理的對象,泛指人類社會傳播的一切內容,信息是加工了的數據,選項A錯誤;信息可以多次復制和傳遞,并且不會像物質和能源那樣產生損耗,選項B說法錯誤;每個人對信息的理解和認知都可能不同,因此即使接收了相同的信息,不同人可能會形成不同的知識,選項C說法錯誤;計算機內部存儲和處理數據時,普遍采用二進制方式,因為二進制數的運算規則簡單且易于實現,選項D說法正確。故答案為D選項。
2. 現如今共享單車已經成為人們出行中必不可少的一部分。當手機掃描單車上的二維碼時,會將車鎖編號發送給服務器,服務器接收到編號會給單車發送開鎖信號,打開車鎖。掃描單車二維碼的過程,屬于( )
A. 信息的編碼 B. 信息的采集 C. 信息的表達 D. 圖像的數字化
【答案】B
【解析】
【詳解】本題考查信息的采集。現如今共享單車已經成為人們出行中必不可少的一部分。當手機掃描單車上的二維碼時,會將車鎖編號發送給服務器,服務器接收到編號會給單車發送開鎖信號,打開車鎖。掃描單車二維碼的過程,屬于信息的采集。故選B。
3. 現如今共享單車已經成為人們出行中必不可少的一部分。當手機掃描單車上的二維碼時,會將車鎖編號發送給服務器,服務器接收到編號會給單車發送開鎖信號,打開車鎖。已知某黑白二維碼(如第3題圖所示)點陣圖規模為16×16,若用“1”表示黑,“0”表示白,則下列描述正確的是( )
A. 存儲該二維碼需要256B
B. 該二維碼整體上是左右對稱的
C. 二維碼的規模與能夠表示的信息量成正比
D. 二維碼的應用不會給人們的生活帶來安全隱患
【答案】C
【解析】
【詳解】本題考查信息編碼。存儲該二維碼需要16*16/8=32B;該二維碼整體上不是左右對稱的;二維碼的規模與能夠表示的信息量成正比;二維碼的應用會給人們的生活帶來安全隱患,因為二維碼可能攜帶含有病毒的信息,隨意掃描會存在安全隱患。故選C。
4. 下列進制運算結果正確的是( )
A. 14D+1011B=25D B. 1001B+9D=1010B
C. 1101B-1011B=10D D. 1001B+1AH=37H
【答案】A
【解析】
【詳解】本題考查進制數的轉換。1011B=11D,因此14D+1011B=25D,選項A正確;9D=1001B,1001B+9D=1001B+1001B=10010B,選項B錯誤;1101B-1011B=0010B=2D,選項C錯誤;1001B=9H,1001B+1AH=9H+1AH=23H,選項D錯誤。故選A。
5. 下列關于大數據的說法,不正確的是( )
A. 大數據就是指數據量龐大的數據
B. 處理大數據時,一般采用分治思想
C. 導航規劃最優行駛路徑,是大數據的典型應用
D. 大數據的應用會帶來各種社會問題,如信息泄露等
【答案】A
【解析】
【詳解】本題考查大數據的描述。大數據(big data),或稱巨量資料,指的是所涉及的資料量規模巨大到無法透過主流軟件工具,在合理時間內達到擷取、管理、處理、并整理成為幫助企業經營決策更積極目的的資訊。故選A。
6. 某算法的部分流程圖如圖所示。執行這部分流程,若輸入m和n的值分別為18,12,則輸出的結果是( )
A. 0 B. 2 C. 4 D. 6
【答案】D
【解析】
【詳解】本題考查算法流程圖相關知識。分析此流程圖,模擬其運行過程:將m、n代入流程,當n!=0成立,重復執行m,n=n,m-n操作,當n!=0不成立時,輸出n的值。m=18,n=16,n!=0成立,第一次進入循環,執行m,n=n,m-n操作后,m值為12,n值為6;n!=0成立,第二次進入循環,執行m,n=n,m-n操作后,m值為6,n值為6;n!=0成立,第三次進入循環,執行m,n=n,m-n操作后,m值為6,n值為0;n!=0不成立,循環結束。此時,m值為6。故本題答案是D選項。
7. Python表達式int(19/4)-25%3**2的值是( )
A. -3 B. -2 C. 2 D. 3
【答案】A
【解析】
【詳解】本題考查Python表達式的運算。按照Python運算符優先級進行運算, int() 函數用于將一個字符串或數字轉換為整型。int(19/4)-25%3**2=int(4.75)-25%9=4-7=-3。故選A。
8. 現有雞兔同籠,上有11頭,下有28腳。試計算籠中雞、兔各有多少只(設雞有a只,兔有b只)。下列代碼中不能正確計算雞、兔數量的是( )
A. B.
C. D.
【答案】C
【解析】
【詳解】本題考查枚舉算法及Python程序實現。選項C中,//是整除運算符,因此當運算出現小數時會取整,因此可能會出現錯誤結果,如a=9時,28-2*9=10,b=(28-2*9)//4=2,驗證腳:9*2+2*4=26,顯然錯誤,正確結果是:雞有8只,兔有3只。其余選項均可以,故選C。
9. 有如下Python程序段
import pandas as pd
data=[["小嘉","男",97],["小浙","男",89],["小溫","女",98],["小華","女",89],["小杭","男",99]]
df=pd.DataFrame(datacolumns=["姓名","性別","成績"])
下列選項左側語句與右側輸出結果不一致的是
A. print(df.groupby("性別",as_index=False).mean()) 性別 成績
女 93.5
男 95.0
B. print(df[df["成績"]>97])
姓名 性別 成績
2 小溫 女 98
4 小杭 男 99
C. print(df.sort_values("成績"))
姓名 性別 成績
1 小浙 男 99
3 小華 女 89
0 小嘉 男 97
2 小溫 女 98
4 小杭 男 99
D. print(df.drop(2))
姓名 性別 成績
0 小嘉 男 97
1 小浙 男 89
3 小華 女 89
4 小杭 男 99
A. A B. B C. C D. D
【答案】A
【解析】
【詳解】本題考查Python程序pandas模塊的應用。題干語句執行完,此時df是,執行語句print(df.groupby("性別",as_index=True).mean())在聚合過程中會因數據類型而報錯,,因此不能得到右側輸出結果,其余選項均一致。故選A。
10. 有如下Python程序段:
a = [123,32,66,12,54,95,211]
p = q = a[0]
for x in a[1:]:
if x < p:
p,q = x,p
elif x < q:
q = x
print(q)
執行該程序段后,輸出的結果是( )
A. 123 B. 32 C. 211 D. 12
【答案】B
【解析】
【詳解】本題考查Python程序的執行與調試。
第一次循環,x=32,滿足x第二次循環,x=66,不滿足x第三次循環,x=12,滿足x11. 完全數是指真因子(即除了自身以外的約數)之和等于它本身的自然數。
def per_num(x):
sum=1#①
for i in range(2,x):#②
if x % i == 0:#③
sum = sum + i#④
return x == sum
print(per_num(6))
則下列說法正確的是( )
A. 上述程序段有誤,應將①處語句更改為“sum=0”
B. ②處語句可以更改為“for i in range(x,2,-1)”
C. ③處語句的執行次數比④處語句的執行次數多
D. 函數返回值False
【答案】C
【解析】
【詳解】本題考查Python程序的調試。完全數是指真因子(即除了自身以外的約數)之和等于它本身的自然數。i初值為2,因此①處代碼不用更改;“for i in range(x,2,-1)”,i會取到x本身,因此不能將②處語句更改為“for i in range(x,2,-1)”;③處語句每次循環都要判斷,因此③處語句的執行次數比④處語句的執行次數多;1+2+3=6,因此函數返回值為True。故選C。
12. 用Python程序對分辨率為500*500的圖像文件white.jpg(如圖所示)進行處理,程序段如下:
from PIL import Image
im = Image.open("white.jpg").convert("L")#打開圖像文件,并將其轉換為灰度圖像
pix=im.load()#加載圖像像素數據
width,height=im.size#獲取圖像寬度值和高度值
for x in range(width):
for y in range(height):
if x<= width//2 and y<= height//2:
if x%50 == 0 or y%50 == 0:
pix[x,y]=0
elif y > height//2:
if x == y:
pix[x,y]=0
im.show()
執行上述程序段后,顯示的圖像效果是( )
A. B. C. D.
【答案】D
【解析】
【詳解】本題考查的知識點是Python中循環語句和分支語句的相關知識。閱讀程序段,分支部分的if語句部分是將四邊形的四條邊的中線作為坐標軸,主要是滿足第二象限,Y>=0并且x<=0的畫圖,程序elif部分,主要是當y<0時滿足y >height/2,且滿足x=-y,所以在第四象限的y=-x線上,所以選項D符合題意。 故選答案為D選項。
二、非選擇題(本大題共3小題,其中第13小題8分,第14小題10分,第15小題8分,共26分)
13. 小嘉給好朋友小浙發送了一段字符串信息,該字符串信息是小嘉利用某種編碼規則編碼后的結果。編碼規則如下:將字符串中連續出現n(n≥2)次的字符串str編碼為“n[str]”的形式,若字符串str中仍然有連續出現多次的字符串,則繼續轉換,直到字符只出現1次。例如,可將原始字符串“mmfffmmfff”編碼為“2[2[m]3[f]]”。
請幫助小浙設計一段解碼程序,將收到的字符串信息恢復成原始字符串。
實現解碼功能的程序段如下,請回答下列問題:
(1)若小浙收到的字符串信息是“3[a2[c]]”,則原始字符串是“______”
(2)請在劃線處填入合適的代碼
s = input("請輸入經過編碼的字符串:")
Lst = []
res,k="",0
for i in range(len(s)):
①______
If ch == "[":
lst.append([k,res])#在列表末尾添加元素[k,res]
k,res=0,""
elif ch == "]":
curk,lres = lst.pop(-1)#將列表末尾元素取出,并分別賦值給curk,lres
res = lres + curk*res
elif②______:
k = k*10+int(ch)
else:
res=③______
print("原始字符串為:",res)
【答案】 ①. "accaccacc"或accaccacc ②. ch=s[i] ③. "0"<=ch<="9" ④. res+ch
【解析】
【詳解】本題考查Python程序綜合應用。
①根據題干編碼規則,若小浙收到的字符串信息是“3[a2[c]]”,則原始字符串是"accaccacc"或accaccacc。
②依次遍歷字符串s,此處將字符s[i]賦值給變量ch用以下文判斷處理,故填ch=s[i]。
③此處將連續的數字保存到變量k中,故判斷條件是"0"<=ch<="9"。
④由代碼“res = lres + curk*res”可知遇到其他字符,則直接保存到變量res中,故填res+ch。
14. 三位一體(綜合評價招生)是指部分高校拿出一定比例的招生名額,實行的面對浙江考生的以高考成績、學校綜合測試成績和學業水平考試成績三種成績,按照一定的規則計算出綜合成績后,擇優錄取考生的一種錄取形式。
已知某校的“三位一體”綜合成績計算方法如下:
綜合成績=高考成績×850÷750+校測成績+學考折算成績
學考折算成績=學考成績之和×30%,其中A等10分,B等9分,C等8分,D等6分,其它等級0分。
例如:某考生高考成績630分,校測成績96分,學考成績為“BAAAAABCCA”,學考折算成績為94×30%,則其綜合成績=630×850÷750+96+94×30%。
現已知申報某校某專業的學生信息(如圖a所示)存儲在文件“info.xlsx”中,編寫Python程序實現,輸入擬錄取人數,輸出擬錄取學生信息的功能,運行界面如圖b所示。
(1)已知某學生的學考成績為“ABACCDAAAB”,則其學考折算成績是______
(2)計算綜合成績的Python程序段如下,請在劃線處填入合適代碼:
import pandas as pd
df = pd.read_excel("info.xlsx")
def score_xk(s):
①______
for ch in s:
if ch == 'A':
score+=10
elif ch==’B’:
score+=9
elif ch==’C’:
score+=8

score+=6
return score*0.3
df["綜合成績"]=df["高考成績"]*850/750+df["校測成績"]+②______
(3)若將第(2)小題中加框處代碼改為else,對程序運行結果______(填:有/無)影響。
(4)依據擬錄取人數,輸出擬錄取學生信息
cnt = int(input("擬錄取人數:"))
print("擬錄取學生信息如下:")
df1=______
print(df1)
為實現輸出如圖b的效果,劃線處可以填寫的語句是______(多選,填字母。注:多選錯選不給分)
A.df.sort_values("綜合成績",ascending=False).head(cnt)
B.df.sort_values("綜合成績",ascending=True).head(cnt)
C.df.sort_values("綜合成績",ascending=False).tail(cnt)
D.dfsort_values("綜合成績",ascending=True).tail(cnt)
E.df.sort_values("綜合成績",ascending=False)[:cnt]
【答案】 ①. 27 ②. score=0 ③. score_xk(df["學考成績"]) ④. 有 ⑤. AE
【解析】
【詳解】本題考查Python程序的綜合應用。
①學考折算成績=學考成績之和×30%,其中A等10分,B等9分,C等8分,D等6分,其它等級0分。已知某學生的學考成績為“ABACCDAAAB”,則其學考折算成績是(5*10+2*9+2*8+1*6)*30%=27分。
②變量score統計學考折算成績,初值為0,故填score=0。
③綜合成績=高考成績×850÷750+校測成績+學考折算成績,此處調用函數score_xk計算學考折算成績,故此處填score_xk(df["學考成績"])。
④學考折算成績=學考成績之和×30%,其中A等10分,B等9分,C等8分,D等6分,其它等級0分。若將第(2)小題中加框處代碼改為else,對程序運行結果有影響。
⑤由圖b可知輸出前cnt名,可以降序排序,取前cnt名,即df.sort_values("綜合成績",ascending=False).head(cnt)或df.sort_values("綜合成績",ascending=False)[:cnt]。選項D,df.sort_values("綜合成績",ascending=True).tail(cnt)升序排序,取后cnt名,但與圖b排序順序效果圖不一致,因此不行。故選AE。
15. 你是一名數據分析師,正在開發一個處理特定序列數據的應用程序,這些數據是以環狀序列的形式提供的。現在需要設計一個算法,能夠在這些環狀序列中找出最長升序子串(若有多組最長子串,則輸出最先出現那組)。例如環狀序列“BCEGHBCEFGA”中最長升序子串是“ABCEGH”。程序運行界面如圖所示。
請輸入序列數據:BCEGHBCEFGA
最長升序長度是:6
最長升序子串是:ABCEGH
實現上述功能的程序段如下,請回答下列問題:
(1)請在劃線處填入合適的代碼
(2)加框處代碼有誤,請改正____
s=input("請輸入序列數據:")
n=len(s)
for i in range(n-1):
if:
break
if i==n-2:
k=n-1
maxc=n
else:
maxc=1
cnt=1
p1=i+1
p2=(p1+1)%n
while①____:
if s[p1]cnt+=1
if cnt>maxc:
maxc=cnt
②____
else:
cnt=1
p1=p2
p2=(p2+1)%n
print("最長升序長度是:",maxc)
s1=""
for i in range(maxc):
s1=s[k]+s1
③____
print("最長升序子串是:",s1)
【答案】 ①. s[i]>s[i+1] ②. p1!=i或p2!=i+1 ③. k=p2 ④. k=(k-1)%n
【解析】
【詳解】本題考查Python程序設計相關內容。分析題目及程序段可知,該程序功能是求出環狀序列中找出最長升序子串。
①處,結合題意及該處代碼上下文,遍歷字符序列,若當前字符小于或等于下一個字符時繼續遍歷;若當前字符比下一個字符大時應結束此次遍歷,i初值為0,因此加框處應改為s[i]>s[i+1]。
②處,結合此代碼所在if語句分析,若i==n-2,說明遍歷字符序列時,所有元素都滿足升序,則最大子串為該字符串本身,k保留最長子串最后一個字符的位置,maxc為字符串長度;否則,從i+1位置處繼續遍歷,由于序列為環狀,故p1往前移動,最終會回到該位置,意味著遍歷走了一圈,所以應在回到原位置前去尋找最大子串,故此處應填寫:p1!=i或p2!=i+1。
③處,若s[p1]maxc成立,說明已有更長子串出現,maxc需要更新為cnt,并保留更長子串最后一個字符位置p2,故此處應填寫:k=p2。

展開更多......

收起↑

資源列表

<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. 主站蜘蛛池模板: 金寨县| 大埔区| 大冶市| 伊金霍洛旗| 宜黄县| 建德市| 来安县| 新泰市| 潼南县| 博客| 瑞丽市| 乐亭县| 清原| 公安县| 鸡东县| 安多县| 海伦市| 琼中| 浠水县| 若尔盖县| 金华市| 樟树市| 天水市| 阳山县| 东乡| 华安县| 茌平县| 广饶县| 炉霍县| 甘谷县| 凤翔县| 施甸县| 深圳市| 蓬溪县| 舒城县| 小金县| 洛浦县| 宜阳县| 宣化县| 永新县| 寻乌县|