2026信息素养初赛-数字守艺人-小学4~6年级组C++模拟题3_第1页
2026信息素养初赛-数字守艺人-小学4~6年级组C++模拟题3_第2页
2026信息素养初赛-数字守艺人-小学4~6年级组C++模拟题3_第3页
2026信息素养初赛-数字守艺人-小学4~6年级组C++模拟题3_第4页
2026信息素养初赛-数字守艺人-小学4~6年级组C++模拟题3_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

一、单选题

第1题

数字守艺人场景中,非遗传承人要统计100张剪纸作品的纹样类型,其中对称纹样有a张,连续重复纹样

有b张,既有对称又有重复的纹样有c张。用C++编写程序计算仅属于对称纹样的数量,正确的表达式

是?

A.a+b-c

B.a-c

C.b-c

D.a+b-2*c

答案:B

解析:仅属于对称纹样的数量是所有对称纹样数量减去同时属于两种纹样的重叠部分,即a-c。选项A

是总不同纹样数量,选项C是仅重复纹样数量,选项D是两种纹样的非重叠部分总和,均不符合题意。

第2题

在模拟皮影戏角色动作的C++程序中,要让角色完成"抬手-迈步-放下手"的循环动作,每次循环间隔1

秒。以下代码片段中,能实现无限循环该动作的是(假

raise_hand()

step()

lower_hand()

sleep(1)

均已实现)?

A.

while(true){

raise_hand();

step();

lower_hand();

sleep(1);

}

B.

for(inti=0;i<1;i++){

raise_hand();

step();

lower_hand();

sleep(1);

}

C.

do{

raise_hand();

step();

lower_hand();

sleep(1);

}while(false);

D.

if(true){

raise_hand();

step();

lower_hand();

sleep(1);

}

答案:A

解析:选项A中

while(true)

是无限循环条件,会持续执行体内的动作;选项B的for循环仅执行1

次;选项C的do-while循环条件为false,仅执行1次;选项D的if语句仅执行1次,均无法实现限循环。

第3题

数字守艺人场景中,用C++存储12种二十四节气的名称,最合适STL容器是?

A.std::map

B.std::vector

C.std::set

D.std::queue

答案:B

解析:二十四节气是有序的固定列表,std::vector是动态数组,适合存储有序且需要按顺序访问的元

素;std::map用于键值对映射,std::set用于无重复的序集合,std::queue用于队列操作,均不符合有

序列表的存储需求。

第4题

非遗传承人要筛选出制作时间小于30分钟的剪纸作品,现有存储制时间数组

inttime[50]

以下C++代码片段中,能正确统计符合条件作品数量的是?

A.

intcount=0;

for(inti=0;i<50;i++){

if(time[i]<30)count++;

}

B.

intcount=0;

for(inti=1;i<=50;i++){

if(time[i]<30)count++;

}

C.

intcount=0;

while(inti=0;i<50;i++){

if(time[i]<30)count++;

}

D.

intcount=0;

for(inti=0;i<50;){

if(time[i]<30)count++;

}

答案:A

解析:C++数组下标从0开始,选项A的循环范围正确(0到49),逻辑正确;选项B的循环范围是1到

50,会越界访问数组;选项C的while循环语法错误,不能在while条件中定义变量;选项D的for循环缺少

自增语句,会陷入死循环。

第5题

在C++程序中模拟陶艺拉坯的转速调节,转速范围是50-200转/分钟,用户输入的转速如果超出范围则

自动调整到最近的边界值。以下代码片段中正确的是?

A.

intspeed;

cin>>speed;

if(speed<50)speed=50;

if(speed>200)speed=200;

B.

intspeed;

cin>>speed;

if(speed<50||speed>200)speed=125;

C.

intspeed;

cin>>speed;

if(speed<50)speed=200;

if(speed>200)speed=50;

D.

intspeed;

cin>>speed;

while(speed<50)speed++;

while(speed>200)speed--;

答案:A

解析:选项A逻辑正确,低于50设为50,高于200设为200;选项B将超出范围的转速直接设为中间值

125,不符合题目要求;选项C的边界设置完全颠倒;选项D会通过循环逐步调整转速,虽然结果正确但

效率低下,且不符合题目“自动调整到最近边界”的直接要求。

第6题

数字守艺人场景中,用C++定义一个

PaperCut

类表示剪纸作品,以下定义中能正确包含品名

称、制作时间两个私有成员和一个获取的公方法是?

A.

classPaperCut{

private:

stringname;

inttime;

public:

intgetTime(){returntime;}

};

B.

classPaperCut{

public:

stringname;

inttime;

private:

intgetTime(){returntime;}

};

C.

classPaperCut{

private:

stringname;

inttime;

private:

intgetTime(){returntime;}

};

D.

classPaperCut{

public:

stringname;

inttime;

public:

intgetTime(){returntime;}

};

答案:A

解析:题目要求成员变量私有,获取方法公。选项A符合要求;选项B将成员变量设为公有,获取方法

设为私有,不符合封装要求;选项C将获取方法设为私有,外部无访问;选项D将成员变量设为公

有,不符合封装要求。

第7题

在C++程序中统计100个皮影角色的制作材料使用量,其中使牛皮的角色数变

cowhide

存储,

使用驴皮的角色数量变

donkeyhide

存储。以下代码中,能正确计算两种材料使用占比(保留2位小

数)的是?

A.

doublecowRate=(double)cowhide/100*100;

printf("牛皮占比:%.2f%%\n",cowRate);

B.

doublecowRate=cowhide/100*100;

printf("牛皮占比:%.2f%%\n",cowRate);

C.

doublecowRate=(double)(cowhide/100)*100;

