备赛蓝桥杯之第十六届模拟赛第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.mzph.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;取决于你的配置方式和数据更新频率。以下是具体分析&…