備賽藍橋杯之第十六屆模擬賽第1期職業院校組第四題:世紀危機(人口增長推算)

提示:本篇文章僅僅是作者自己目前在備賽藍橋杯中,自己學習與刷題的學習筆記,寫的不好,歡迎大家批評與建議


由于個別題目代碼量與題目量偏大,請大家自己去藍橋杯官網【連接高校和企業 - 藍橋云課】去尋找原題,在這里只提供部分原題代碼

本題目為:備賽藍橋杯之第十六屆模擬賽第1期職業院校組第四題:世紀危機(人口增長推算)


題目:

經過運行環境運行之后的效果如下:

本題需要做的代碼如下:

/**人口數據增長推算函數* @param {number} initialPopulation 基礎人口數,假設有 10 億* @param {number} growthRate 年增長率,假設為 3%* @param {number} startYear 起始年份,假設為 200000*/
function calculatePopulation(initialPopulation, growthRate, startYear){const years = [];const population = [];// TODO:待補充代碼 目標 1 return {years,population};
}// 配置 ECharts 選項
const option = {title: {text: '未來30年人口增長趨勢圖',subtext: '假設年增長率為3%',left: 'center'},tooltip: {trigger: 'axis',// TODO:待補充代碼 目標 3 },xAxis: {type: 'category',// TODO:待修改代碼 目標 2 // 年份data: ['2024','2025','2026','2027','2028','2029','2030','2031','2032'],name: '年份',boundaryGap: false},yAxis: {type: 'value',name: '人口數',axisLabel: {// TODO:待補充代碼 目標 4}},series: [{name: '人口',type: 'line',// TODO:待修改代碼 目標 2 // 人口數量data: [1000000000,1030000000,1040000000,1050000000,1070000000,1090000000,1094000000,1098000000,1130000000],smooth: true,lineStyle: {color: '#3398DB'},itemStyle: {color: '#3398DB'}}]
};

?本題目標如下:

請在?js/index.js?文件中的 TODO 部分補充代碼實現需求,具體需求如下:

  1. 完善?calculatePopulation?函數,實現從?200000?年開始的?30?年人口增長數據推算,并返回年份數組(years),如:[20000,200001,...]和人口數據(population)數組,如?[1030,1061,...]。該函數有三個參數,分別表示如下:
參數名描述數據類型
initialPopulation基礎人口數,假設有 10 億(即,1000000000number
growthRate年增長率,假設為 3%(即,0.03number
startYear起始年份,假設為?200000number
  1. 把?calculatePopulation?函數生成的年份數據和人口數據分別正確賦值給?echarts?中的 x 軸數據和 y 軸數據。
  2. 自定義?tooltip,每個?tooltip?顯示當前年份和人口總數,人口總數需要通過四舍五入處理成萬為單位(M)。自定義?tooltip?返回的 DOM 結構如下:
<p>2024<br/>人口:1000M</p>

  1. 自定義 Y 軸屬性?yAxis.axisLabel,該屬性顯示人口總數區間,人口總數需要通過四舍五入處理成萬為單位(M)。

實現上述功能所需的 ECharts API 如下:

tooltip?API:

參數說明
formatter提示框浮層內容格式器,支持回調函數的形式。回調函數格式:(params) => {},支持返回 HTML 字符串或者創建的 DOM 實例,第一個參數?params?是?formatter?需要的數據集。

yAxis.axisLabel?API:

參數說明
formatter用于格式化 Y 軸標簽,支持回調函數的形式。回調函數格式:(value, index) => {},?value?是?formatter?需要的數據。

說人話:

? ? ? ? 目標一,對數據進行計算

? ? ? ? 目標二,對數據進行渲染

? ? ? ? 目標三、四,讓數據以"????M"的形式展現


本題作者想說

答案:

/**人口數據增長推算函數* @param {number} initialPopulation 基礎人口數,假設有 10 億* @param {number} growthRate 年增長率,假設為 3%* @param {number} startYear 起始年份,假設為 200000*/
function calculatePopulation(initialPopulation, growthRate, startYear) {const years = [];const population = [];// TODO:待補充代碼 目標 1 years.push(startYear)population.push(initialPopulation)for (let index = 1; index <= 30; index++) {startYear = 200000 + indexyears.push(startYear)let pepTotNum = population[index - 1] + (population[index - 1] * growthRate)population.push(pepTotNum)}// for (let i = 0; i <= 30; i++) {//     years.push(i + startYear)//     population.push(initialPopulation * Math.pow((1 + growthRate), i))// }return {years,population};
}// 配置 ECharts 選項
const option = {title: {text: '未來30年人口增長趨勢圖',subtext: '假設年增長率為3%',left: 'center'},tooltip: {trigger: 'axis',// TODO:待補充代碼 目標 3 formatter: (params) => {// console.log(params)return `<p>${params[0].name}<br/>人口:${Math.round(params[0].value / 1000000)}M</p>`}},xAxis: {type: 'category',// TODO:待修改代碼 目標 2 // 年份data: pData.years,name: '年份',boundaryGap: false},yAxis: {type: 'value',name: '人口數',axisLabel: {// TODO:待補充代碼 目標 4formatter: (value, index) => {return `${Math.round(value / 1000000)}M`}}},series: [{name: '人口',type: 'line',// TODO:待修改代碼 目標 2 // 人口數量data: pData.population,smooth: true,lineStyle: {color: '#3398DB'},itemStyle: {color: '#3398DB'}}]
};

作者自我解釋版:

/**人口數據增長推算函數* @param {number} initialPopulation 基礎人口數,假設有 10 億* @param {number} growthRate 年增長率,假設為 3%* @param {number} startYear 起始年份,假設為 200000*/
function calculatePopulation(initialPopulation, growthRate, startYear) {const years = [];const population = [];// TODO:待補充代碼 目標 1 // 判題中可能會涉及到沒有使用Math.pow而被判錯,但是不必擔心,考試時候不會有這種情況// 在此給出兩種做題方法// 第一種自己做的,能實現,容易理解,卻不能過// 第二種題解給出的,能實現,但不容易理解,卻能過// 自己做的,使用一個比較容易理解的方法解決出來的// 將初始年份push到數組里,形成第一個年份years.push(startYear)// 將初始人口基數push到數組里,形成第一個人口,以后會按照這個基數來計算population.push(initialPopulation)// 因為要進行每年的計算,所以我們這里使用for循環,并且設置少于30for (let index = 1; index <= 30; index++) {// 每增加一年startYear = 200000 + index// 就push過去一年years.push(startYear)// 每增加一年,就以上一年的人口為基數計算本人人數let pepTotNum = population[index - 1] + (population[index - 1] * growthRate)// 將本年人口push過來population.push(pepTotNum)}// 題解中給出的,因為使用了Math.pow,所以判題給過// for (let i = 0; i <= 30; i++) {//     years.push(i + startYear)//     population.push(initialPopulation * Math.pow((1 + growthRate), i))// }return {years,population};
}// 配置 ECharts 選項
const option = {title: {text: '未來30年人口增長趨勢圖',subtext: '假設年增長率為3%',left: 'center'},tooltip: {trigger: 'axis',// TODO:待補充代碼 目標 3 // 題目中給出tooltip的API:formatter,注意要以支持回調函數的形式formatter: (params) => {// 直接對數據進行html方面的更改,簡單省事return `<p>${params[0].name}<br/>人口:${Math.round(params[0].value / 1000000)}M</p>`}},xAxis: {type: 'category',// TODO:待修改代碼 目標 2 // 年份// 因為題目中定義了pData來獲取我們計算的目標,所以直接使用即可// 將其中的years賦值給x軸data: pData.years,name: '年份',boundaryGap: false},yAxis: {type: 'value',name: '人口數',axisLabel: {// TODO:待補充代碼 目標 4// 類似給出了yAxis.axisLabel的APIformatter: (value, index) => {// 類似直接對數據進行html方面的更改return `${Math.round(value / 1000000)}M`}}},series: [{name: '人口',type: 'line',// TODO:待修改代碼 目標 2 // 人口數量// 將其中的population賦值給y軸data: pData.population,smooth: true,lineStyle: {color: '#3398DB'},itemStyle: {color: '#3398DB'}}]
};

感謝觀看此篇文章,謝謝大家的支持,本片文章只是我自己學習的歷程,有些寫的不好地方歡迎大家交流改動。

長路漫漫,我們還需努力!

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

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

相關文章

從零構建大語言模型全棧開發指南:第三部分:訓練與優化技術-3.2.3預訓練任務設計:掩碼語言建模(MLM)與下一句預測(NSP)

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 3.2.3 預訓練任務設計:`掩碼語言建模(MLM)`與下一句預測(NSP)1. 掩碼語言建模(`Masked Language Modeling, MLM`)1.1 MLM的核心原理與數學形式1.2 高級掩碼優化技術1.2.1 `Span Masking(SpanBER…

OpenBMC:BmcWeb 生效路由2 Trie字典樹

OpenBMC:BmcWeb 生效路由1 基于method分類路由_openbmc web-CSDN博客 可以看到,在internalAdd中: std::vector<BaseRule*> rules; rules.emplace_back(ruleObject); trie.add(rule, static_cast<unsigned>(rules.size() - 1U)); ruleObject首先被放入了每個meth…

Appium中元素定位之一組元素定位API

應用場景 和定位一個元素相同&#xff0c;但如果想要批量的獲取某個相同特征的元素&#xff0c;使用定位一組元素的方式更加方便 在 Appium 中定位一組元素的 API 與定位單個元素的 API 類似&#xff0c;但它們返回的是一個元素列表&#xff08;List<MobileElement>&am…

第五周日志-重新學匯編(2)

機器語言 匯編語言(直接在硬件上工作——硬件系統結構&#xff09;&#xff1a; 1.機器語言 每一種微處理器硬件設計和內部結構不同&#xff08;決定了電信號不同&#xff0c;進而需要不同的機器指令&#xff09; #早期通過紙帶機/卡片機輸入計算機&#xff0c;進行運算 2…

【9】Strongswan collections —— enumerator

//以目錄枚舉為例子&#xff0c;說明enumerator&#xff0c;從源碼剝離可運行 #include <stdio.h> #include <stdbool.h> #include <dirent.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h&…

談談對spring IOC的理解,原理和實現

一、IoC 核心概念 1. 控制反轉&#xff08;Inversion of Control&#xff09; 傳統編程中對象自行管理依賴&#xff08;主動創建&#xff09;&#xff0c;而IoC將控制權轉移給容器&#xff0c;由容器負責對象的創建、裝配和管理&#xff0c;實現依賴關系的反向控制。 2. 依賴…

【Hugging Face 開源庫】Diffusers 庫 —— 擴散模型

Diffusers 的三個主要組件1. DiffusionPipeline&#xff1a;端到端推理工具__call__ 函數callback_on_step_end 管道回調函數 2. 預訓練模型架構和模塊UNetVAE&#xff08;Variational AutoEncoder&#xff09;圖像尺寸與 UNet 和 VAE 的關系EMA&#xff08;Exponential Moving…

甘肅旅游服務平臺+論文源碼視頻演示

4 系統設計 4.1系統概要設計 甘肅旅游服務平臺并沒有使用C/S結構&#xff0c;而是基于網絡瀏覽器的方式去訪問服務器&#xff0c;進而獲取需要的數據信息&#xff0c;這種依靠瀏覽器進行數據訪問的模式就是現在用得比較廣泛的適用于廣域網并且沒有網速限制要求的小程序結構&am…

路由選型終極對決:直連/靜態/動態三大類型+華為華三思科配置差異,一張表徹底講透!

路由選型終極對決&#xff1a;直連/靜態/動態三大類型華為華三思科配置差異&#xff0c;一張表徹底講透&#xff01; 一、路由&#xff1a;互聯網世界的導航系統二、路由類型深度解析三者的本質區別 三、 解密路由表——網絡設備的GPS華為&#xff08;Huawei&#xff09;華三&a…

【RAG綜述系列】之 RAG 相關背景和基本原理

系列文章&#xff1a; 【RAG綜述系列】之 RAG 相關背景和基本原理 【RAG綜述系列】之 RAG 特點與挑戰以及方法與評估 【RAG綜述系列】之 RAG 先進方法與綜合評估 【RAG綜述系列】之 RAG 應用和未來方向 正文&#xff1a; 檢索增強生成&#xff08;Retrieval-Augmented Gen…

CMake 構建的Qt 項目中的構建套件的配置

在Qt 框架中&#xff0c;使用CMake 構建工具時&#xff0c;需要自己給構建套件添加相關配置&#xff0c;否則已經添加的構建套件將不可選擇使用。 創建CMake 項目后&#xff0c;如果打開項目配置時&#xff0c;出現如下構建套件不可選的情況&#xff0c; 需要先確認是否安裝…

本地化智能運維助手:基于 LangChain 數據增強 和 DeepSeek-R1 的K8s運維文檔檢索與問答系統 Demo

寫在前面 博文內容為基于 LangChain 數據增強 和 Ollams 本地部署 DeepSeek-R1實現 K8s運維文檔檢索與問答系統 Demo通過 Demo 對 LEDVR 工作流&#xff0c; 語義檢索有基本認知理解不足小伙伴幫忙指正 &#x1f603;,生活加油 我看遠山&#xff0c;遠山悲憫 持續分享技術干貨…

Kotlin when 表達式完全指南:從基礎到高級的12種實戰用法

掌握 when 的靈活運用&#xff0c;告別繁瑣的 if-else 鏈 以下是 Kotlin 中 when 表達式的 12種核心用法 的全面總結&#xff0c;涵蓋基礎到高級場景&#xff0c;并附帶實用示例&#xff1a; 一、基礎用法 1. 替代 Java 的 switch-case when (x) {1 -> println("一&qu…

新加坡 PSB 認證:安全標準、證書特點及申請注意事項

目錄 什么是PSB認證&#xff1f; 涉及產品范圍 強制性認證產品類別 自愿性認證產品 認證項目與測試標準 1. 安全測試 2. 電磁兼容性&#xff08;EMC&#xff09;測試 3. 能效測試&#xff08;特定產品&#xff09; 認證流程詳解 第一步&#xff1a;準備階段 第二步&a…

UE4學習筆記 FPS游戲制作26 UE中的UI

文章目錄 幾個概念創建一個UI藍圖添加UI獲取UI的引用 切換設計器和UI藍圖將UI添加到游戲場景錨點軸點slotSizeToContent三種UI數據更新方式函數綁定屬性綁定事件綁定 九宮格分割圖片 幾個概念 UMG&#xff1a;UE的UI編輯器 slate UI: UE的UI的編輯語言 創建一個UI藍圖 右鍵用…

HttpRunner v4.x 遠程調用實踐指南

一、基于 SSH 的遠程執行方案 1. 環境準備流程 在目標服務器部署 HttpRunner 運行時環境&#xff1a; # 遠程服務器執行&#xff08;需 Golang 1.18 和 Python 3.8&#xff09; curl -ksSL https://httprunner.com/script/install.sh | bash配置免密登錄&#xff08;本地機器…

頭條項目的文章延遲發布功能

最近做的頭條項目其中有個功能是創作者發表的文章可以設置在未來某個時間發表&#xff0c;在實現這個功能的時候就在想該怎么實現呢&#xff1f;剛開始想的是利用Spring的定時任務定時的去數據庫中查詢&#xff0c;可以這個查詢頻率該怎么設置&#xff0c;每次從數據庫中需要查…

Celery 全面指南:Python 分布式任務隊列詳解

Celery 全面指南&#xff1a;Python 分布式任務隊列詳解 Celery 是一個強大的分布式任務隊列/異步任務隊列系統&#xff0c;基于分布式消息傳遞&#xff0c;專注于實時處理&#xff0c;同時也支持任務調度。本文將全面介紹 Celery 的核心功能、應用場景&#xff0c;并通過豐富…

OpenHarmony NativeC++應用開發speexdsp噪聲消除案例

隨著5.0的版本的迭代升級&#xff0c;筆者感受到了開源鴻蒙前所未有大的版本更替速度。5.0出現了越來越多的C API可以調用&#xff0c;極大的方便了native c應用的開發。筆者先將speexdsp噪聲消除的案例分享&#xff0c;老規矩&#xff0c;還是開源&#xff01;&#xff01;&am…

nuxt3 seo優化

在 Nuxt3 中&#xff0c;通過 nuxtjs/seo、nuxtjs/sitemap 和 nuxtjs/robots 模塊可以生成包含動態鏈接的站點地圖&#xff08;sitemap.xml&#xff09;&#xff0c;但具體是“實時生成”還是“部署時生成”&#xff0c;取決于你的配置方式和數據更新頻率。以下是具體分析&…