CSP-J 2020 入門級 第一輪(初賽) 答案及解析

CSP-J 2020 入門級 第一輪(初賽) 答案及解析

  1. 在內存儲器中每個存儲單元都被賦予一個唯一的序號,稱為()。
    A. 地址
    B. 序號
    C. 下標
    D. 編號

答: A
計算機中每個存儲單元都是1字節,都有唯一的地址。

  1. 編譯器的主要功能是( )。
    A. 將源程序翻譯成機器指令代碼
    B. 將源程序重新組合
    C. 將低級語言翻譯成高級語言
    D. 將一種高級語言翻譯成另一種高級語言

答: A
源程序是高級語言程序,如C++程序代碼、Java程序代碼。
編譯器將源程序翻譯成的是機器語言,也就是機器指令代碼。因此選A。
將源程序重新組合的是連接器。
將低級語言翻譯成高級語言的是反編譯器。
將一種高級語言翻譯成另一種高級語言的是轉譯器。

  1. 設x=true,y=true,z=false,以下邏輯運算表達式值為真的是( )。
    A. (y∨z)∧x∧z
    B. x∧(z∨y)∧z
    C. (x∧y)∧z
    D. (x∧y)∨(z∨x)

答: D
A選項中最后有∧z,z為false,無論前面表達式的值為什么,任何值∧false的結果都為false,因此A的值為false。
B選項最后也有∧z,z為false,因此B的值為false。
C選項最后也有∧z,z為false,因此C的值為false。
D選項,x∧y值為true, z∨x值為true,true∨true結果為true,選D。

  1. 現有一張分辨率為2048×1024像素的32位真彩色圖像。請問要存儲這張圖像,需要多大的存儲空間?( )。
    A. 16MB
    B. 4MB
    C. 8MB
    D. 2MB

答: C
已知存儲空間單位之間的關系
1 B = 8 b 1B = 8b 1B=8b
1 K B = 1024 B = 2 10 B 1KB = 1024B = 2^{10}B 1KB=1024B=210B
1 M B = 1024 K B = 2 10 K B 1MB = 1024KB = 2^{10}KB 1MB=1024KB=210KB
每個像素為32位,由于1字節=8位,32位即為4字節。
該圖像占用空間 2048 ? 1024 ? 4 B = 2 11 ? 2 10 ? 2 2 = 2 23 B = 2 13 K B = 2 3 M B = 8 M B 2048*1024*4B = 2^{11}*2^{10}*2^2 = 2^{23}B = 2^{13}KB = 2^3MB = 8MB 2048?1024?4B=211?210?22=223B=213KB=23MB=8MB

  1. 冒泡排序算法的偽代碼如下:
    輸入:數組L, n ≥ k。輸出:按非遞減順序排序的 L。
    算法 BubbleSort:
   1. FLAG ← n //標記被交換的最后元素位置2. while FLAG > 1 do3.     k ← FLAG -14.     FLAG ← 15.     for j=1 to k do6.         if L(j) > L(j+1) then do7.              L(j)  ? L(j+1)8.              FLAG ← j

對n個數用以上冒泡排序算法進行排序,最少需要比較多少次?( )。
A. n 2 n^2 n2
B. n ? 2 n-2 n?2
C. n ? 1 n?1 n?1
D. n n n

答: C
該算法對冒泡排序做了優化,flag是上一次冒泡過程中,最后一次交換的數對的第一個數的位置。
因此在下一次進行冒泡排序前,可以保證從位置flag到位置n的元素都已經排好序了。
如果flag為1,則整個序列已經有序,排序結束。
否則進入while循環,由于從第flag個數到第n個數已經有序了,設k為flag-1,只需要對第1到第k個數進行排序。所以接下來j從1到k循環。
這是一趟冒泡過程,只要第j個數大于第j+1個數,二者交換。flag初值設為1,在冒泡過程中只要第j和第j+1個數,發生交換,將flag設為發生交換的數對中第一個數的位置。
該優化可以使得當數列接近有序時,減少冒泡過程中交換元素的次數。
當初始序列就是非遞減序列時,k被設為flag-1,也就是n-1。進入while循環,flag被設為1,接下來的for循環中,總共執行k次循環,也就是執行了 n ? 1 n-1 n?1次比較。沒有任何一個位置j滿足L(j) > L(j+1),flag的值還是1。下一次循環時,不滿足flag>1,跳出。
因此比較次數最少時,比較了 n ? 1 次 n-1次 n?1

  1. 設A是n個實數的數組,考慮下面的遞歸算法:
XYZ (A[1..n])if n=1 then return A[1]else temp ← XYZ (A[1..n-1])if temp < A[n]then return tempelse return A[n]

