2025信息素养大赛C++初中组初赛真题|答案+详解
试卷说明
适用:初中组|C++算法赛事:2025全国青少年信息素养大赛赛区:华东(山东)赛区内容:初赛真题|选择题+判断题|完整答案用途:备考刷题、复习巩固、赛前训练
一、选择题(每题5分)
第1题
C++程序流程控制的基本结构不包括以下哪项?
A. 分支结构 B. 数据结构 C. 循环结构 D. 顺序结构
✅ 答案:B
【解析】 程序流程结构包括:顺序结构、分支结构、循环结构。数据结构不属于流程结构。
第2题
以下哪段代码能将数组 int a[4]={2,4,6,8}; 的所有元素变为原来的二倍?
A. for(int i=0; i<4;i++) a[i]+=2;
B. for(int i=0;i<4;i++) a[i]*=2;
C. for(int i=1;i<=4;i++) a[i]=a[i]*a[i];
D. for(int i=1; i<=4;i++) a[i]*=2;
✅ 答案:B
【解析】 A是加2;B是乘2;C、D下标越界。
第3题
以下哪项是分支结构的正确写法?
A. while(n>0){}
B. if(x>8){cout<<"Positive";}else cout<<"Not";
C. for(int i=0;i<n; i++) cout<<"Positive";
D. if(x>0) cout<<"Positive";
✅ 答案:D
【解析】 A是while循环;B else格式错误;C是for循环;D是正确if分支。
第4题
执行以下代码,输出的结果是?
int a =14/3*3;cout<<a;A.14 B.3 C.0 D.12
✅ 答案:D
【解析】 14/3=4,4*3=12。
第5题
找出以下代码中哪一行是C++中合法的注释?
A. (*注释此条语句*)B. //注释此条语句C. #注释此条语句D. <!--注释此条语句-->
✅ 答案:B
【解析】 C++ 单行注释用 //,多行注释用 /* */。
第6题
以下说法正确的是?
A. 执行 cout<<13.8%2; 会输出1.8
B. 不含 #include<iostream> 无法编译
C. 浮点数赋给char会运行报错
D. C++可以定义无返回值且无参数函数
✅ 答案:D
【解析】A:% 只能用于整数 B:不用输入输出可不用头文件 C:只会精度丢失,不报错 D:正确,如 void f(){}
第7题
执行代码后,计算 s[0].d+s[1].i 的结果是?
structS{double d;int i;};S s[2]={{1.5,1},{2.5,2}};A.3.5 B.4.5 C.3 D.4
✅ 答案:A
【解析】 1.5 + 2 = 3.5。
第8题
输入DNA序列,找最长连续相同子串。补全代码正确项是?
string s; cin>>s;int len=/*1*/,ans=1;for(int i=/*2*/;i<s.size();i++){if(s[i]==s[/*3*/]) len++;else len=1;if(/*4*/) ans=len;}cout<<ans;A.1,1,i-1,len<ans
B.0,0,i-1,len>ans
C.0,0,i+1,len<ans
D.1,1,i-1,len>ans
✅ 答案:D
【解析】 len初始1;i从1开始;比较s[i]与s[i-1];len>ans时更新。
第9题
输入6 7,输出结果是?
int a,b;cin>>a>>b;if (a%2==0) a/=2;if(a%2!=0) a=a*3+1;cout<<a+b;A.28 B.17 C.10 D.13
✅ 答案:B
【解析】a=6 → 6/2=3 → 3*3+1=10 b=7 → 10+7=17
第10题
下列代码运行结果是7的是?
A. cout<<(char)7;
B. cout<<15/2.0;
C. cout<<66/9;
D. cout<<int(4.3333333+2.6666666);
✅ 答案:C
【解析】A:输出ASCII字符 B:7.5 C:66/9=7 D:强转int得6
第11题
使数组非递减,最少+1操作次数。补全代码:
#include<iostream>usingnamespacestd;int a[1000];intmain(){int n, cnt=0;cin>>n;for (int i=0;i<n;i++) cin>>a[i];for(int i=1;i<n; i++){if(a[i-1]>a[i]){ cnt+=/*1*/;/*2*/; } }cout<<cnt;return0;}A.a[i-1]-a[i], a[i]+=a[i-1]
B.a[i-1]-a[i], a[i]=a[i-1]
C.a[i]-a[i-1], a[i-1]-=a[i]
D.a[i]-a[i-1], a[i-1]=a[i]
✅ 答案:B
【解析】 差值为 a[i-1]-a[i],把 a[i] 设为 a[i-1] 即可非递减。
第12题
执行代码后输出结果是?
longlong sum=0;for(int i=1;i<=6;i++){longlong mul =1;for (int j= 1; j<=i; j++) mul*=i; sum +=mul;}cout<<sum%10;A.8 B.6 C.7 D.9
✅ 答案:D【解析】sum=1+4+27+256+3125+46656=50069 50069%10=9
第13题
头发每天长1,求第一次≥t人数≥p的天数。补全代码:
cin>>n>>t>>p;int L[100],cnt;for(int i=1;;i++){ cnt=0;for(int j=0;j<n;j++){if(/*1*/) cnt++; }if(/*2*/){cout<<i<<endl;break; }}A.L[j]+i>t,cnt>pB.L[i]+j>t,cnt>p
C.L[i]+j>=t,cnt>=pD.L[j]+i>=t,cnt>=p
✅ 答案:D
【解析】 L[j]+i>=t 表示第j人头发达标;cnt>=p 满足人数条件。
第14题
从一个2x2网格的左上角出发,若只允许向右或向下移动,恰好有如下6条路径可以到达右下角:
补全以下代码,计算对于9x9的网格,有多少条路径可以从左上角到右下角。
int g[10][10]={0};/*1*/;for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(i-1>=0) g[i][j]+=g[i-1][j];/*2*/ g[i][j]+=g[i][j-1]; }}cout<<g[9][9];A.g[1][1]=1,if(j-1>=0)
B.g[1][1]=1,else if(j-1>=0)
C.g[0][0]=1,if(j-1>=0)
D.g[0][0]=1,else if(j-1>=0)
✅ 答案:C
【解析】 起点g[0][0]=1;加左边时判断不越界。
第15题
判断序列是否为等比数列。补全代码:
int n;longlong a[100];bool flag =true;cin>>n;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<n-2;i++){if(/*1*/) flag = false;}if(flag) cout<<"Yes"<<endl;elsecout<<"No"<<endl;return0;A.a[i]*a[i+1]!=a[i+1]*a[i+2]
B.a[i]+a[i+2]!=2*a[i+1]
C.a[i+1]/a[i-1]=a[i-1]/a[i+1]
D.a[i]*a[i+2]!=a[i+1]*a[i+1]
✅ 答案:D
【解析】 等比数列用乘法避免除法误差:a[i]*a[i+2] == a[i+1]^2。
二、判断题(每题5分)
第16题
C++中,逻辑与&&优先级高于||,因此 true||false&&true 等价于 true||(false&&true)。
✅ 答案:正确
【解析】 && 优先级更高,先算。
第17题
ASCII码表中,数字字符'0'到'9'是连续的。
✅ 答案:正确【解析】
0~9对应ASCII 48~57,连续。
第18题
string s="bcd"; s[0]='a'; 可正确修改第一个字符。
✅ 答案:正确
【解析】 string支持下标读写。
第19题
结构体struct只能包含变量与函数,不能包含结构体类型变量。
✅ 答案:错误
【解析】 支持嵌套结构体。
第20题
int a[3][3]={1,2,3,4,5,6,7,8,9};执行 swap(a[1][2],a[2][2]); 后,cout<<a[2][2]; 输出6。
✅ 答案:正确
【解析】 a[1][2]=6,a[2][2]=9;交换后a[2][2]=6。
💡 备战信息素养大赛,这份真题请收好!
持续更新:历届真题|模拟试卷|知识点讲解|编程技巧

关注信奥营,孩子赛考不迷路!