2025备考信息素养大赛-c++初赛练习
2024年全国青少年信息素养大赛C++算法创意实践初赛真题
(一)选择题
1、编写程序,计算区间100~n之间的所有整数(100<n<=999),数字x(0<x<9)共出现的次数,补全①、②和③处的代码例如:100到109中,即100、101、102、103、104、105、106、107、108、109中,数字1出现了11次。
#include<iostream>
using namespace std;
int main(){
int n, x, cnt = 0;
cin >> n >> x;
for(int i = 100; i <= n; i++){
___①___
int g,s,b;
g=a%10;
___②___
___③___
if(g == x){
cnt++; }
if(s == x){
cnt++; }
if(b == x){
cnt++; }
}
cout<<cnt<<endl;
return 0;
}
①、②和③处的代码为:
A. int a = i; s=a/10%10; b =a/100;
B. int g = i; s=g%10; b=g%100;
C. int cnt = i; s = cnt%10; b = cnt/100;
D. int a = n; s=a/10; b =a%100;
2、完全数是指一个数恰好等于除它本身之外的所有因数之和。例如:6的因数有1、2、3、6,除去6之外的因数之和为1+2+3=6,所以6为完全数。编写程序,按从小到大的顺序寻找1到10000之间的完全数,输出第n个完全数,n的范围0<n<5。
#include<iostream>
using namespace std;
int main(){
int n,sum = 0, num = 0;
cin >> n;
for(int i=1; i<10000;i++){
int a = i;
sum = 0;
for(int j=1; j <a; j++){
if(a%j == 0){
_①_
}
}
if(_②_){
num++;
}
if(num == n){
cout<<a;
_③_;
}
}
return 0;
}
补全①、②和③处的代码
A. sum +=i;sum == a; continue;
B. sum+=j;sum == a; break;
C. sum +=j;sum == a; continue;
D. sum +=i; sum == a; break;
3、下面哪个语句运行结果是9?( )
A. cout <<"5+ 4" << endl;
B. cout << 5<<"+"<<4<< endl;
C. cout << 5+4<<endl;
D. cin >> 5+4 > > endl;
4、下面代码实现的是判断n是否是质数的功能。
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
_①_
for(int i=2; i < n; i++){
if(_②_){
isprime = false;
break;
}
}
cout << isprime << endl;
return 0;
}
补全①和②处的代码:
A. bool isprime = true; n%i == 0
B. bool isprime = false; n%i!=0
C. bool isprime = true; n%i != 0
D. bool isprime = false; n%i ==0
5、在C++中,表示布尔数据类型的关键字是( )
A. int B. bool C. double D. string
6、声明一个整型变量age的正确方式是( )
A. int age; B. float age; C. string age; D. char age;
7、假设有两个城市:城市A和城市B。每个城市的温度都在-50到50摄氏度之间。当且仅当只有一个城市的温度低于0时,输出1,也就是说,如果城市A的温度低于0而城市B大于等于0;或者如果城市A的温度大于等于0而B小于0,则输出1,否则输出0。
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
if(_①_)
{
if(_②_){
cout <<1;
return 0;
}
}
if(a >= 0){
if(b < 0){
cout <<1;
return 0;
}
}
cout <<0;
return 0;
}
补全①和②处的代码:
A. a<0 b>=0
B. a>0 b<=0
C. a>=0 b>=0
D. a <0 b<0
8、运行以下程序
#include< iostream >
using namespace std;
int main(){
int a = 5;
int b = a + 3;
int c = b - 2;
cout <<c;
return 0;
}
输出的结果是( )
A.6 B.8 C.5 D.10
9、C++中有很多数据类型,以下可以定义存储浮点型变量的关键字是( )
A. int B. double C. char D. long long
10、执行以下程序段,输入11,则输出的值是( )
int x;
cin >> x;
cout<<x + 2;
A.10 B.11 C.x D.13
11、在C++中,表示小于或等于的关系运算符是( )
A.< B. == C.<= D.>
12、在C++中,以下正确的变量命名是( )
A. 2things B. _myVariable C. my-variable D.None of the above
13、要在C++中打印"Hello,World!",以下语句正确的是( )
A. cout << "Hello, World!"; B. cout "Hello,World!";
C. cout << Hello, World!; D. cout >> "Hello, World!";
14、小A有一个神奇口袋,里面可以装各个平方数。口袋的负载量就是口袋里所有数字之和。当负载量超过L的时候不能再装平方数。现在给定n个数,从左往右筛选其中的平方数,并依次将平方数放入口袋,编成程序,输出口袋里能装下几个平方数。平方数就是一个整数乘以自己的结果(例如: 1、4、9、16、…...),例如:输入L为100,n为5,接下来的5个数分别是49、19、36、25、73,则口袋里只装了49和36两个平方数,所以输出2。
#include<iostream>
using namespace std;
int main(){
int L,n,cnt=0,sum=0;
cin>>L>>n;
for(int i=1;i<=n;i++){
int x;
bool flag = false;
cin>>x;
for(int j=1; j<x;j++){
if(_①_){
flag = true;
break;
}
}
if(flag == true){
if(_②_){
sum +=x;
cnt++;
}
else{
_③_
}
}
}
cout<<cnt;
return 0;
}
补全①、②和③处的代码.
A.j*j==x sum+x<=L continue; B.j*j==x sum+x<=L break;
C. x/j==i sum<=L continue; D. x/j==i sum<=L break;
15、运行以下程序
#include<iostream>
using namespace std;
int main(){
cout << "Hell"<<" ";
cout << "World";
return 0;
}
输出的结果是( )
A. Hello,World B. Hello World C.语法错误 D.无任何输出
(二)判断题
16、在C++中,整型 int可以用来存储小数。
17、在C++中,&&和Ⅱ分别代表逻辑与和逻辑或运算。
18、在C++中,变量声明后,如果不初始化。其值是确定的。
19、在C++中,cout用于输入,而cin用于输出。
20、在C++中,break语句可以用来立即退出当前的循环。
2023年全国青少年信息素养大赛C++算法创意实践初赛真题
(一)以下程序的输出结果是:( ) [单选题]
1、程序的输出结果是:( )
#include <iostream>
using namespace std;
int main() {
int arr[] = {0, 2, 0, 4, 0, 6};
int sum = 0;
for (int i = 1; i <= 5; i += 2) {
sum += arr[i];
}
cout << sum << endl; // 输出结果
return 0;
}
A. 12 B.18 C.20 D.21
2、在 C++中,下面哪个关键字用于声明一个变量,其值不能被修改?( )
A.unsigned B.const C.static D.mutable
3、(8+6)×a-10+c÷2 在 C++中应表示为( )
A.(8+6)×a-10+c÷2 B.(8+6)*a-10+c÷2
C.(8+6)*a-10+c/2 D.(8+6)×a-10+c/2
4、C++中, 11%3 的运算结果是( )
A.3 B.-1 C.1 D.2
- 下列关于算法的叙述不正确的是()
A.算法的每一步必须没有歧义,不能有半点含糊
B.算法必须有输入
C. 同一问题可能存在多种不同的算法
D. 同一算法可以用多种不同的形式来描述
6、若有如下语句:
int a,b,c;
a=b=c=5;
则执行语句:
b+=++a&&++c>b
后 a、b、c 的值分别为()
A. 6,7,6 B. 6,6,6 C. 6,6,5 D. 6,1,6
7、有四个人要从 A 点坐一条船过河到 B 点,船开始在 A 点,该船一次最多可坐
两个人,己知这四个人中每个人独自坐船的过河时间分别为 1, 2, 4, 8, 且两个人坐 船的过河时间为两人独自过河时间的较大者。则最短()时间可以让四个人都过河 到 B 点(包括从 B 点把船开回 A 点的时间)。
A. 14 B. 15 C. 16 D. 17
8、 下列 C++代码执行之后输出的结果是()

