#10811. 2025年厦门市小学生计算机C++语言竞赛(初赛)试卷

2025年厦门市小学生计算机C++语言竞赛(初赛)试卷

参赛须知

  1. 本竞赛用时为90分钟。

  2. 答案依【】框中所示标号填写在答题卷上,考试结束时只交答题卷。

  3. 本卷共三大题,45小题,满分100分。

一、单项选择题(每题2分,共60分)

1、DeepSeek是一家专注于通用人工智能(AGI)与大型语言模型(LLM)的创新型科技公司,其创始人和首席执行官为梁文锋,他的本科及研究生阶段均就读于浙江大学信息与电子工程学系。2008年起,他带领团队探索机器学习等技术在全自动量化交易中的应用,2015年创立幻方量化,2023年又创立DeepSeek,投身于人工智能领域。关于DeepSeek2025年的重要动态,下列描述正确的是(【1】) {{ select(1) }}

  • 2025年1月发布的DeepSeek-R1模型为闭源模型,支持商业使用
  • DeepSeek-R1-0528版本在中文理解测试SuperCLUE中得分超GPT-4-Turbo
  • 2025年春节期间,其应用仅在国内应用商店登顶,未进入国际市场
  • 与华为云的合作主要聚焦于手机端模型优化,未涉及算力支持

2、宇树科技(Unitree)是中国领先的民用机器人企业,成立于2016年,专注于足式机器人及人形机器人的研发与产业化,凭借全自研核心零部件和运动控制算法,在全球足式机器人市场占据重要地位,其产品多次亮相春晚、CES等国内外重大场合。关于中国机器人企业宇树科技创始人的相关信息,下列描述正确的是(【2】) {{ select(2) }}

  • 宇树科技的创始人是王兴兴,其创业初衷是解决工业机器人成本过高的问题
  • 创始人曾在华为消费电子事业部任职,负责智能硬件开发,离职后转向机器人研发
  • 创始人主导研发的首款产品是双足机器人"Unitree H1",直接面向消费市场
  • 创始人在大学期间就开始研发四足机器人,相关成果为后续创业奠定基础

3、2025世界人形机器人运动会是全球首个聚焦人形机器人的综合性竞技赛事,吸引了16个国家的280支队伍参赛,赛事覆盖田径、舞蹈、足球及工业场景应用等多个项目。比赛期间,参赛机器人在标志性场馆内完成了1500米竞速、原地跳高世界纪录挑战及5V5足球赛等精彩赛事。以下关于该运动会举办地的描述,正确的是(【3】) {{ select(3) }}

  • 在法国巴黎的法兰西体育场和王子公园球场举办
  • 在日本东京的新国立竞技场和东京体育馆举办
  • 在中国北京的国家体育场(鸟巢)和国家速滑馆(冰丝带)举办
  • 在德国慕尼黑的安联球场和慕尼黑奥林匹克体育馆举办

4、有一位猎人带着一只羊、一头狼和一筐白菜过河。河边有一条小船,但船太小,每次猎人只能载狼、羊和白菜三者中的一个过河。猎人不在旁边时,狼会吃羊,羊会吃白菜。请问:猎人把狼、羊、白菜都安全运过河的最少的运法是渡河(【4】)次(过河和返回各计作一次)。 {{ select(4) }}

  • 5
  • 6
  • 9
  • 7

5、对序列[5,2,4,1]进行冒泡排序(从小到大),完成排序过程中共发生(【5】)次元素交换。 {{ select(5) }}

  • 3
  • 5
  • 4
  • 2

6、 下列关于计算机发展史上关键成果的描述,正确的是(【6】) {{ select(6) }}

  • 世界上第一台电子计算机ENIAC首次实现了"存储程序"功能
  • 冯·诺依曼体系结构的核心是将程序和数据以同等地位存储在计算机中
  • 早期计算机使用的电子管元件,相比后来的晶体管,具有体积小、功耗低的特点
  • 第一台商用计算机UNIVAC的主要用途是进行复杂的科学计算

