2026信息素养初赛-数字守艺人-初中组C++(选择2)_第1页
2026信息素养初赛-数字守艺人-初中组C++(选择2)_第2页
2026信息素养初赛-数字守艺人-初中组C++(选择2)_第3页
2026信息素养初赛-数字守艺人-初中组C++(选择2)_第4页
2026信息素养初赛-数字守艺人-初中组C++(选择2)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单选题(共20题)

第1题

在"数字守艺人"场景中,使用C++模拟剪纸纹样批量生产时,需要存储100种不同剪纸的尺寸数据,最

适合的容器是?

A.std::set

B.std::vector

C.std::map

D.std::unordered_set

答案:B

解析:std::vector是顺序容器,适合存储同类型的批量数据支持随机访问方便按序号快速获取对应

剪纸的尺寸数据,符合批量生产场景下有序存储需求。std::set和std::unordered_set是集合容

器,用于存储不重复的元素,不适合需要按顺序访问批量数据;std::map是键值对容器,适用于需要

通过唯一键查找数据的场景,本题无值映射需求因此选B。

第2题

非遗文化中的二十四节气属于"数字守艺人"场景的核心元素,使用C++计算某一年立春到清明之间的天

数差,需要用到的标准库头文件是?

A.

B.

C.

D.

答案:B

解析:是C++标准库中用于处理时间的头文件,提供了时间点、长等相关类和函数可以方便地计算

两个日期之间的天数差。用于输入出,用于字符串处理,用于算法操作,均不直接支持日期计因

此选B。

第3题

在C++程序中模拟皮影戏角色的动作列,每个动作用一整数编号表示(如1=抬手、2=迈步),现在

需要统计出现次数最多的动作编号,适合方法是?

A.使用std::vector存储动作,遍历统计每个编号的次数

B.使用std::map<int,int>存储动作编号和对应次数,遍历动作序列更新计

C.使用std::list存储动作,逐个比较统计次数

D.使用std::array存储动作,排序后统计连续相同元素的数量

答案:B

解析:std::map<int,int>可以直接将动作编号作为键,出现次数值遍历动作序列时每遇到一个

动作编号就对应更新键的值,遍历完成后即可快速找到最大逻辑简洁且效率较高。A、C方法需

要多次遍历统计,效率较低;D方法需要排序,会改变原动作列的顺,且统计最大值步骤较繁

琐,因此选B。

第4题

"数字守艺人"场景中,使用C++实现剪纸纹样的对称复制功能,已知原纹坐标存储在

std::vector<std::pair<int,int>>中,要生成关于y轴对称的新坐标,正确的代码是?

A.

for(auto&p:points){

new_points.push_back({p.first,-p.second});

}

B.

for(auto&p:points){

new_points.push_back({-p.first,p.second});

}

C.

for(auto&p:points){

new_points.push_back({p.first*2,p.second});

}

D.

for(auto&p:points){

new_points.push_back({p.first,p.second*2});

}

答案:B

解析:在平面直角坐标系中,关于y轴对称的点坐标变换规则是横取反,纵保持不。选项B

的代码符合这一规则,A是关于x轴对称的变换,C、D是沿x轴或y轴方向的缩放,均不符合对称复制的

需求,因此选B。

第5题

使用C++模拟非遗陶瓷烧制的温度监控,需要每隔1秒读取一次温度数据并记录,实现定时功能最适合

使用的是?

A.std::thread的sleep_for函数

B.std::cout的刷新功能

C.std::sort排序函数

D.std::fstream的写入功能

答案:A

解析:std::this_thread::sleep_for(std::chrono::seconds(1))可以让程序暂停1秒,满足每隔1秒读取数据

的定时需求。std::cout的刷新功能用于输出控制,std::sort用于排序,std::fstream用于文件读写,均无

法实现定时功能,因此选A。

第6题

在"数字守艺人"场景中,使用C++对一批剪纸作品的制时长进行排序,已知存储在std::vector

中,要实现从小到大排序正确的代码是?

A.std::sort(durations.begin(),durations.end());

B.std::sort(durations.begin(),durations.end(),std::greater());

C.std::sort(durations.rbegin(),durations.rend());

D.std::sort(durations.begin(),durations.end(),std::less_equal());