A 4 B 5 C 6 D 7
9、关于 C++函数,以下说法正确的是()
A 函数不可以没有返回值
B 函数不可以没有参数
C 调用函数时的填写的参数必须和函数声明时的变量名一致
D 有的时候调用函数时函数参数可以少于声明时的参数个数
10、 以下哪种排序的时间复杂度是不稳定的()。
A 快速排序
B 归并排序
C 冒泡排序
D 基数排序
11、 运行下方程序,输出结果为()

A 10.0 B 18 C 30 D 30.0
12、 有一个由 1000 个整数构成的顺序表,假定表中的元素已经按升序排列,采用二分查找定位一个元素。则最多需要几次比较就能确定是否存在所查找的元素()
A 10 次 B 11 次 C 12 次 D 13 次
13、 下列 C++代码执行之后输出的结果是()

A 38 B 40 C 0 D 程序有错误,无法输出
14、 在下列代码横线处埴写(),可以将输入的单词的大写字母全部变小写。

A word[i]-'a'+'A; B word[i]-='A'+'a';
C word[i]+='A'-'a'; D word[i]+='a'-'A';
(二)判断题
- 表达式(3 &&0)||(0 && -1)的结果为假。()
- 字符' 0'的 ASCII 码为 48 ,则字符'5'的 ASCIT 码为 39。()
- 只要 while 循环语句中的条件表达式一直成立,循环就一定会永远执行下去。()
- 条件"a+b>c&&b+c>a&&c+a>b"可以正确判断"a,b,c 三条边可以构成 三角形"()
- 第 7 题 C++表达式 ('1'+'1''2'? flag=1:flag=2) 的结果值和表达式 (flag2) 的相 同。( )

浙公网安备 33010602011771号