7、古埃及采用"十进制累加计数法",使用特殊符号表示不同量级:"丨"代表1,"∩"代表10,"⊕"代表100,"□"代表1000;计数时,相同量级的符号并列累加(如30表示为"∩∩∩"),不同量级从左到右按"千→百→十→个"排列。则符号组合"□⊕⊕∩∩∩丨丨"对应的十六进制数是(【7】) {{ select(7) }}

  • 4D0
  • 4D2
  • 5E0
  • 5E2

8、某编码系统采用双字节编码(每个字符用2个字节表示),每个字节由8位二进制组成,且规定:第1个字节的最高位为0时表示大写字母,为1时表示小写字母;第2个字节用于区分具体字符,其中大写字母"A"对应"00000001","B"对应"00000010",...,依次递增;小写字母"a"对应"00000001","b"对应"00000010",...,依次递增。则编码"01000001 00010100"对应的字符是(【8】) {{ select(8) }}

  • T
  • t
  • S
  • s

9、某智能设备的存储空间以十六进制数"40"表示剩余容量(单位:字节),若需将其转换为十进制的"KB"单位,则下列结果正确的是(【9】) {{ select(9) }}

  • 0.0625KB
  • 0.07825KB
  • 0.0585KB
  • 0.0468KB

10、 下列文件操作中,不能通过文件扩展名直接判断可行性的是(【10】)。 {{ select(10) }}

  • 用图像软件打开".png"文件
  • 用视频软件播放".avi"文件
  • 用文档软件编辑".zip"文件
  • 用代码编辑器打开".py"文件

11、 在C++中,int类型变量占用4字节,若定义一个二维数组int arr[m][n],且数组占用的存储空间不超过2MB,则m×n的最大值可能是(【11】) {{ select(11) }}

  • 5×1045×10^4
  • 5×1055×10^5
  • 5×1065×10^6
  • 5×1075×10^7

12、字符串"banana"中,所有长度为3且包含字符"n"的连续子串有(【12】)个。 {{ select(12) }}

  • 2
  • 3
  • 5
  • 4

13、 一个三位数,除以7余3,除以8余4,除以9余5,这个数最小是(【13】) {{ select(13) }}

  • 516
  • 508
  • 500
  • 524

14、计算机执行程序时,数据从硬盘加载到内存,再从内存加载到CPU寄存器,这一过程体现了存储体系的(【14】)特性。 {{ select(14) }}

  • 速度递增,容量递减
  • 速度递减,容量递增
  • 速度和容量均递增
  • 速度和容量均递减

15、 若a=7,b=3,c=5,则表达式(a%b == c/b) ? (a-c) : (b*c)的值是(【15】) {{ select(15) }}

  • 2
  • 5
  • 12
  • 15

16、 下列关于C++语言中全局变量与局部变量的说法,正确的是(【16】) {{ select(16) }}

  • 全局变量必须定义在所有函数的外面;局部变量不能定义在循环语句里
  • 局部变量若未初始化,其值为0;全局变量若未初始化,其值为随机数
  • 函数内部定义的局部变量与全局变量同名时,在该函数内访问的是局部变量
  • 局部变量的生命周期与程序运行周期一致,全局变量仅在定义它的函数执行时存在

17、 下列关于C++函数参数传递的说法中,正确的是(【17】) {{ select(17) }}

  • 按值传递时,函数内部修改参数值会影响实参
  • 按引用传递时,函数参数是实参的别名,修改参数会直接影响实参
  • 函数参数只能通过"按值传递"或"按引用传递"两种方式传递
  • 按值传递时,实参和形参占用相同的内存空间

18、一幅分辨率为800×600的16色图像(每个像素用4位表示),经压缩比为5:1的算法压缩后,存储该图像需要的空间约为(【18】) {{ select(18) }}

  • 46.875KB
  • 93.75KB
  • 187.5KB
  • 375KB

19、某局域网使用子网掩码255.255.0.0,下列IP地址中与172.16.5.8属于同一网段的是(【19】) {{ select(19) }}

  • 172.15.5.8
  • 172.16.5.256
  • 173.16.5.8
  • 172.16.6.9

20、若8位有符号整数x的补码为11100110(二进制),8位有符号整数y的补码为11110010(二进制),则x+y的十进制值是(【20】) {{ select(20) }}

  • -48
  • -40
  • -32
  • -24