答案:A

解析:std::sort默认使用升序(从小到大)排,只需要传入容器的起始和结束迭代即可。选项B是降

序排,选项C是通过反向迭代器实现降序,选项D使用std::less_equal是允许相等元素的升序,但默认

的std::sort已经支持相等元素的排序,因此最简洁正确的是A。

第7题

非遗文化中的"蜡染"工艺需要记录不同布料的染色时长、温度等参数,使用C++存储这些关联数据,最

适合的自定义数据类型是?

A.普通数组

B.结构体(struct)

C.枚举(enum)

D.全局变量

答案:B

解析:结构体可以将不同类型的关联数据(如int类型的时长、double类型的温度、string类型的布料名

称)封装成一个整体,方便统存储和管理。普通数组只能同类型数据枚举有限的离散

值,全局变量会导致数据管理混乱因此选B。

第8题

使用C++模拟皮影戏的角色切换功能,要求输入角色编号(1-5)后,输出对应角色的名称最适合

分支结构是?

A.if-elseif-else

B.单个if语句

C.switch-case

D.嵌套if语句

答案:C

解析:switch-case结构适用于处理多分支的固定值匹配场景,本题中角色编号是1-5的固定整数,使用

switch-case代码结构更清晰,可读性更强。if-elseif-else也能实现,但对于固定离散值的匹配switch-

case的逻辑更贴合,因此选C。

第9题

在"数字守艺人"场景中,使用C++计算一批刺绣作品的平均制工时,已知数据存储在std::vector

中,以下代码片段正确的是?

A.

intsum=0;

for(intt:times){

sum+=t;

}

doubleavg=sum/times.size();

B.

intsum=0;

for(intt:times){

sum+=t;

}

doubleavg=static_cast<double>(sum)/times.size();

C.

doublesum=0;

for(intt:times){

sum+=t;

}

doubleavg=sum/times.size();

D.

intsum=0;

for(inti=0;i<times.size();i++){

sum+=times[i];

}

doubleavg=sum/i;

答案:B

解析:C++中整数除以结果为,会丢失小数部分,因此需要将其中一个操作转换为浮点。

选项B将sum强制转换为double类型后再除以容器大小,能得到正确的平均值。选项A会得到整数除法的

结果,选项C虽然sum是double类型,但代码逻辑正确但不如B的写法直接体现类型转换意图;选

项D中循环结束后i等于times.size(),但使用i作为除数不符合代码规范,且逻辑上存在风险,因此选B。

第10题

使用C++实现非遗"竹编"工艺的材料用量计算,已知每个竹篮需要3根竹条,现在要计算n个竹篮的总用

量,当输入n为负数时需要提示错误,以下代码中能正确处理该情况的是?

A.

intn;

cin>>n;

if(n>0){

cout<<"总用量:"<<n*3<<"根";

}else{

cout<<"输入错误,数量不能为负数";

}

B.

intn;

cin>>n;

if(n>=0){

cout<<"总用量:"<<n*3<<"根";

}else{

cout<<"输入错误,数量不能为负数";

}

C.

intn;

cin>>n;

cout<<"总用量:"<<n*3<<"根";

D.

intn;

cin>>n;

if(n<0){

cout<<"输入错误,数量不能为负数";

}

cout<<"总用量:"<<n*3<<"根";

答案:A

解析:竹篮的数量n应为正整数,当n>0时计算总用量,n≤0时提示错误。选项A的逻辑符合需求;选项B

允许n=0,而制作0个竹篮无实际意义,不符合场景需求;选项C未处理负数输入,会出的总用

量,不符合逻辑;选项D在输入负数时,提示错误后仍会输出的总用量因此选A。

第11题

在C++中使用std::fstream将非遗剪纸的纹样数据保存到文件,以下打开方式正确的是?

A.std::fstreamfle("paper_cut.txt",std::ios::in);

B.std::fstreamfle("paper_cut.txt",std::ios::out);

C.std::fstreamfle("paper_cut.txt",std::ios::app|std::ios::in);

D.std::fstreamfle("paper_cut.txt",std::ios::binary);

答案:B

解析:std::ios::out是以写入模式打开文件,用于将数据保存到件中。选项A是读取模式,选项C是追

