#XMXXS202301. 2023年厦门市小学生信息学竞赛初赛题

2023年厦门市小学生信息学竞赛初赛题

一、选择题

1、中国科学技术大学官网2023年10月11日发布的消息,中国科学技术大学中国科学院量子信息与量子科技创新研究院潘建伟、陆朝阳、刘乃乐等组成的研究团队与中国科学院上海微系统所、国家并行计算机工程技术研究中心合作,成功构建了 255 个光子的量子计算原型机“九章三号”,再度刷新了光量子信息的技术水平和量子计算优越性的世界纪录。中国科学家宣布已成功构建量子计算原型机“九章三号”,求解特定问题的速度比目前全球最快的超级计算机快()。

{{ select(1) }}

  • 一万倍
  • 一亿倍
  • 一百亿倍
  • 一亿亿倍

2、北京时间 2023年 10月 26日 11 时 14分,搭载神舟十七号载人飞船的长征二号F遥十七运载火箭在酒泉卫星发射中心点火发射,约 10 分钟后,神舟十七号载人飞船与火箭成功分离,进入预定轨道,航天员乘组状态良好,发射取得圆满成功。1992年9月,中央决策实施载人航天工程,并确定了中国载人航天“三步走”的发展战略,前我们正处于哪个阶段?

{{ select(2) }}

  • 发射载人飞船,建成初步配套的试验性载人飞船工程,开展空间应用实验。
  • 突破航天员出舱活动技术、空间飞行器交会对接技术,发射空间实验室,解决有一定规模的、短期有人照料的空间应用问题。
  • 建造空间站,解决有较大规模的、长期有人照料的空间应用问题。
  • 建造月球科研试验站,开展系统、连续的月球探测和相关技术试验验证。

3、以下和计算机领域密切相关的奖项是?

{{ select(3) }}

  • 奥斯卡奖
  • 图灵奖
  • 诺贝尔奖
  • 普利策奖

4、以下运算符中,优先级最高的是?

{{ select(4) }}

  • *=
  • ++
  • &&
  • >=

5、局域网的英文缩写?

{{ select(5) }}

  • LAN
  • WAN
  • MAN
  • LNA

6、以下变量命名不符合规范的是?

{{ select(6) }}

  • _boy
  • char
  • my_name
  • text2

7、在 C++中使用流进行输入输出,其中用于屏幕输出的对象是

{{ select(7) }}

  • cerr
  • cin
  • cout
  • cfile

8、已知: double a=123.4; int b=a*10; double c=b/10; 则执行语句: cout<<c<<endl; 后输出在屏幕的值为

{{ select(8) }}

  • 123.4123.4
  • 123.4000000123.4000000
  • 123123
  • 123.000000123.000000

9、在下列字符中,其 ASCII码值最大的一个是

{{ select(9) }}

  • 8
  • m
  • g
  • G

10、一个 32 位整型变量占用的字节数是

{{ select(10) }}

  • 4
  • 8
  • 32
  • 128

11、C++语言中函数返回值的类型是由什么决定的?

{{ select(11) }}

  • 定义函数时所指定的函数类型
  • 调用该函数的主调函数类型
  • return 语句中的表达式类型
  • 传递给函数的实参类型

12、设 int a=12;,则执行完语句 a+=a*a; 后,a 的值是

{{ select(12) }}

  • 1212
  • 144144
  • 156156
  • 288288

13、在下面的一维数组定义中,哪一个有语法错误。

{{ select(13) }}

  • int a[]={1,2,3};
  • int a[10]={0};
  • int a[5];
  • int a[];

14、二进制数 111101 转换成十进制是多少?

{{ select(14) }}

  • 6262
  • 6363
  • 6060
  • 6161

15、原码、反码和补码是计算机中用来表示带符号整数的三种编码方式,它们在计算机内部的运算和表示过程中发挥重要作用。对于 88 位二进制来说,7-7 的补码是

{{ select(15) }}

  • 1000011110000111
  • 1111100111111001
  • 0000011100000111
  • 0111100101111001

16、在 C++程序中,3%5 的运算结果是?

{{ select(16) }}

  • 33
  • 2-2
  • 22
  • 3-3

17、设变量 int b,a=5; 下列哪个表达式计算后,使得变量 b 的值等于 22

{{ select(17) }}

  • b=a/2
  • b=6-(a--)
  • b=a%2
  • b=a>3?3:2

18、253253299299 的最大公约数是

{{ select(18) }}

  • 1111
  • 1313
  • 2323
  • 2424

