蓝桥等考C++组别
十
级
第一部分:选择题
1、
C++ L
10
(
15
分)
假定有数组定义,那么元素a
[4]
的初始值是( )。
int a[10] = {0, 1, 2, 3, 4};
A.
0;
B. 3;
C.
4;
D.
-1;
正确答案:
C
2
、C++ L
10
(
15
分)
有一个一维数组a,元素类型是int,共有
5
个元素,要依次每行输出一个元素,正确的语句是( )
。
A
.
for (int i = 0; i <= 4; i++)
{
cout << a[i] << endl;
}
B.
for (int i = 1; i <= 5; i++)
{
cout << a[i] << endl;
}
C.
cout << a << endl;
D.
for (int i = 0; i < 5; i++)
{
cout << a(i) << endl;
}
正确答案:A
3
、C++ L
10
(20分)
假定有
int
型数组a和b,长度都为n。如果要把a的所有元素都复制到数组b中,下列选项中正确的是( )。
A
.
b
= a
;
B.
for(int i = 1; i <= n; i++)
{
b[i] = a[i];
}
C.
for(int i = 0; i <= n; i++)
{
b[i] = a[i];
}
D.
for(int i = 0; i < n; i++)
{
b[i] = a[i];
}
正确答案:
D
第二部分:编程题
4、
C++ L10
截取数列片段(
2
0分)
题目名称:
截取数列片段
题目描述:
给定一个长度为n的数列,要求截取其中从第x个元素到第y个元素的片段并输出。
例如,当
n
= 8
,
x
= 3
,y
= 6
:
数列为:
1 2 3 4 5 6 7 8
输出
数列的第
3个到第6个元素为3 4 5
6
输入:
共
2
行,第1行是
3
个正整数,分别是:
n(
1
<
=
n
<= 50
)
,表示
数列的长度;
x(
1
<
= x <= n
),表示片段的起始元素序号;
y(
x
<
= y <= n
),表示片段的截止元素序号;相邻两个数之间用一个空格隔开。
第2行包含n个
整数
(0~1
0000
),表示数列的元素,相邻两个数之间用一个空格隔开。
输出:
共1行,表示数列从第x个元素到第y个元素的片段,相邻两个数之间用一个空格隔开。
输入样例:
8 3 6
1 2 3 4 5 6 7 8
输出样例:
3 4 5 6
参考程序:
#include<iostream>
using namespace std;
const int N = 50;
int a[N+1];
int main()
{
int n, x, y;
cin >> n >> x >> y;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
for (int i = x; i <= y; i++)
{
cout << a[i] << " ";
}
return 0;
}
测试数据:
1.in
8 3 6
1 2 3 4 5 6 7 8
1.out
3 4 5 6
2.in
10 10 10
2591 8219 281 5621 9364 8522 4606 2268 2348 715
2.out
715
3.in
15 1 13
1304 9458 7141 4659 2022 411 7677 4332 4377 4665 4280 2702 8477 2521 8089
3.out
1304 9458 7141 4659 2022 411 7677 4332 4377 4665 4280 2702 8477
4.in
35 6 33
1013 2763 2994 343 1336 7356 7722 4008 4719 1009 8643 898 8928 761 5636 7023 454 2107 7713 4450 2733 5052 2449 3426 2013 8289 3769 1399 5094 962 1963 272 4001 9785 5284
4.out
7356 7722 4008 4719 1009 8643 898 8928 761 5636 7023 454 2107 7713 4450 2733 5052 2449 3426 2013 8289 3769 1399 5094 962 1963 272 4001
5.in
50 1 16
3325 1991 6366 8522 6860 1607 4915 284 7844 9668 6803 1714 5944 8902 5927 9734 8956 3734 1139 3776 7587 7489 5093 39 3265 2393 3522 9238 3876 8127 3976 6622 7361 6762 3753 3166 8255 3696 7416 3846 460 1863 4644 5822 267 1295 1395 7810 8852 1631
5.out
3325 1991 6366 8522 6860 1607 4915 284 7844 9668 6803 1714 5944 8902 5927 9734
5
、
C++ L10
0
1
比特串左移操作(
3
0分)
题目名称:
0
1
比特串左移操作
题目描述:
01比特串指由0和1组成的字符串,例如:1
011
。
左移操作用来将一个
01比特串
的每一位
数字
全部左移若干位,右边补
0。
例如:将
01比特串0
0001011
左移2位,得到的新
01比特串
为
00101100
。
左移操作过程如下图所示:
0
1
0
0
0
1
1
0
左
移2
位
0
0
0
0
0
1
1
0
1
0
删除
补
2
位
0
1
0
0
0
1
1
0
左
移2
位
0
0
0
0
0
1
1
0
1
0
删除
补
2
位
现给定一个
01比特串
和左移操作的位数,请输出左移操作后的结果。
输入:
输入有
3行,第1行是
1
个正整数
n(n
<= 20
)
,表示
01比特串
有多少位
。
第2行包含n个数字,表示01比特串的每一位,两个数之间有一个空格。
第3行是一个正整数
k(k
<= n
),表示左移k位。
输出:
根据题目描述,输出对应的01比特串,相邻两位数字之间用一个空格隔开。
输入样例:
4
1
0 1 1
2
输出样例:
1 1 0 0
参考程序:
#include<iostream>
using namespace std;
const int N = 20;
int a[N+1];
int main()
{
int n, k;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
cin >> k;
for (int i = 1; i <= n - k; i++)
{
a[i] = a[i + k];
}
for (int i = n - k + 1; i <= n; i++)
{
a[i] = 0;
}
for (int i = 1; i <= n; i++)
{
cout << a[i] << " ";
}
return 0;
}
测试数据:
蓝桥杯青少组C++组别10级编程练习真题(第9套,共10套)