加+读取模式,选项D是二进制模式,本题保存文类的纹样数据使用普通写入模式即可,因此选

B。

第12题

在"数字守艺人"场景中,使用C++筛选出制作时长超过平均的剪纸品,已知存储在

std::vector中,平均时长为avg,以下代码正确的是?

A.

std::vector<int>above_avg;

for(intt:times){

if(t>avg){

above_avg.push_back(t);

}

}

B.

std::vector<int>above_avg;

for(intt:times){

if(t<avg){

above_avg.push_back(t);

}

}

C.

std::vector<int>above_avg;

for(intt:times){

if(t==avg){

above_avg.push_back(t);

}

}

D.

std::vector<int>above_avg;

for(intt:times){

if(t>=avg){

above_avg.push_back(t);

}

}

答案:A

解析:题目要求筛选超过平均时长的作品,即t大于avg的元素,选项A的条件符合需求。选项B是筛

选低于平均时长的,项C是筛选等于平均时长的,选项D是筛选大于等平均时长的,不符合题目

要求,因此选A。

第13题

使用C++模拟非遗"古琴"的音阶播放,每个音阶对应一频率值,现在需要将名称和关联存

储,最适合的容器是?

A.std::vector

B.std::map<std::string,int>

C.std::set

D.std::array

答案:B

解析:std::map<std::string,int>可以将字符串类型的音阶名称作为键,整数频率值实现

两者的关联存储,方便通过音阶名称快速查找对应频率。std::vector和std::array是顺序容器,无法直

接实现键值关联,std::set只能存储唯一元素,不适合键值对存,因此选B。

第14题

在C++中,使用std::algorithm库中的函数对非遗作品的制时长进行降序排,正确的代码是?

A.std::sort(durations.begin(),durations.end());

B.std::sort(durations.begin(),durations.end(),std::less());

C.std::sort(durations.begin(),durations.end(),std::greater());

D.std::sort(durations.rbegin(),durations.rend());

答案:C

解析:std::sort的第三个参数可以指定排序规则,std::greater()表示按降序排。选项A和B是升序排

序,选项D是通过反向迭代器实现降序,但不如直接指定排序规则观因此选C。

第15题

在"数字守艺人"场景中,使用C++模拟二十四节气的顺序展示,需要将名称按存储并循环输

出,最适合的容器是?

A.std::vectorstd::string

B.std::unordered_setstd::string

C.std::map<int,std::string>

D.std::stackstd::string

答案:A

解析:std::vector是顺序容器,适合按固定存储元素支持按索引访问和循环遍历,符合节气顺序

展示的需求。std::unordered_set是无序集合,法保证顺;std::map是键值对容器,此处不需要

映射;std::stack是栈容器,只能后进先出访问,不符合顺序循环输出的需求,因此选A。

第16题

使用C++计算非遗"陶艺"作品的残次率,已知总制作数量为total,残次数量为defect,以下代码正确的

是?

A.doublerate=defect/total;

B.doublerate=static_cast(defect)/total;

C.doublerate=defect/static_cast(total);

D.doublerate=static_cast(defect/total);

答案:B

解析:C++中整数除法会舍去小数部分,需要将其中一个操作数转换为浮点才能得到正确的结

果。选项B将defect转换为double类型后再除以total,能正确计算残次率。选项C也能得到正确结果,但

通常将分子转换为浮点数更符合计算逻辑;选项A是整数除法,结果错误;选项D是先进行整数除法再转

换,结果同样错误因此选B。

第17题

在C++程序中,为了避免"数字守艺人"场景中的重复代码,将计算平均时长逻辑封装成函数以下

数定义正确的是?

A.

doublecalculateAvg(std::vector<int>times){

intsum=0;

for(intt:times){

sum+=t;

}

returnstatic_cast<double>(sum)/times.size();

}

B.

intcalculateAvg(std::vector<int>times){

intsum=0;

for(intt:times){

sum+=t;

}

returnsum/times.size();

}

C.

voidcalculateAvg(std::vector<int>times){

intsum=0;

for(intt:times){

sum+=t;

}

doubleavg=static_cast<double>(sum)/times.size();

}

D.

doublecalculateA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论