請問算法 XYZ 的輸出是什么?()。
A. A 數組的平均
B. A 數組的最小值
C. A 數組的中值
D. A 數組的最大值

答: B
XYZ函數傳入一個數組A,下標1到n。
當n不為1時,使用XYZ處理A數組下標1到n-1,返回值為temp。接下來返回temp和A[n]的較小值。
不斷進行遞歸調用,縮小問題規模,直到n為1時,返回A[1]。
XYZ(A[1…2])這一次調用中,返回值temp為A[1],A[n]為A[2],返回的是A[1]和A[2]的較小值。
XYZ(A[1…3])這一次調用中,返回值temp為A[1…2]的最小值,A[n]為A[3],求二者的最小值,返回的是A[1…3]的最小值小值。
依此類推,可知XYZ(A[1…n-1])返回值temp是A[1…n-1]的最小值,再和A[n]比較,返回的是A[1…n]的最小值,即A數組的最小值,選B。

  1. 鏈表不具有的特點是()。
    A. 可隨機訪問任一元素
    B. 不必事先估計存儲空間
    C. 插入刪除不需要移動元素
    D. 所需空間與線性表長度成正比

答: A
線性表是邏輯結構,鏈表是線性表的一種物理結構,是一種具體實現。另一種物理結構是順序表。
A. 隨機訪問指的是可以以 O ( 1 ) O(1) O(1)復雜度取到線性表中的第i個元素,如果該線性表是順序表,是可以進行隨機訪問的。如果是鏈表,則必須從鏈表第1個頂點開始,通過第1個頂點找到第2個頂點,通過第2個頂點找到第3個頂點…重復執行直到找到第i個頂點,該過程的復雜度為 O ( n ) O(n) O(n),這樣的訪問過程不是隨機訪問。因此A是錯的,選A。
B. 如果實現的是動態鏈表,進行添加或插入結點時,從堆區動態申請內存空間。在進行刪除時,將申請的內存空間返還。這樣就不需要預估存儲空間。
C. 鏈表進行插入、刪除操作只需要改變結點之間的連接關系即可完成,復雜度為 O ( 1 ) O(1) O(1),不需要移動元素。而順序表進行插入、刪除操作需要移動元素。
D. 線性表的長度就是線性表中元素的數量。對于線性表中的每個元素,鏈表都要為其建立一個結點,每個結點占用內存空間大小相同。如果線性表中有n個元素,實際需要從內存申請n個結點的空間,所需空間與線性表長度是成正比的。

  1. 有10個頂點的無向圖至少應該有( )條邊才能確保是一個連通圖。
    A. 9
    B. 10
    C. 11
    D. 12

答: A
連通圖邊最少時是一個樹(無環連通無向圖),樹有n個頂點時有n-1條邊。10個頂點的樹有9條邊,選A。

  1. 二進制數1011轉換成十進制數是( )。
    A. 11
    B. 10
    C. 13
    D. 12

答: A
其它進制數字轉十進制的方法為按位權展開: 1 ? 2 3 + 0 ? 2 2 + 1 ? 2 1 + 1 ? 2 0 = 11 1*2^3+0*2^2+1*2^1+1*2^0=11 1?23+0?22+1?21+1?20=11

  1. 5個小朋友并排站成一列,其中有兩個小朋友是雙胞胎,如果要求這兩個雙胞胎必須相鄰,則有()種不同排列方法?
    A. 48
    B. 36
    C. 24
    D. 72

答: A
捆綁法,將兩個雙胞胎小朋友“捆綁”在一起,形成一個元素,剩下每個小朋友是一個元素,共4個元素,先進行全排列,方案數為 P ( 4 , 4 ) P(4,4) P(4,4),這兩個小朋友內部的排列有 P ( 2 , 2 ) P(2,2) P(2,2)種,根據乘法原理,最終有 P ( 4 , 4 ) ? P ( 2 , 2 ) = 4 ? 3 ? 2 ? 1 ? 2 ? 1 = 48 P(4,4)*P(2,2)=4*3*2*1*2*1=48 P(4,4)?P(2,2)=4?3?2?1?2?1=48種排列方法,選A。

  1. 下圖中所使用的數據結構是( )。
    在這里插入圖片描述
    A. 棧
    B. 隊列
    C. 二叉樹
    D. 哈希表

答: A
只在線性表的一端進行操作(包括插入、刪除,取數據)的數據結構是棧。

  1. 獨根樹的高度為1。具有61個結點的完全二叉樹的高度為( )。
    A. 7
    B. 8
    C. 5
    D. 6

