第16届蓝桥杯C++中高级选拔赛(STEMA)2024年12月22日真题
========================================================================
答案和更多内容请查看网站:【试卷中心 -----> 蓝桥杯 ----> C++ ----> 选拔赛】
网站链接
青少年软件编程历年真题模拟题实时更新
=======================================================================
第16届蓝桥杯C++中高级选拔赛(STEMA)2024年12月22日真题
一、单选题
第 1 题 单选题
运行以下程序,输出的结果是()。
cout<<5 * 2+1;
A.15
B.10
C.11
D.5 * 2+1
答案 C
解析
cout << 5 * 2+1; 先计算表达式 5 * 2=10,再加上 1 得到 11,输出结果为 11。
第 2 题 单选题
下列选项中,添加iostream头文件正确的写法是()。
A.#include<iostream>
B.include<iostream>
C.include"iostream"
D.#include"iostream"
答案 A
解析
在C++中,包含标准库头文件应使用尖括号,即#include <iostream>。但题目中选项A没有空格,实际上在C++中,#include<iostream>也是正确的(编译器通常允许没有空格)。而选项D用双引号虽然可能可以,但标准做法是使用尖括号。根据C++标准,标准库头文件应使用尖括号,因此A正确。
第 3 题 单选题
下列关于C++语言描述不正确的是()。
A.变量必须先定义后使用
B.if语句不能单独存在,必须有匹配的else语句
C.do...while至少会执行一次循环语句
D.数组的大小可以在声明时不指定,而在初始化时由编译器推断
答案 B
解析
在C++中,if语句可以单独使用,不需要else语句。其他选项:A正确,变量必须先定义后使用;C正确,do...while循环至少执行一次;D正确,数组在初始化时可以省略大小,由编译器推断(例如:int arr[] = {1,2,3};)。
第 4 题 单选题
下列选项中,循环执行次数与其他选项不同的是()。
A.for(int i=0; i<10; i++)
B.for(int i=1; i<=10; i++)
C.for(int i=2; i<12; i++)
D.for(int i=3; i<=13; i++)
答案 D
解析
计算每个循环的执行次数:
A:i从0到9,共10次。
B:i从1到10,共10次。
C:i从2到11,共10次。
D:i从3到13,共11次(3,4,...,13)。
所以D选项执行11次,其他都是10次。
第 5 题 单选题
运行以下程序,输出的结果是( )。
int x(int arr[], int n)
{int ans = 0;for (int i = 0; i < n - 1; i++){int m = i;for (int j = i + 1; j < n; j++){if (arr[j] < arr[m])m = j;}if (m != i){int temp = arr[i];arr[i] = arr[m];arr[m] = temp;ans++;}}return ans;
}
int main()
{int arr[] = {64, 25, 12, 22, 11, 90, 34};cout << x(arr, 7) << endl;for(int i = 0; i < 7; i++)cout << arr[i] << " ";return 0;
}
A.
4
90 64 34 25 22 12 11
B.
5
11 12 22 25 34 64 90
C.
6
90 64 34 25 22 12 11
D.
6
11 12 22 25 34 64 90
答案 B
解析
选择排序的原理是每次从未排序部分选择最小(或最大)元素放到已排序部分的末尾。函数x中的ans记录的是交换次数。对于数组{64,25,12,22,11,90,34},选择排序的交换过程如下:
最小元素11,与64交换:{11,25,12,22,64,90,34} -> 交换1次
在剩余部分{25,12,22,64,90,34}中,最小元素12,与25交换:{11,12,25,22,64,90,34} -> 交换2次
在剩余部分{25,22,64,90,34}中,最小元素22,与25交换:{11,12,22,25,64,90,34} -> 交换3次
25已经是剩余部分最小,不交换(当前数组:{11,12,22,25,64,90,34})
在剩余部分{64,90,34}中,最小元素34,与64交换:{11,12,22,25,34,90,64} -> 交换4次
在剩余部分{90,64}中,最小元素64,与90交换:{11,12,22,25,34,64,90} -> 交换5次
因此,交换次数为5次。排序后数组为{11,12,22,25,34,64,90}。所以输出5,然后输出排序后的数组:11 12 22 25 34 64 90。所以答案是B。
二、编程题
第 6 题 摆钟
题目描述:
有一座摆钟,它的摆锤每摆动一次用时 2 秒。摆锤摆动 n 次,用时多少秒?
输入描述:
输入一个整数 n(1≤n≤500),表示摆锤的摆动次数。
输出描述:
输出一个整数,表示摆锤摆动 n 次用时多少秒。
样例输入:
3
样例输出:
6
查看答案
#include <iostream>
using namespace std;int main() {int n;cin >> n;cout << n * 2 << endl;return 0;
}
解析
直接计算n次摆动需要的时间:2*n秒。
========================================================================
答案和更多内容请查看网站:【试卷中心 -----> 蓝桥杯 ----> C++ ----> 选拔赛】
网站链接
青少年软件编程历年真题模拟题实时更新
=======================================================================