本文收錄于專欄《Python等級認證CCF-GESP真題解析》,專欄總目錄:點這里,訂閱后可閱讀專欄內所有文章。
一、單選題(每題 2 分,共 30 分)
第 1 題
小楊父母帶他到某培訓機構給他報名參加CCF組織的GESP認證考試的第1級,那他可以選擇的認證語言有幾種?( )
A. 1
B. 2
C. 3
D. 4
答案:C
第 2 題
下面流程圖在yr輸入2024時,可以判定yr代表閏年,并輸出 2月是29天 ,則圖中菱形框中應該填入( )。
A. (yr%400==0) || (yr%4==0)
B. (yr%400==0) || (yr%4==0 && yr%100!=0)
C. (yr%400==0) && (yr%4==0)
D. (yr%400==0) && (yr%4==0 && yr%100!=0)
答案:B
第 3 題
在Python中,下列不可做變量的是( )。
A. five-Star
B. five_star
C. fiveStar
D. _fiveStar
答案:A
第 4 題
在Python中,與 range(10) 效果相同的是( )。
A. range(0, 10, 1)
B. range(1, 10, 1)
C. range(10, 1)
D. range(10, 1, 1)
答案:A
第 5 題
print(5 % 2 and 5 % 3) 的輸出是( )。
A. 1
B. 2
C. True
D. False
答案:B
第 6 題
下面Python代碼執行后輸出是( )。
a = 5
b = "5"
c = f"{a}" + f"{b}"
print(c)
A. 5’5’
B. 5"5"
C. 10
D. 55
答案:D
第 7 題
執行下面Python代碼后,有關說法錯誤的是( )。
a = int(input())
b = int(input())
if a and b:print("1")
elif not (a or b):print("2")
elif a or b:print("3")
else:print("4")
A. 如果先后輸入1和1,則將輸出1
B. 如果先后輸入0和1或者1和0,則將輸出3
C. 如果先后輸入0和0,則將輸出2
D. 存在一組a和b的輸入,輸出是4
答案:D
第 8 題
某貨幣由5元,2元和1元組成。輸入貨幣總金額,計算出總貨幣數最少的幣種組成。為實現其功能,橫線處應填入代碼是( )。
N = int(input())M5 = N // 5
M2 = ______________
M1 = ______________
print(f"5*{M5}+2*{M2}+1*{M1}")
A. 第1橫線處應填入:N // 2
第2橫線處應填入:N - M5 - M2
B. 第1橫線處應填入:(N - M5 * 5) // 2
第2橫線處應填入:N - M5 * 5 - M2 * 2
C. 第1橫線處應填入:N - M5 * 5 // 2
第2橫線處應填入:N - M5 * 5 - M2 * 2
D. 第1橫線處應填入:(N - M5 * 5) // 2
第2橫線處應填入:N - M5 - M2
答案:B
第 9 題
下面Python代碼執行后的輸出是( )。
loopCount = 0
for i in range(10):for j in range(1, i):loopCount += 1
print(loopCount)
A. 55
B. 45
C. 36
D. 28
答案:C
第 10 題
下面Python代碼執行后的輸出是( )。
loopCount = 0
for i in range(10):for j in range(i):if i * j % 2:breakloopCount += 1
print(loopCount)
A. 25
B. 16
C. 10
D. 9
答案:C
第 11 題
假設下面Python代碼執行過程中僅輸入正負整數或0,有關說法錯誤的是( )。
Sum = 0
N = int(input())
while N:Sum += NN = int(input())
print(Sum)
A. 執行上面代碼如果輸入0,將終止循環
B. 執行上面代碼能實現所有非0整數的求和
C. 執行上面代碼第一次輸入0,最后將輸出0
D. 執行上面代碼將陷入死循環,可將 while N: 改為 while N==0:
答案:D
第 12 題
執行下面的Python代碼,有關說法正確的是( )【質數是指僅能被1和它本身整除的正整數】。
N = int(input())
Flag = True
for i in range(2,N):if i * i > N:breakif N % i == 0:Flag = Falsebreak
if Flag == True:print(f"{N}是質數")
else:print(f"{N}不是質數")
A. 如果輸入正整數,上面代碼能正確判斷N是否為質數
B. 如果輸入整數,上面代碼能正確判斷N是否為質數
C. 如果輸入大于等于0的整數,上面代碼能正確判斷N是否質數
D. 如將 Flag = True 修改為 Flag = True if N>=2 else False 則能判斷所有整數包括負整數、0、正整數是否為質數
答案:D
第 13 題
下面Python代碼用于實現如下圖所示的效果,其有關說法正確的是( )。
for i in range(1, 6):for j in range(1, i+1):print(i*j, end=" ")print()
A. 當前代碼能實現預期效果,無需調整代碼
B. 如果 print() 與上一行代碼對齊,則可實現預期效果
C. 如果 print() 與第一行代碼對齊,則可實現預期效果
D. 刪除 print() 行,則可實現預期效果
答案:A
第 14 題
下面Python代碼執行后,輸出是( )。
cnt1 = 0
cnt2 = 0
for i in range(10):if i % 2 == 0:continueif i % 2:cnt1 += 1elif i % 3 == 0:cnt2 += 1
print(cnt1,cnt2)
A. 5 2
B. 5 0
C. 0 2
D. 0 0
答案:B
第 15 題
在下面的Python代碼中,N必須是小于10大于1的整數,M為正整數(大于0)。如果M整除N則為幸運數,如果M中含有N且能整除,則為超級幸運數,否則不是幸運數。程序用于判斷M是否為幸運數或超級幸運數或非幸運數。閱讀下面代碼,有關說法正確的是( )。
N = int(input("請輸入幸運數字:"))
M = int(input("請輸入正整數:"))
if M % N == 0:Lucky = True
else:Lucky = False
while M != 0:if M % 10 == N and Lucky == True:print(f"{M}是{N}的超級幸運數")breakM //= 10
else:if Lucky == True:print(f"{M}是{N}的幸運數")else:print(f"{M}非{N}的幸運數")
A. 如果N輸入3,M輸入36則將輸出:36是3的超級幸運數
B. 如果N輸入7,M輸入21則將輸出:21是7的幸運數
C. 如果N輸入8,M輸入36則將輸出:36非8的超級幸運數
D. 如果N輸入3,M輸入63則將輸出:63是3的超級幸運數
答案:D
二、判斷題(每題 2 分,共 20 分)
第 16 題
GESP測試是對認證者的編程能力進行等級認證,同一級別的能力基本上與編程語言無關。( )
答案:正確
第 17 題
在Python,int()可以將類似字符串"3.14"轉換為整數3。( )
答案:錯誤
第 18 題
Python表達式 -12 % 10 的值為2。( )
答案:錯誤
第 19 題
Python表達式 round(12.56, 0) 的值為13。( )
答案:錯誤
第 20 題
Python語句 print(N // 3, N % 3, sep = “-”) 中的N已被賦值為10,則該語句執行后輸出是3-1。 ( )
答案:正確
第 21 題
在Python代碼中,不可以將變量命名為input,因為input是Python語言的關鍵字。( )
答案:錯誤
第 22 題
下面Python代碼執行后將導致死循環。( )
for i in range(10):continue
答案:錯誤
第 23 題
下面Python代碼執行后將輸出10。( )
cnt = 0
for i in range(10):for j in range(i):cnt += 1break
print(cnt)
答案:錯誤
第 24 題
下面Python代碼執行后,將輸出5。( )
cnt = 0
for i in range(1,5):for j in range(i,5,i):if i * j % 2 == 0:cnt += 1
print(cnt)
答案:正確
第 25 題
下面Python代碼能實現正整數各位數字之和。( )
N = int(input())
Sum = 0
while N != 0:Sum += N % 10N //= 10
print(Sum)
答案:正確
三、編程題(每題 25 分,共 50 分)
第 26 題
試題名稱:平方之和
時間限制:1.0 s
內存限制:512.0 MB
題面描述
小楊有 個正整數 a1,a2,…,an,他想知道對于所有的 i(1 <= i <= n ),是否存在兩個正整數 x 和 y 滿足 x * x + y * y = ai。
輸入格式
第一行包含一個正整數 n,代表正整數數量。
之后 n 行,每行包含一個正整數,代表 ai。
輸出格式
對于每個正整數 ai,如果存在兩個正整數 x 和 y 滿足 x * x + y * y = ai,輸出 Yes,否則輸出 No。
樣例1
2
5
4
Yes
No
樣例解釋
對于第一個正整數,存在 1 * 1 + 2 * 2 = 5,因此答案為 Yes。
數據范圍
對于全部數據,保證有 1 <= n <= 10, 1 <= ai <= 10^6 。
參考程序
import mathdef check(x):if x<=0:return Falsey = int(math.sqrt(x))if y*y==x:return Truereturn False
t = int(input())
for ii in range(0,t):n = int(input())fl = 0for i in range(1,n+1):j = n-i*iif check(j):fl=1breakif fl==1:print("Yes")else:print("No")
第 27 題
試題名稱:計數
時間限制:1.0 s
內存限制:512.0 MB
題面描述
小楊認為自己的幸運數是正整數 k(注:保證 1 <= k <= 9 )。小楊想知道,對于從 1 到 n 的所有正整數中, k 出現了多少次。
輸入格式
第一行包含一個正整數 n。
第二行包含一個正整數 k。
輸出格式
輸出從 1 到 n 的所有正整數中, k 出現的次數。
樣例1
25
2
9
樣例解釋
從 1 到 25 中, 2 出現的正整數有 2,12,20,21,22,23,24,25,一共出現了 9 次。
數據范圍
對于全部數據,保證有 1 <= n <= 1000, 1 <= k <= 9。
參考程序
def check(x,y):cnt = 0while x>0:tmp = x%10if tmp==y:cnt+=1x=int(x/10)return cntn = int(input())
k = int(input())
ans = 0
for i in range(1,n+1):ans += check(i,k)
print(ans)