C++ 蓝桥 STEMA 省选拔赛模拟测试题(第二套)
一、选择题(每题 5 分,共 25 分)
题目 1:指针与变量
以下关于 C++ 指针的说法,正确的是( )
A. int* p = 10;
可以将指针 p 指向整数 10
B. int a = 5; int* p = &a;
后,*p
的值是 5
C. 未初始化的指针可以安全使用
D. 指针的大小一定等于整型变量的大小
题目 2:循环结构
运行以下代码的输出结果是( )
cpp
#include <iostream>
using namespace std;
int main() {
int sum = 0;
for (int i = 1; i <= 5; i++) {
if (i % 2 == 0) continue;
sum += i;
}
cout << sum;
return 0;
}
A. 9
B. 6
C. 15
D. 10
题目 3:函数与参数传递
以下函数定义中,能正确交换两个整数变量值的是( )
A.
cpp
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
B.
cpp
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
C.
cpp
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
D. B和C都可以
### 题目4:运算符优先级
表达式 `3 + 5 * 2 > 10 ? 4 : 2` 的计算结果是( )
A. 4
B. 2
C. 13
D. 10
### 题目5:const修饰符
以下代码中,会编译报错的是( )
A.
```cpp
const int a = 5;
a = 10;
B.
cpp
int b = 5;
const int* p = &b;
*p = 10;
C.
cpp
int c = 5;
int* const p = &c;
p = &b; // 假设b是已定义的int变量
D. 以上都会报错
二、编程题(每题 15 分,共 75 分)
题目 1:交换两个数
要求 :输入两个整数 a 和 b,交换它们的值后输出(要求用指针或引用实现)。
输入格式 :一行两个整数,用空格分隔。
输出格式:交换后的两个整数,用空格分隔。
题目 2:斐波那契数列
要求 :输入一个正整数 n(n≤20),输出斐波那契数列的前 n 项(斐波那契数列定义:第 1 项 = 1,第 2 项 = 1,第 n 项 = 第 n-1 项 + 第 n-2 项)。
输入格式 :一个整数 n。
输出格式:前 n 项斐波那契数,用空格分隔。
题目 3:回文数判断
要求 :输入一个正整数,判断它是否是回文数(回文数:正读和反读相同的数,如 121、1331)。
输入格式 :一个整数。
输出格式 :若是回文数输出YES
,否则输出NO
。
题目 4:数组最大值
要求 :输入一个包含 10 个整数的数组,输出其中的最大值及其下标(若有多个最大值,输出第一个出现的下标)。
输入格式 :一行 10 个整数,用空格分隔。
输出格式:两个整数,分别为最大值和其下标(下标从 0 开始)。
题目 5:分数统计
要求 :输入 10 个学生的分数(0-100 之间的整数),统计及格(≥60)和优秀(≥90)的人数。
输入格式 :一行 10 个整数,用空格分隔。
输出格式:两个整数,分别为及格人数和优秀人数,用空格分隔。