答: D
有n個結點的完全二叉樹的高度為 ? log ? 2 n ? + 1 \lfloor \log_2n \rfloor+1 ?log2?n?+1(原理見完全二叉樹的相關性質證明)
由于 32 < 61 < 64 32<61<64 32<61<64
所以 2 5 < 61 < 2 6 2^5<61<2^6 25<61<26
不等式取以2為底的對數
log ? 2 2 5 < log ? 2 61 < log ? 2 2 6 \log_2{2^5}<\log_2{61}<\log_2{2^6} log2?25<log2?61<log2?26
5 < log ? 2 61 < 6 5<\log_2{61}<6 5<log2?61<6
? log ? 2 61 ? + 1 = 5 + 1 = 6 \lfloor \log_2{61} \rfloor+1 = 5+1=6 ?log2?61?+1=5+1=6,選D。

  1. 干支紀年法是中國傳統的紀年方法,由10個天干和12個地支組合成60個天干地支。由公歷年份可以根據以下公式和表格換算出對應的天干地支。
    在這里插入圖片描述

天干 =(公歷年份)除以10所得余數
地支 =(公歷年份)除以12所得余數
例如,今年是2020年,2020 除以10余數為0,查表為"庚”;
2020 除以12,余數為4,查表為“子” 所以今年是庚子年。
請問1949年的天干地支是( )
A. 己酉
B. 己亥
C. 己丑
D. 己卯

答: C
1949 m o d 10 = 9 1949\mod 10 = 9 1949mod10=9,查表為“己”
1949 m o d 12 = 5 1949\mod 12 = 5 1949mod12=5,查表為“丑”
所以1949年的天干地支是“己丑”,選C。

  1. 10個三好學生名額分配到7個班級,每個班級至少有一個名額,一共有( )種不同的分配方案。
    A. 84
    B. 72
    C. 56
    D. 504

答: A
10個三好學生名額是完全相同的,將其分配到7個班級。這是將相同小球放入不同盒子的模型,可以使用插板法完成。
一共10個相同的小球放入7個不同的盒子,相當于把10個相同的小球放成一行,在10個小球之間的9個空隙中插入6個相同的板子,方案數為 C ( 9 , 6 ) = C ( 9 , 3 ) = ( 9 ? 8 ? 7 ) / ( 3 ? 2 ? 1 ) = 84 C(9,6) = C(9,3) = (9*8*7)/(3*2*1)=84 C(9,6)=C(9,3)=(9?8?7)/(3?2?1)=84,選A。

  1. 有五副不同顏色的手套(共10只手套,每副手套左右手各1只),一次性從中取6只手套,請問恰好能配成兩副手套的不同取法有( )種。
    A. 120
    B. 180
    C. 150
    D. 30

答: A
方法1:6只手套中有兩副也就是4只手套完成了配對,還剩下2只手套無法完成配對。首先從5副手套中選擇2副完成配對的手套,有 C ( 5 , 2 ) C(5,2) C(5,2)種情況,接下來要在3副手套中找兩只無法配對的手套:可以是兩只手套都是左手,或右手,有 2 C ( 3 , 2 ) 2C(3,2) 2C(3,2)種情況,或者兩只手套一只是左手,一只是右手。左手手套有3種選擇,左手手套確定后右手選與左手手套不是一副的手套有2種選擇,因此有 3 ? 2 3*2 3?2種,因此總取法有 C ( 5 , 2 ) ? ( 2 C ( 3 , 2 ) + 3 ? 2 ) = ( 5 ? 4 ) / 2 ? ( 2 ? 3 + 3 ? 2 ) = 10 ? 12 = 120 C(5,2)*(2C(3,2)+3*2)=(5*4)/2*(2*3+3*2)=10*12=120 C(5,2)?(2C(3,2)+3?2)=(5?4)/2?(2?3+3?2)=10?12=120,選A。
方法2:使用補集轉化思路,首先在5副手套中選擇2副完成配對的手套,有 C ( 5 , 2 ) C(5,2) C(5,2)種情況,而后要在3副手套中選出2只手套無法完成配對,我們先考慮在3副手套共6只手套中選出2只手套的所有情況,共有 C ( 6 , 2 ) C(6,2) C(6,2)種情況,從中減去兩只手套能配對的3種情況,剩下的就是不能配對的情況。總取法數為 C ( 5 , 2 ) ? ( C ( 6 , 2 ) ? 3 ) = ( 5 ? 4 ) / 2 ? ( 6 ? 5 / 2 ? 3 ) = 10 ? 12 = 120 C(5,2)*(C(6,2)-3)=(5*4)/2*(6*5/2-3)=10*12=120 C(5,2)?(C(6,2)?3)=(5?4)/2?(6?5/2?3)=10?12=120

