今天刚刚考完的同学截图给我试卷,选择题部分是按照截图提取,编程题是由小编根据截图编写完善,总体来说,试卷还是特别简单,但是得满分还不是特别容易的,期待同学们的好成绩。
截图原稿:














2026年信息素养大赛C++初中组复赛真题
浙江赛区
一.单选题(共5题,10分)
1.丝路商队用数组goods记录货箱的货物价值,以下代码记录了部分货箱的价值,下面程序的输出结果是?()
int goods[6] = {5, 8, 3};
goods[3]=10;
goods[1]=goods[0]+2;
cout<< goods[1]<<""<< goods[3]<<""<< goods[4];
A.710随机值
B.7100
C.8100
D.10100
2.丝路商队在穿越荒漠时,每次行进会消耗2份补给。变量x表示当前剩余补给数量,变量cnt表示补给消耗次数。下面程序的输出结果是?()
intx=5,cnt=0;
while(x>0){
x=x-2;
cnt++;
}
cout<<cnt;
A.1
B.2
C.3
D.4
3.敦煌莫高窟数字展厅中,有一块3x3的壁画区域,其各位置上的编号被存储在一个二维数组a中。程序需要统计该数组左下三角区域(含主对角线)的所有编号之和。以下程序执行后,输出结果是?()
int a[3]3]={{1,2,3},{4,5,6},{7,8,9}};
int sum=0;
for (int i=0;i<3;i++){
for (intj=0:j<=i;j++){
sum+=a[i][j];
}
}
cout<<sum;
A.45
B.15
C.19
D.34
4.某支从长安出发的丝路商队在8个驿站进行了驼队数量(单位:支)的清点,并将清点结果记录在数组a中。商队管事想统计哪种规模的驼队出现得最频繁,以便规划下次出行的随行规模。下面程序的输出结果是?()
int main(){
int a[8]={5,2,8,5,2,5,8,2};
int c[10]={0};
for (int i=0;i<8;i++){
c[a[i]]++;
}
int m=0,v=0;
for (int i=0;i<10;it+){
if(c[i]>m){
m=c[i];
v=i;
}
}
cout<<v<<" "<<m;
return 0;
}
A.5 2
B.2 3
C.5 3
D.8 2
5.丝绸之路上的驿站采用“接力传递”的方式运送物资。下面代码模拟了该运送过程,该代码的输出结果是?()
int schedule(int n)
{
inti;
if(n<=5)returnn;
for (i=1;i<=5;i++)
if (schedule(n -i)<0)
returni;
return -1;
}
int main()
{
int n=16;
cout<< schedule(n)<< endl;
return O;
}
A.-1
B.2
C.3
D.4
二.多选题。
6.丝路货物管理系统需要使用数组记录货箱重量、瓷器破损数量、驿站编号等数据。以下关于数组的描述,正确的有?()
A.定义数组时,数组长度通常使用常量表达式
B.在C++中,可以将一个数组直接赋值给另一个同类型的数组,例如下面代码中的复制数组操作是合法的
int a[5]={1,2,3,4,5};
int b[5]=a;
C.整型数组可以在定义时用花括号初始化,未指定初值的元素会自动初始化为0
D.数组下标从0开始,访问越界可能导致运行时错误
7.丝路贷物系统需要灯商品编亏、瓮器预率、驿跖优无级数据进行排予。下列天于排予稳定性的况法,正确的是?
A.快速排序是稳定的
B.选择排序是不稳定的
C.插入排序是不稳定的
D.冒泡排序是稳定的
8.丝路商队穿越茫茫大漠,沿途设有编号1至100的驿站。某日,商队管事需在驿站中寻找一处藏有补给的目标站点。为提高效率,管事采用"二分查找”的策略:每次查看当前范围正中间的驿站,若编号偏小则往后半段找,若编号偏大则往前半段找,直到找到目标。下面程序模拟了这一过程,请根据程序选择正确的选项?()
int main(){
int t,cnt=0;
cin>>t;
int l=1,r=100,mid;
while (true){
cnt++:
mid=(l+r)/2;
if (mid ==t){
cout << cnt;
break;
}
else if (mid<t)l=mid +1;
elser=mid-1;
}
return O;
}
A 当目标驿站编号t=1时,程序输出7
B 当目标驿站编号t=64时,程序输出7
C输入一个1~100的驿站编号,该算法最多查找7次必能找到目标驿站
D假设驿站编号为1至1000,将程序中r的初始化值修改为1000,然后再输入一个1~-1000的驿站编号,该算法最多查找11次必能找到目标驿站
9.丝路贸易账本中可能出现非常大的金额数据,普通整数类型无法保存,需要使用高精度算法处理。两个大数以字符串形式输入并存储在s1、s2中,然后需要转换为整数存入整型数组a、b中,然后进行计算,并将计算结果存入整型数组c中。以下关于高精度乘法的说法正确的有?()
A.需要将两个字符串倒序存储在整型数组中,例如将s1倒序存入数组a:int lena= s1.length();
for (int i=0;i<=lena-1;i++){
a[i]=s1[lena-1-i]-’0’;
}
B.处理数组c进位时下面代码能获得正确结果
for (int i=0;i<=lenc-1;i++){
c[i+1]=c[i+1]+c[i]%10;
c[i]=c[i]/10;
}
C.下面代码能去掉数组c的前导零,得到正确的lenc,已知lenc指的是数组c的当前长度:
while(c[lenc-1]==0&&lenc>1)
{
lenc--;
}
D.模拟乘法时,下面代码能使得数组c保仔止调计算结果:
for (inti=0;i<=lena-1;i++)
{
for (intj=0:j<=lenb-1;jt+){
c[i+j]=a[i]*b[j];
}
}
10.长安城商人王掌柜收到来自6个西域国家的货物,重量记录在数组weights中,每件货物重量大于0,且6个货物的重量不相同。王掌柜想知道最重和次重的货物重量,以便决定将最重的作为“样品”展示,次重的作为”备用样品"。以下程序段可以正确求出最重重量(max1)和次重重量(max2)的有?()
A.
int max1 = weights[0], max2 = weights[0];
for(int i=1;i<6:i++){
if(weights[i]>max1)
max2=max1;
max1=weights[i];
}else if(weights[il>=max2){
max2=weights[i];
}
}
B.
int max1 = weightsi0], max2 = weights[1];
if(max1<max2) swap(max1, max2);
for(int i=2;i<6:i++){
if(weights[i]>max1){
max2=max1;
max1=weights[i];
}else if(weights[il>=max2){
max2=weights[i];
}
}
C.int max1 = weights[0],max2 = weights[0];
for (inti=1;i<6:i++){
if(weights[i]>max1) max1=weights[i];
if (weights[i]>max2 && weights[i]!= max1) max2= weights[il;
}
D.
int max1=0,max2=0;
for (int i=0;i<6;i++){
if(weights[i] > max1){
max1=weights[i];
}
}
for (int i=0;i<6;i++){
if(weights[i)>max2&weights[i]!=max1){
max2=weights[i];
}
}
三.编程题。
11.丝绸之路远行商队采购了总重 W 千克的粮食,要分装成每袋净重固定为 K 千克的标准粮袋方便驼队运输。请依次完成三项计算:
(1)最多能分装出多少袋完整、装满的标准粮袋;
(2)所有标准粮袋分装完成后,剩下的粮食重量;
(3)若存在剩余粮食,需要单独准备 1 个小型布袋存放余量;若无剩余则无需额外袋子,计算本次分装一共需要准备多少个袋子。
输入格式
仅一行,输入两个用空格隔开的正整数W,K。 数据范围:1 <=W <=10000,1<=K<=10000)
W:粮食总重量(千克)
K:单个标准粮袋的额定装载重量(千克)
输出格式
一共输出三行,每行仅输出 1 个整数,输出顺序严格对应题目三个计算要求:
第 1 行:装满的标准粮袋数量
第 2 行:分装后剩余粮食重量
第 3 行:分装所需全部袋子总数
样例1
输入:
100 30
输出:
3
10
4
样例解释:总粮食 100 千克,每标准袋装 30 千克。
100/30 = 3,最多装满 3 整袋;
100 - 3*0 = 10,剩余 10 千克粮食;
有剩余粮食,额外加 1 个小袋子,总袋子 3+1=4。
参参考程序:

12.(15 分)驼队行进顺序编号筛选
题目描述
丝绸之路驿站迎来一队骆驼,所有骆驼的编号是一段连续整数,编号区间为([L, R])(包含起点 L 和终点 R)。 驿站通行规则:编号个位数字为2、4、8 的骆驼可以优先通行,其余骆驼原地等候。请你按照从小到大的顺序,输出区间内所有满足优先通行条件的骆驼编号;若区间内没有符合条件的编号,则单独输出None。
输入格式
仅一行,输入两个用空格隔开的正整数(L、R)。 数据范围:(1<=L<=R<=999)
·L:骆驼编号区间左边界
·R:骆驼编号区间右边界
输出格式
如果存在符合条件的编号:在同一行输出全部编号,数字之间用单个空格分隔;
如果不存在符合条件的编号:仅输出单词None,无多余字符。
样例1
输入:
10 20
输出:
12 14 18
样例解释:遍历10~20 所有编号,筛选个位为 2、4、8 的数字,分别是 12、14、18,按升序空格输出。
参考程序:

13.(20分)藻井纹样的米字矩阵
题目描述
敦煌莫高窟的藻井拥有精美对称的米字纹样。现给定一个奇数整数n,代表正方形纹样矩阵的边长。
请绘制一个n×n的字符矩阵,绘制规则:
矩阵中满足以下任意一种位置条件的字符输出*,其余位置全部输出.:
(1)位于矩阵中间一行
(2)位于矩阵中间一列
(3)位于主对角线(行号= 列号)
(4)位于副对角线(行号+ 列号 = n−1)
以上四条线条组合为完整米字纹样,严格按照规则输出图案。
输入格式
输入一个奇数整数n。
数据范围:3<=n<=19,保证输入一定为奇数。
输出格式
输出n行,每行严格包含n个字符(仅*和.),无空格、无多余字符、无空行。
样例输入
5
样例输出
*.*.*
.***.
*****
.***.
*.*.*
样例解释
当n=5 时,矩阵中心行、中心列为第3行、第3列;叠加主对角线、副对角线后,形成标准米字花纹,完全匹配输出图案。
参考程序:

14.(20分)绿洲灌溉序列优化
题目描述
沙漠绿洲中有n块农田水平排成一行,每块农田都有固定的需水量,用数组a1,a2...an表示。
现有一条智能水渠可以进行灌溉操作:每次操作可以选择任意一段连续农田,给区间内每一块农田增加1 单位水量。
初始所有农田水量为0,请问至少需要多少次灌溉操作,能让所有农田的水量大于等于自身需水量,实现全部达标?
输入格式
第一行:一个整数n,代表农田数量。
第二行:n个空格分隔的整数,代表每块农田的需水量。
数据范围:1<=n<=1000,1<=ai<=100.
输出格式
输出一个整数,代表达标所需的最少灌溉次数。
样例输入1
3
1 2 1
样例输出1
2
样例解释1
第1次整体灌溉全部农田,三块农田水量均为1,满足第1、3块农田需求;
第2次单独灌溉中间农田,中间水量变为2,全部达标;
总计最少操作次数为2 次。
参考程序:

通过网盘分享的文件:2026年7月11日C++初中
链接: https://pan.baidu.com/s/1M4uc6RIQcUssz7aQ5YTDWw 提取码: hijg
--来自百度网盘超级会员v8的分享
夜雨聆风