19、在 C++语言中,运行以下代码后,变量 i 的最终值是

int i=0;
while(i<=5){
    cout << i;
    i++;
}

{{ select(19) }}

  • 55
  • 00
  • 11
  • 66

20、执行如下程序,正确的说法是?

int x;
for(int i=1; i<=100; i++){
    cin >> x;
    if(x<0) continue;
    cout << i;
}

{{ select(20) }}

  • x<0 时整个循环结束
  • x>=0 时,此次循环无输出
  • cout 语句永远也不执行
  • 最多输出 100100 个非负整数

二、填空题(只填答案对应的数值或单词,不要加任何修饰性的量词)

21、十进制数 10081008 转换成八进制数为?

你的答案:{{ input(21) }}


22、已知主函数中 bool P,Q,且 bool st = (!P || !Q) && P && Q,无论P和Q为何初值(保证合法),在执行 cout<<st; 语句后,屏幕上输出的结果是

你的答案:{{ input(22) }}


23、C++中当一个函数无返回值时,则该函数应声明为什么类型。

你的答案:{{ input(23) }}


24、若有 int a[10]={1,2,3,4,5,6,7,8,9,10};,则 a[a[1]+2*a[2]] 的值是

你的答案:{{ input(24) }}


25、对于递推公式:F(n)=F(n1)+3F(n)=F(n-1)+3,已知 F(1)=2F(1)=2,求 F(5)F(5) 的值是

你的答案:{{ input(25) }}


26、执行以下程序输出的结果是?

int i,s=0;
for(i=1; i<20; i+=3) s+=i;
cout<<s;

你的答案:{{ input(26) }}


27、执行以下程序输出的结果是?

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) }}


28、两个整数的最小公倍数是 19251925,这两个整数分别除以它们的最大公约数,得到两个商的和是 1616,这两个整数分别是 ? (注:较小的数写在前)。

你的答案:{{ input(28) }}


29、77 人排成一排照相,若要求甲、乙、丙三人不相邻,有几种不同的排法?

你的答案:{{ input(29) }}


30、99 名乒乓球运动员,其中男 55 名,女 44 名,现在要选出 44 人分成两组进行混合双打训练,有几种不同的分组方法?

你的答案:{{ input(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 1 1 1 {{ input(31) }}
2 2 0 4 {{ input(32) }}
3 10 15 3 {{ input(33) }}

程序二

#include<iostream>
#include<string>
using namespace std;

int main(){
    string num_list="11223344555666777888999000";
    string message;
    cin>>message;
    for(int i=0;i<message.length();i++)
        if((message[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 AK {{ input(34) }}
2 CODE {{ input(35) }}
3 XM_2023 {{ input(36) }}
4 LOVEC++1024 {{ 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 5 {{ input(38) }}
2 6 {{ input(39) }}
3 9 {{ input(40) }}

四、完善程序

给出 $n,m,k(1 \le n,m\le 5\times 10^5, 1\le k\le n\times m)$,请输出在 n×mn\times m 的乘法表中第 kk小的数。即,给出一个 f[i][j]=i×j(1in,1jm)f[i][j]=i\times j (1\le i \le n,1 \le j \le m) 的数组,输出该数组内所有数(包含重复的)从小到大排序后第 kk 大的数。

5 5 10
5

样例解释: 此样例对应的乘法表如下:

1  2  3  4  5
2  4  6  8 10
3  6  9 12 15
4  8 12 16 20
5 10 15 20 25

程序代码:

#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+= ___【①】___;
    return ___【②】___;
}

int main(){
    scanf("%lld%lld%lld",&n, &m, &k);
    long long temp = ___【③】___;
    long long L=l, R=temp;

    while(L<R){
        long long mid = ___【④】___;
        if(check(mid)) R = mid;
        else L = ___【⑤】___;
    }

    printf("%lld", L);
    return 0;
}

41、第 ① 空应填

{{ select(41) }}

  • min(n, x/i)
  • min(m, x/i)
  • max(n, x/i)
  • max(m, x/i)

42、第 ② 空应填

{{ select(42) }}

  • sum<k
  • sum<=k
  • sum>k
  • sum>=k

43、第 ③ 空应填

{{ select(43) }}

  • n
  • k
  • n+m
  • n*m

44、第 ④ 空应填

{{ select(44) }}

  • (R+L)/2
  • (R+L+1)/2
  • (R-L)/2
  • (R-L-1)/2

45、第 ⑤ 空应填

{{ select(45) }}

  • L+1
  • mid-1
  • mid+1
  • mid