二、閱讀程序

閱讀程序(1)
閱讀程序(2)
閱讀程序(3)

三、完善程序

完善程序(1)
完善程序(2)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87399.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flutter包管理與插件開發完全指南

Flutter作為Google推出的跨平臺移動應用開發框架&#xff0c;其強大的生態系統離不開完善的包管理機制和豐富的插件支持。本文將全面介紹Flutter中的包管理體系和插件開發實踐&#xff0c;幫助開發者高效管理項目依賴并擴展應用功能。 一、Flutter包管理基礎 1.1 包管理概述 …

【視頻直播出海】阿里云ApsaraVideo Live:從零搭建全球直播平臺的“星際航行”指南!

【視頻直播出海】阿里云ApsaraVideo Live&#xff1a;從零搭建全球直播平臺的“星際航行”指南&#xff01; 在全球化浪潮的推動下&#xff0c;視頻直播行業正以前所未有的速度跨越國界&#xff0c;成為連接世界的“數字新橋梁”。對于渴望拓展海外市場的企業而言&#xff0c;…

OAuth2中的Token

兩個不同的Token OAuth2 中主要有兩個不同的Token, 其中的區別為是否與用戶相關聯, 即與用戶相關的用戶Token, 和與客戶端相關的客戶端Token, 可以通過用戶Token, 查詢到用戶的相關信息, 客戶端Token與用戶無關, 一般只用于客戶端認證 用戶Token 獲取用戶Token一般有兩個方式…

使用 FastMCP 實現 Word 文檔與 JSON 數據互轉的 Python 服務

一、項目背景 本文分享一個基于 FastMCP 框架實現的文檔處理服務&#xff0c;可實現 Word 文檔&#xff08;.docx&#xff09;與 JSON 數據格式的雙向轉換。通過此服務&#xff0c;開發者可以輕松實現文檔內容提取、結構化數據填充、樣式模板復用等功能&#xff0c;適用于自動…

Vue3輪播圖組件,當前輪播區域有當前圖和左右兩邊圖,兩邊圖各顯示一半,支持點擊跳轉和手動滑動切換

功能&#xff1a; 自動循環播放&#xff08;到達末尾后回到第一張&#xff09;、可設置切換間隔時間&#xff08;interval屬性&#xff09; 左右導航按鈕&#xff08;可自定義顯示/隱藏&#xff09; 點擊底部指示器跳轉到指定幻燈片、且位置可調&#xff08;輪播圖內部/外部&…

350+交付案例,高質量低成本構建智慧園區數字孿生交付新范式

在智慧園區建設領域&#xff0c;數字孿生技術正成為推動園區智能化轉型的核心引擎。山東融谷信息憑借其全要素、全周期、全方位的數字孿生交付能力&#xff0c;已成功交付350余個項目&#xff0c;覆蓋產業園區、智慧樓宇、智慧社區等多元場景&#xff0c;低成本高質量交付&…

OpenCV 圖像像素類型轉換與歸一化

一、知識點 1、OpenCV支持多種數據類型&#xff0c;每種類型都對應著不同的取值范圍。 (1)、CV_8U取值范圍[0, 255]。 (2)、CV_16U取值范圍[0, 65535]。 (3)、CV_32F取值范圍[0, 1]。 2、OpenCV提供convertTo()函數來轉換數據類型&#xff0c;提供normalize()函數來改…

機器學習算法_支持向量機

一、支持向量機 支持向量機只能做二分類任務 SVM全稱支持向量機&#xff0c;即尋找到一個超平面使樣本分成兩類&#xff0c;且間隔最大 硬間隔&#xff1a;如果樣本線性可分&#xff0c;在所有樣本分類都正確的情況下&#xff0c;尋找最大間隔&#xff1b;如果出現異常值或樣…

Linux : echo ~ tail 重定向符

&#x1f680; Linux 常用命令詳解&#xff1a;echo、tail 與重定向符號全解析&#xff08;含通俗案例&#xff09; &#x1f4c5; 更新時間&#xff1a;2025年6月17日 &#x1f3f7;? 標簽&#xff1a;Linux基礎 | Shell命令 | echo | tail | 輸出重定向 | Linux入門 文章目錄…

uniapp的更新流程【安卓、IOS、熱更新】

UniApp應用更新方案 兩種更新方式 APP全量升級&#xff1a;需要重新下載安裝包熱更新&#xff1a;通過下載wgt資源包實現&#xff0c;用戶只需重啟應用 Android更新實現 用戶需要授權安裝權限&#xff0c;流程為下載APK后自動彈出安裝界面 var dtask plus.downloader.cre…