21、 已知A=0,B=1,C=1,则表达式(¬A∧B)∨(A∨C)∧(¬B∧C)的结果是(【21】) {{ select(21) }}

  • 0
  • 1
  • 无法确定
  • 取决于运算顺序

22、 ~((a&b)|~(a^b))的结果等价于a与b进行(【22】)运算 {{ select(22) }}

  • 按位与
  • 按位或
  • 按位非
  • 按位异或

23、 如果没有在代码开头声明"using namespace std",那么当我们要使用cout函数输出字符串"123"的时候,下面哪种用法是正确的(【23】) {{ select(23) }}

  • std:cout < "123";
  • std::cout << "123";
  • std->cout < "123";
  • std.cout << "123";

24、 对于数组int a[10]={3,1,4,1,5,9,2,6,5,3},a[a[(a[5]+a[8])/2]]的结果是(【24】) {{ select(24) }}

  • 1
  • 2
  • 4
  • 5

25、 对于sort的使用,以下哪些是正确的(【25】)

① sort(a[0], a[n])

② sort(a, a+n)

③ sort(&a[0], &a[n])

④ sort(arr.begin(a), arr.end(a)) {{ select(25) }}

  • ①③
  • ①④
  • ②③
  • ②④

26、 运行以下程序,输出结果是(【26】)

int a = 3;
int b = 4;
a = b * (b = 3*a - b);
cout << a;

{{ select(26) }}

  • 25
  • 20
  • 16
  • 没有结果,会编译错误

27、 以下三个程序运行后,输出s的值(【27】)

①//程序1
int i=0, s=0;
while (i <= 5) {
    i++;
    s += i;
}
②//程序2
int i=0, s=0;
while (i <= 5) {
    s += i;
    i++;
}
③//程序3
int i=0, s=0;
do {
    i++;
    s += i;
} while (i < 5);

{{ select(27) }}

  • ①②③都不同
  • ①跟②不同,跟③相同
  • ①跟②相同,跟③不同
  • ①跟②不同,跟③不同

28、一个正整数数列中的若干(至少为2)整体互质元素组成的集合,我们称之为"互质子集",而其中元素数量最小的子集被称为"最小互质子集","最小互质子集"的元素个数被称为这个数组的"最小互质阶"。(注:若干个数整体互质就是指这些数的最大公约数为1)显然,一个数列的互质子集不一定存在,此时我们定义这个数列的最小互质阶为0。提问:下面的四个选项中,哪个数列的最小互质阶最大(【28】) {{ select(28) }}

  • 1, 2, 3, 4, 5, 6
  • 2, 4, 6, 8, 10, 12
  • 6、10、12、15、20、30
  • 10、14、20、21、28、35

29、有12块巧克力,要分给5个小朋友(允许有小朋友分不到巧克力),有多少种可能的分配方案(【29】) {{ select(29) }}

  • 5125^{12}
  • 1365
  • 792
  • 1820

30、有1~9九张牌组成的从上到下的牌堆,我们进行如下游戏:连续从牌堆最上方按顺序抽牌直到抽出2次大于6的数,此时抽出牌的张数就是你的得分。对于牌堆所有可能的排列情况,你的平均得分是多少(【30】) {{ select(30) }}

  • 4
  • 4.5
  • 5
  • 6

二、阅读程序填写结果(31~40每题3分,共30分)

程序一

#include<bits/stdc++.h
using namespace std;
int main() {
    int n, m=3, s=0;
    scanf("%d", &n);
    for (int i=2; i<=n; i++)
        s = (s + m) % i;
    printf("%d\n", s + 1);
    return 0;
}

31、 输入3,请选出正确输出(【31】) {{ select(31) }}

  • 0
  • 1
  • 2
  • 3

32、 输入4,请选出正确输出(【32】) {{ select(32) }}

  • 1
  • 2
  • 3
  • 4

33、 输入20,请选出正确输出(【33】) {{ select(33) }}

  • 18
  • 22
  • 25
  • 20

程序二

