#5381. 2023年厦门市小学生计算机C语言竞赛(初赛)试卷
2023年厦门市小学生计算机C语言竞赛(初赛)试卷
2023年厦门市小学生计算机C语言竞赛(初赛)试卷
参赛须知
- 本竞赛用时为90分钟
- 答案依{{ input() }}框中所示标号填写在答题卷上,考试结束时只交答题卷
- 本卷共四大题,45小题,满分100分
一.单项选择题(1-10题,每题1分,11-20题,每题2分,共30分)
- 中国科学技术大学官网2023年10月11日发布的消息,中国科学技术大学中国科学院量子信息与量子科技创新研究院潘建伟、陆朝阳、刘乃乐等组成的研究团队与中国科学院上海微系统所、国家并行计算机工程技术研究中心合作,成功构建了255个光子的量子计算原型机“九章三号”,再度刷新了光量子信息的技术水平和量子计算优越性的世界纪录中国科学家宣布已成功构建量子计算原型机“九章三号”,求解特定问题的速度比目前全球最快的超级计算机快{{ select(1) }}
- 一万倍
- 一亿倍
- 一百亿倍
- 一亿亿倍
- 北京时间2023年10月26日11时14分,搭载神舟十七号载人飞船的长征二号F遥十七运载火箭在酒泉卫星发射中心点火发射,约10分钟后,神舟十七号载人飞船与火箭成功分离,进入预定轨道,航天员乘组状态良好,发射取得圆满成功1992年9月,中央决策实施载人航天工程,并确定了中国载人航天“三步走”的发展战略,目前我们正处于哪个阶段?{{ select(2) }}
- 发射载人飞船,建成初步配套的试验性载人飞船工程,开展空间应用实验
- 突破航天员出舱活动技术、空间飞行器交会对接技术,发射空间实验室,解决有一定规模的、短期有人照料的空间应用问题
- 建造空间站,解决有较大规模的、长期有人照料的空间应用问题
- 建造月球科研试验站,开展系统、连续的月球探测和相关技术试验验证
- 以下和计算机领域密切相关的奖项是{{ select(3) }}
- 奥斯卡奖
- 图灵奖
- 诺贝尔奖
- 普利策奖
- 以下运算符中,优先级最高的是{{ select(4) }}
- *=
- ++
- &&
> =
- 局域网的英文缩写是{{ select(5) }}
- LAN
- WAN
- MAN
- LNA
- 以下变量命名不符合规范的是{{ select(6) }}
- boy
- char
- my_name
- text2
- 在C++中使用流进行输入输出,其中用于屏幕输出的对象是{{ select(7) }}
- cerr
- cin
- cout
- cfile
- 已知:double a=123.4; int b=a*10; double c=b/10;则执行语句:cout<<c<<endl;后输出在屏幕的值为{{ select(8) }}
- 123.4
- 123.4000000
- 123
- 123.000000
- 在下列字符中,其ASCII码值最大的一个是{{ select(9) }}
- 8
- m
- g
- G
- 一个32位整型变量占用的字节数是{{ select(10) }}
- 4
- 8
- 32
- 128
- C++语言中函数返回值的类型是由( )决定的{{ select(11) }}
- 定义函数时所指定的函数类型
- 调用该函数的主调函数类型
- return语句中的表达式类型
- 传递给函数的实参类型
- 设“int a=12;”,则执行完语句“a+=a*a;”后,a的值是{{ select(12) }}
- 12
- 144
- 156
- 288
- 在下面的一维数组定义中,哪一个有语法错误{{ select(13) }}
- int a[]={1, 2, 3};
- int a[10]={0};
- int a[5];
- int a[];
- 二进制数111101转换成十进制是多少?{{ select(14) }}
- 62
- 63
- 60
- 61
- 原码、反码和补码是计算机中用来表示带符号整数的三种编码方式,它们在计算机内部的运算和表示过程中发挥重要作用对于8位二进制来说,-7的补码是{{ select(15) }}
- 10000111
- 11111001
- 00000111
- 01111001
- 在C++程序中,3%5的运算结果是{{ select(16) }}
- 3
- -2
- 2
- -3
- 设变量int b,a=5;下列( )表达式计算后,使得变量b的值等于2?{{ select(17) }}
- b=a/2
- b=6-(a--)
- b=a%2
- b=a>3?3:2
- 253和299的最大公约数是{{ select(18) }}
- 11
- 13
- 23
- 24
- 在C++语言中,运行以下代码后,变量i的最终值是
int i=0;
while(i<=5){
cout << i;
i++;
}
{{ select(19) }}
- 5
- 0
- 1
- 6
- 执行如下程序
int x;
for(int i=1; i<=100; i++) {
cin >> x;
if (x < 0) continue;
cout << i;
}
则下面正确的说法是{{ select(20) }}
- 当x<0 时整个循环结束
- 当x>=0 时,此次循环无输出
- cout语句永远也不执行
- 最多输出100个非负整数
二、填空题 (21~30每题3分,共30分)
- 十进制数1008转化为八进制数为:{{ input(21) }}
- 已知主函数中bool P, Q, 且bool st = ((!P) || (!Q)) && P && Q, 无论P和Q为何初值(保证合法),在执行cout << st; 语句后,屏幕上输出的结果是{{ input(22) }}
- C++中当一个函数无返回值时,则该函数应声明为{{ input(23) }}类型
- 若有int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},则a[a[1] + 2 * a[2]]的值是{{ input(24) }}
- 对于递推公式:F(n) = F(n-1) + 3, 已知F(1) = 2, 求F(5)的值是{{ input(25) }}
- 有以下程序: int i, s=0; for(i=1; i<20; i+=3) s+=i; cout << s; 程序执行后的输出结果s的值是{{ input(26) }}
- 定义如下变量和数组: int k; int a[3][3] = {9, 8, 7, 6, 5, 4, 3, 2, 1}; 则语句for(k=1; k<3; k++) cout << a[k][k] << ' ' 的输出结果是{{ input(27) }}(用空格分隔每个值)
- 两个整数的最小公倍数是1925,这两个整数分别除以它们的最大公约数,得到2个商的和是16,这两个整数分别是{{ input(28) }}(注:较小的数写在前)
- 7人排成一排照相,若要求甲、乙、丙三人不相邻,有{{ input(29) }}种不同的排法
- 9名乒乓球运动员,其中男5名,女4名,现在要选出4人分成两组进行混合双打训练,有{{ input(30) }}种不同的分组方法?
三、阅读程序填写结果(31~40每题3分,共30分)
程序一:
#include<iostream>
using namespace std;
int main() {
int x, y, z, f[3];
for(int i=0; i<3; i++) cin >> f[i];
x = f[0] + f[1] + f[2];
x = x / f[0];
y = f[0] + f[2];
y = y / x;
z = (y * f[1] + x) / f[2];
if(f[(x + y + z) % 3] > f[2])
cout << x << endl;
else
cout << y + z << endl;
return 0;
}
题号 | 第1题 | 第2题 | 第3题 |
---|---|---|---|
输入数据 | 1 1 1 | 2 0 4 | 10 15 3 |
输出数据 | {{ input(31) }} | {{ input(32) }} | {{ input(33) }} |
程序二:
#include
#include
using namespace std;
int main() {
string num_list = "11223344555666777888999000";
string message;
cin >> message;
for(int i=0; i= '0') && (message[i] <= '9'))
cout << num_list[i];
else if((message[i] >= 'A') && (message[i] <= 'Z'))
cout << num_list[message[i]-'A'];
cout << endl;
return 0;
}
题号 | 第1题 | 第2题 | 第3题 | 第4题 |
---|---|---|---|---|
输入数据 | AK | CODE | XM_2023 | LOVEC++1024 |
输出数据 | {{ input(34) }} | {{ input(35) }} | {{ input(36) }} | {{ input(37) }} |
程序三:
#include<iostream>
using namespace std;
const int NUM = 5;
int fun(int n) {
if(n <= NUM) return n;
for(int i = 1; i <= NUM; i++)
if(fun(n-i) < 0) return i;
return -1;
}
int main() {
int n;
cin >> n;
cout << fun(n) << endl;
return 0;
}
题号 | 第1题 | 第2题 | 第3题 |
---|---|---|---|
输入数据 | 5 | 6 | 9 |
输出数据 | {{ input(38) }} | {{ input(39) }} | {{ input(40) }} |
四、完善程序(选择正确的选项填充程序空白部分,41~45每题2分,共10分)
给出n, m, k (1 ≤ n, m ≤ 5 × 10^5, 1 ≤ k ≤ n × m),请输出在nm的乘法表中第k小的数即,给出一个f[i][j] = ij (1 ≤ i ≤ n, 1 ≤ j ≤ m)的数组,输出该数组内所有数(包含重复的)从小到大排序后第k大的数
样例输入:5 5 10 样例输出:5
#include<bits/stdc++.h>
using namespace std;
long long n, m, k;
bool check(long long x) {
long long sum = 0;
for(int i = 1; i <= n; i++) {
sum += _________; // 41
}
return ________; // 42
}
int main() {
scanf("%lld %lld %lld", &n, &m, &k);
long long temp = _________; // 43
long long L = 1, R = temp;
while (L < R) {
long long mid = ________; // 44
if(check(mid)) R = mid;
else L = ________; // 45
}
printf("%lld", L);
return 0;
}
- 第①空应填写?{{ select(41) }}
- min(n, x / i)
- min(m, x / i)
- max(n, x / i)
- max(m, x / i)
- 第②空应填写?{{ select(42) }}
- sum < k
- sum <= k
- sum > k
- sum >= k
- 第③空应填写?{{ select(43) }}
- n
- k
- n + m
- n * m
- 第④空应填写?{{ select(44) }}
- (R + L) / 2
- (R + L + 1) / 2
- (R - L) / 2
- (R - L - 1) / 2
- 第⑤空应填写?{{ select(45) }}
- L + 1
- mid - 1
- mid + 1
- mid