printf("牛皮占比:%.2f%%\n",cowRate);

D.

doublecowRate=(double)cowhide/(100*100);

printf("牛皮占比:%.2f%%\n",cowRate);

答案:A

解析:整数除法会舍去小数部分,需要先将

cowhide

转为浮点数再计算。选项A先将

cowhide

转为

double类型,再进行除法运算结果正确;选项B直接进行整数除法,若

cowhide

小于100,结果会为

0;选项C先进行整数除法再转浮点数,同样会丢失小数部分;选项D的分母错误,计算结果为占比

1/100。

第8题

数字守艺人场景中,用C++实现一个函数,判断一个剪纸纹样是否为中心对称图形函数接收bool

类型的二维数组

pattern[5][5]

表示纹样。以下函数声明正确的是?

A.

boolisCentralSymmetric(boolpattern[5][5]);

B.

boolisCentralSymmetric(boolpattern[][]);

C.

voidisCentralSymmetric(boolpattern[5][5]);

D.

boolisCentralSymmetric(boolpattern[5]);

答案:A

解析:二维数组作为函参时,必须指定列选项A的声明正确;选项B没有指定列数,语法错误;

选项C的返回值为void,不符合题目需要返回判断结果的求;选项D仅指定了一维数组,无法接收二

数组参。

第9题

在C++程序中,用std::vector存储非遗传承人的年龄数

vector<int>ages={25,32,45,58,62}

,要计算年龄的平均值正确的代码是?

A.

intsum=0;

for(intage:ages)sum+=age;

doubleavg=(double)sum/ages.size();

B.

intsum=0;

for(inti=0;i<ages.size();i++)sum+=ages[i];

doubleavg=sum/ages.size();

C.

intsum=0;

vector<int>::iteratorit;

for(it=ages.begin();it!=ages.end();it++)sum+=*it;

doubleavg=sum/ages.size();

D.

intsum=0;

for(intage:ages)sum+=age;

doubleavg=sum/ages.size();

答案:A

解析:计算平均值时需要将整数和转换为浮点数后再除法,避免丢失小。选项A将sum转为

double类型后再除法,结果正确;选项B、C、D均直接使用整数除法,若sum不能被size整除,会丢失

小数部分。

第10题

数字守艺人场景中,用C++编写程序模拟刺绣的针法顺序,列为"平针-打籽针-回针-平针",需要

按顺序循环执行。以下代码中,能实现循3次完整针法序列的是?

A.

stringstitches[]={"平针","打籽针","回针","平针"};

for(inti=0;i<3;i++){

for(intj=0;j<4;j++){

cout<<stitches[j]<<"";

}

}

B.

stringstitches[]={"平针","打籽针","回针","平针"};

for(inti=0;i<4;i++){

for(intj=0;j<3;j++){

cout<<stitches[j]<<"";

}

}

C.

stringstitches[]={"平针","打籽针","回针","平针"};

for(inti=0;i<3;i++){

cout<<stitches[i]<<"";

}

D.

stringstitches[]={"平针","打籽针","回针","平针"};

inti=0;

while(i<12){

cout<<stitches[i%3]<<"";

i++;

}

答案:A

解析:选项A通过外层循环控制次数(3次),内层循环执行完整的4个针法,符合要求;选项B外层循环

4次,内层循环3次,会执行4次不完整的针法序列;选项C仅执行3个针法,未完成整序列;选项D的

取余操作错误(应该是i%4),会重复前3个针法,不符合要求。

第11题

在C++程序中,要将存储非遗作品信息的数组

works[100]

按制作时间从大到小排序,以下代码中正确

的是(假设

Work

类包含

intgetTime()

方法)?

A.

sort(works,works+100,[](constWork&a,constWork&b){

returna.getTime()>b.getTime();

});

B.

sort(works,works+100,[](constWork&a,constWork&b){

returna.getTime()<b.getTime();

});

C.

sort(works.begin(),works.end(),[](constWork&a,constWork&b){

returna.getTime()>b.getTime();

});

D.

sort(works.begin(),works.end(),[](constWork&a,constWork&b){

returna.getTime()<b.getTime();

});

答案:A

解析:数组的sort函数参为组首地址和尾(+长度),从大到小排序需要自定义比较函数

返回a的时间大于b的时间。选项A符合要求;选项B是从小到大排序;选项C、D使用了vector的begin()

和end()方法,不适用于普通数组。

第12题

数字守艺人场景中,非遗传承要根据用户输入的节气名称返回对应农事活动。C++实现该功

能,最合适的数据结构是?

A.std::vector

B.std::map

C.std::list

D.std::stack

答案:B

解析:节气名称和农事活动是键值对的映射关系,std::map适合存储键值对并通过快速查找应;

std::vector、std::list是线性容器,查找效率低;std::stack是栈结构,不适合键值对查找。

第13题

在C++程序中模拟剪纸的裁路径,径由多个坐标点组成,每用

pair<int,int>

表示。以

下代码中,能正确存储5个坐标点并计算总路径长度的是(假设

distance(p1,p2)

函数已实现,用于计

算两点间距离)?

A.

vector<pair<int,int>>path;

path.push_back(make_pair(0,0));

path.push_back(make_pair(10,0));

path.push_back(make_pair(10,10));

path.push_back(make_pair(0,10));

path.push_back(make_pair(0,0));

doubletotal=0;

for(inti=0;i<path.size()-1;i++){

total+=distance(path[i],path[i+1]);

}

B.

vector<pair<int,int>>path;

path.push_back(make_pair(0,0));

path.push_back(make_pair(10,0));

path.push_back(make_pair(1

温馨提示

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

评论

0/150

提交评论