#include<bits/stdc++.h
using namespace std;
int main() {
    string s;
    cin  s;
    for (int i=0;i<s.length();i++) {
        if(s[i] = 'a' && s[i] <= 'z') {
            if (s[i] + 3  'z') {
                s[i] = s[i] + 'A' - 'a' + 3 - 26;
            } else {
                s[i] = s[i] + 'A' - 'a' + 3;
            }
        } else if (s[i] = '0' && s[i] <= '9') {
            if (s[i] + 3  '9') {
                s[i] = s[i] + 3 - 10;
            } else {
                s[i] = s[i] + 3;
            }
        }
        cout << s[i];
    }
    return 0;
}

34、 输入"2025c++",请选出正确的输出(【34】) {{ select(34) }}

  • 5358F++
  • 4247E++
  • 5358E--
  • 4247F--

35、 输入"Hello!",请选出正确的输出(【35】) {{ select(35) }}

  • GGPPS~
  • GGPPS!
  • HHOOR~
  • HHOOR!

36、 输入"China_76",请选出正确的输出(【36】) {{ select(36) }}

  • FKLQD_09
  • FJKOC_21
  • CKLQD_09
  • CKLQD_21

程序三

#include<bits/stdc++.h
using namespace std;
int fun2(int num) {
    if (num <= 1) return num;
    return fun2(num-1) + num;
}
int fun(int num) {
    if (num <= 1) return num;
    int ans = num - fun(num-1) + fun2(num-2);
    return ans;
}
int main() {
    int n;
    cin  n;
    cout << fun(n) << endl;
    return 0;
}

37、 输入1,请选择正确的输出(【37】) {{ select(37) }}

  • 1
  • 2
  • 3
  • 0

38、 输入3,请选择正确的输出(【38】) {{ select(38) }}

  • 2
  • 3
  • 4
  • 5

39、 输入5,请选择正确的输出(【39】) {{ select(39) }}

  • 3
  • 5
  • 7
  • 9

40、 输入9,请选择正确的输出(【40】) {{ select(40) }}

  • 12
  • 15
  • 21
  • 18

三、完善程序(选择正确的选项填充程序空白部分,41~45每题2分,共10分)

问题描述

对于给定的一个长度为N的正整数数列A₁~Aₙ,现要将其分成M(M≤N)段,并要求每段连续,且每段和的最大值最小。

例如,把以下长度为5的数列分成3段:4 2 4 5 1

一种分法是:[4 2][4 5][1],每段和分别为6、9、1,最大值为9

另一种分法可以是:[4 2][4][5 1],每段和分别为6、4、6,最大值为6

可以发现第二种方案是最大值最小的方案

#include<bits/stdc++.h
using namespace std;
int n, m, a[100005], ans;
bool check(int x) {
    int tot = 0, num = ①; // 第1空
    for (int i=1; i<=n; i++) {
        if (②) { // 第2空
            tot += a[i];
        } else {
            ③; // 第3空
            num++;
        }
    }
    return num  m;
}
int main() {
    int l=0, r=0;
    scanf("%d%d", &n, &m);
    for (int i=1; i<=n; i++) {
        scanf("%d", &a[i]);
        l = max(l, a[i]);
        r += a[i];
    }
    while (④) { // 第4空
        int mid = ⑤; // 第5空
        if (check(mid)) l = mid + 1;
        else r = mid;
    }
    cout << l;
    return 0;
}

41、 第1空应填写?(【41】) {{ select(41) }}

  • 0
  • 1
  • n-1
  • n

42、 第2空应填写?(【42】) {{ select(42) }}

  • tot <= x - a[i]
  • tot >= x - a[i]
  • tot <= x + a[i]
  • tot >= x + a[i]

43、 第3空应填写?(【43】) {{ select(43) }}

  • tot = 0
  • tot += a[i]
  • tot -= a[i]
  • tot = a[i]

44、 第4空应填写?(【44】) {{ select(44) }}

  • l > r
  • l >= r
  • l < r
  • l <= r

45、 第5空应填写?(【45】) {{ select(45) }}

  • (l + r) / 2
  • (l + r + 1) / 2
  • (r - l) / 2
  • (r - l - 1) / 2