火山引擎解碼生態型增長鐵律

“技術流量與力量的崛起&#xff0c;本質上是一場生態規模的競賽。每次浪潮的排頭兵&#xff0c;都是指尖沾著代碼的開發者——互聯網時代的Linux社區讓開源席卷全球&#xff0c;移動互聯網的App Store催生百萬開發者&#xff0c;而今天&#xff0c;大模型正在用API重構產業。”…

警惕GO的重復初始化

go的初始化方式有很多種&#xff0c;在某些情況下容易引起重復初始化導致錯誤。 事例如下&#xff1a; 當使用gorm連接數據庫時定義了全局DB var DB *gorm.DB 但是在后面某個函數內部初始化時導致DB重新初始化變成了局部變量&#xff0c;導致原來的全局變量DB還是nil func I…

python校園服務交流系統

目錄 技術棧介紹具體實現截圖系統設計研究方法&#xff1a;設計步驟設計流程核心代碼部分展示研究方法詳細視頻演示試驗方案論文大綱源碼獲取/詳細視頻演示 技術棧介紹 Django-SpringBoot-php-Node.js-flask 本課題的研究方法和研究步驟基本合理&#xff0c;難度適中&#xf…

AlexNet:圖像分類領域的里程碑網絡及其創新剖析

文章目錄 前言AlexNet一、網絡的背景二、網絡結構三、網絡的創新3.1 首次使用GPU訓練網絡3.2 使用Relu激活函數3.2.1 sigmoid激活函數和tanh激活函數3.2.1.1 sigmoid激活函數3.2.1.2 tanh激活函數 3.3 Relu激活函數3.4 使用LRN局部響應歸一化(已棄用)3.4.1 LRN的定義與起源3.4.…

iOS性能調優實踐:結合KeyMob等多個工具提升應用穩定性與流暢度

在iOS應用開發中&#xff0c;性能問題往往難以通過單一工具輕松解決。尤其是當App面臨用戶反饋的流暢度差、卡頓嚴重、內存泄漏等問題時&#xff0c;開發者需要依靠多種工具的組合&#xff0c;才能有效地排查和優化性能瓶頸。 在我們最近的一個項目中&#xff0c;開發團隊在處…

球形波方程的推導與解法

題目 問題 6. 一個球形波是三維波動方程的解,形式為 u ( r , t ) u(r,t) u(r,t),其中 r r r 是到原點的距離(球坐標)。波動方程的形式為: u t t = c 2 ( u r r + 2 r u r ) (球形波方程) . u_{tt} = c^{2} \left( u_{rr} + \frac{2}{r} u_{r} \right) \quad \text{(球形…

自動打電話軟件設計與實現

文章目錄 方案概述實現代碼1. 安裝必要的庫2. 主程序代碼3. HTML模板 (templates/index.html) 功能說明部署說明擴展功能建議注意事項 方案概述 使用Twilio的API進行電話呼叫實現基本的呼叫邏輯添加簡單的用戶界面 實現代碼 1. 安裝必要的庫 pip install twilio flask2. 主…

RedissonLock源代碼分析與鎖應用

文章目錄 前言一、RedissonLock源代碼分析1.1 嘗試加鎖2.2 解鎖 二、鎖業務應用1.服務層方法注解方式 注入鎖1.1 定義DistributedLock 注解類1.2 定義DistributedLockAspect 切片類1.3 嘗試獲取鎖代碼片斷1.4 釋放鎖代碼片斷1.5 服務層注入鎖注解 2.代碼行加鎖2.1 pom.xml文件引…

深入理解mysql索引

一、什么是索引&#xff1f; 索引&#xff08;Index&#xff09; 是數據庫管理系統中一種特殊的數據結構&#xff0c;存儲在磁盤上。它包含對數據表中一列或多列的值進行排序&#xff0c;并存儲了指向表中實際數據行物理位置或主鍵值的引用指針。可以把它類比為書籍的目錄&…

VMware vSphere Foundation 9.0 技術手冊 —— Ⅰ 安裝 ESXi 9.0 (虛擬機)

目錄 1. 安裝 ESXi 9.0 (虛擬機)&#xff08;1&#xff09;ESXi Standard Boot Menu&#xff08;2&#xff09;ESXi 安裝導向&#xff08;3&#xff09;最終用戶許可協議&#xff08;4&#xff09;選擇系統盤&#xff08;5&#xff09;選擇鍵盤類型&#xff08;6&#xff09;設…