1 条题解

  • 0
    @ 2026-5-22 14:05:50

    《星火征途》初赛模拟卷七(小学组)

    一、单选题(每题5分,共75分)


    1. 在模拟抗日战争中英雄传递情报的编程任务中,执行以下程序段,输出的结果是( A

    for (int j=1;j<=6;j++){
        if(j%3==0)
            break;
        cout <<j <<" ";
    }
    

    【答案:A】

    • A. 1 2 ✅ 正确!循环中 j 从 1 递增到 6,当 j % 3 == 0 时触发 break。j=1 时 1%3≠0,输出 1;j=2 时 2%3≠0,输出 2;j=3 时 3%3==0,break 终止循环。最终输出 "1 2"
    • B. 1 2 3 ❌ j=3 时 break 已触发,不会输出 3
    • C. 1 2 3 4 5 6 ❌ break 在 j=3 时已终止循环,不会继续输出
    • D. 1 2 4 5 6 ❌ break 不是 continue,不会跳过 3 继续,而是直接结束循环

    2. 在长征途中,红军需要设定一个不可更改的行军目标距离。下列哪个是C++中定义这种常量的正确方式?( B

    【答案:B】

    • A. #define int MAX 100#define 宏定义不需要指定类型,正确的写法是 #define MAX 100
    • B. const int MAX=100; ✅ 正确!const 关键字用于定义不可修改的常量,是 C++ 中定义常量的标准方式
    • C. static const int MAX=100; ❌ 语法上可行但过于复杂,static 用于控制存储周期而非定义常量,普通场景用 const 即可
    • D. int MAX=100; ❌ 普通变量,值可以被修改,不符合"不可更改"的要求

    3. 在编写《小英雄雨来》故事模拟程序时,需要使用字符常量表示不同角色编号。常量 '3' 用于表示一个角色。这个常量的数据类型是( C )。

    【答案:C】

    • A. double ❌ double 是双精度浮点类型,字符常量不是 double
    • B. float ❌ float 是单精度浮点类型,字符常量不是 float
    • C. char ✅ 正确!单引号 '3' 包围的是字符常量,C++ 中字符常量的类型为 char
    • D. int ❌ 虽然字符在底层以 ASCII 码存储,但其类型是 char 而非 int;双引号 "3" 才是字符串

    4. 在《小英雄雨来》的故事中,为了编写一个密码程序,需要判断一个整数是否为质数。质数是只能被1和它本身整除的数。在横线处应填入的代码是( B )。

    int N;
    cin >> N;
    int cnt = 0;
    for(int i=1; i<N+1; i++)
        if(__________)
            cnt +=1;
    if(cnt == 2)
        cout << N << "是质数";
    else
        cout << N << "不是质数";
    

    【答案:B】

    • A. N % iN % i 返回余数(非零即真),但条件判断需要明确比较,且质数判断需要余数为 0 时才计数,逻辑反了
    • B. N % i == 0 ✅ 正确!当 i 能整除 N(余数为 0)时,说明 i 是 N 的一个因数,cnt 加 1。最终若 cnt == 2(只有 1 和 N 本身两个因数),则 N 是质数
    • C. N / i=0= 是赋值运算符而非比较运算符,N / i=0 会编译错误(不能给表达式赋值)
    • D. N / iN / i 返回除法商值,无法用于判断整除关系;且 N>i 时结果非 0 恒为真,会导致每个 i 都计数

    5. 在《小英雄雨来》的故事中,雨来需要测量一块长方形菜地的边界长度。如果用两个 int 类型的变量 a 和 b 分别表示长和宽,下列哪个表达式不能用来计算周长?( A

    【答案:A】

    • A. a+b*2 ❌ 错误!由于运算符优先级,* 高于 +,因此 a+b*2 等价于 a + (b*2) = a + 2b,不是周长 2a+2b
    • B. 2*a+2*b ✅ 正确!标准周长公式 2a + 2b,结果正确
    • C. a+b+a+b ✅ 正确!长+宽+长+宽,结果正确
    • D. b+a*2+b ✅ 这个也能正确计算!a*2 优先计算得 2a,然后 b + 2a + b = 2a + 2b,结果正确。注意本题选"不能"的选项,A 不能而 D 可以

    补充说明:选项 D b+a*2+b 虽然看起来不直观,但由于运算符优先级,a*2 先计算,等价于 b + 2a + b = 2a + 2b,能正确计算周长。


    6. 在《狼牙山五壮士》故事的算法模拟中,下列关于算法的叙述不正确的是( B

    【答案:B】

    • A. 算法的每一步必须没有歧义,不能有半点含糊 ✅ 正确!确定性(Determinism)是算法的基本特征之一,每一步操作都必须明确无歧义
    • B. 算法必须有输入 ❌ 错误!算法可以没有输入(零个输入),例如输出当前时间的算法不需要任何输入参数
    • C. 同一问题可能存在多种不同的算法 ✅ 正确!例如排序问题有冒泡排序、快速排序、归并排序等多种算法
    • D. 同一算法可以用多种不同的形式来描述 ✅ 正确!同一算法可以用自然语言、流程图、伪代码、编程语言等多种方式描述

    7. 在传承井冈山精神的编程任务中,需要计算正方形纪念广场的周长。int 类型变量 a 表示边长,下列哪个语句执行后能够使周长增加4?( D

    【答案:D】

    • A. a*4; ❌ 该表达式计算结果被丢弃,没有修改 a 的值,周长不变
    • B. a+4; ❌ 该表达式计算结果被丢弃,没有修改 a 的值,周长不变
    • C. a+1; ❌ 该表达式计算结果被丢弃,没有修改 a 的值,周长不变
    • D. ++a; ✅ 正确!++a 将 a 的值增加 1(边长增加 1),正方形周长 = 4 × a,因此周长增加 4 × 1 = 4

    8. 在模拟长征路线的程序中,需要定义变量记录行进信息。以下不可以作为C++变量名(标识符)的是( B

    【答案:B】

    • A. x321 ✅ 正确!字母开头后跟数字,合法标识符
    • B. 0x321 ❌ 错误!以数字 0 开头,C++ 标识符不能以数字开头。此外 0x 前缀还会被误认为十六进制常量
    • C. x321_ ✅ 正确!字母开头后跟数字和下划线,合法标识符
    • D. _x321 ✅ 正确!下划线开头后跟字母和数字,合法标识符(虽然通常不推荐以下划线开头)

    9. 在模拟红军长征的编程任务中,有一段代码用于计算每日行军里程,输出为"1248"。横线处应填写哪一条语句?( B

    #include <iostream>
    using namespace std;
    int main(){
        for(int i=1;i<=8;________)
            cout <<i;
        return 0;
    }
    

    【答案:B】

    • A. i++ ❌ i 每次加 1,输出为 "12345678",不是 "1248"
    • B. i *= 2 ✅ 正确!i 依次为 1、2、4、8,输出 "1248"。流程:i=1 输出 1 → i*=2=2 输出 2 → i*=2=4 输出 4 → i*=2=8 输出 8 → i*=2=16 > 8 结束
    • C. i += 2 ❌ i 每次加 2,输出为 "1357",不是 "1248"
    • D. i * 2 ❌ 表达式计算结果未被赋值给 i,i 不变(恒为 1),导致死循环输出无数个 1

    10. 在《狼牙山五壮士》红色教育程序中,屏幕输出 n+1 行直角三角形图案。输入正整数 n,输出对应图案,则①处应补充的代码为?( B

    int n;
    cin>>n;
    cout<<"*"<<endl;
    for (int i=1;i<=n;i++){
        for (int j=1;________;j++){
            cout<<"*";
        }
        cout <<endl;
    }
    

    【答案:B】

    • A. j <= 2 * i ❌ 每行输出 2i 个星号,行数增长过快,不符合标准直角三角形规律
    • B. j <= i ✅ 正确!第 1 行(循环前)输出 1 个星号;第 2 行(i=1)输出 1 个星号;第 3 行(i=2)输出 2 个星号;以此类推,形成直角三角形图案。总行数为 n+1 行
    • C. j<=2 * i-1 ❌ 每行输出 2i-1 个星号(奇数序列),形成的是等边三角形而非直角三角形
    • D. j<=2 * i+1 ❌ 每行输出 2i+1 个星号,行数增长过快

    11. 在抗日战争时期,地下党用一段字符密语传递情报。若定义 char a[10] = "word";,则数组 a 在内存中所占字节数(char 为1字节)是多少?( C

    【答案:C】

    • A. 4 ❌ 4 是字符串 "word" 的长度(不含结尾符),不是数组的占用空间
    • B. 5 ❌ 5 是字符串 "word" 加上结尾符 \0 的长度,不是数组的占用空间
    • C. 10 ✅ 正确!数组 a[10] 声明了 10 个 char 类型的元素,每个 char 占 1 字节,总共占用 10 字节。即使只初始化了 4 个字符,数组的大小仍然是 10
    • D. 不定值 ❌ 数组大小在声明时已确定为 10,是固定值

    12. 在《小英雄雨来》的故事中,雨来用程序记录村中物资数量。下面C++代码执行后的输出是( C )。

    int N=10;
    int cnt = 0;
    while (1){
        if(N == 0) break;
        cnt += 1;
        N -=2;
    }
    cout << cnt;
    

    【答案:C】

    • A. 11 ❌ N 从 10 开始每次减 2,需要减 5 次才到 0,cnt 应为 5
    • B. 10 ❌ 每次循环 N 减小 2,N=10 时需要 5 轮循环到 0,cnt=5
    • C. 5 ✅ 正确!循环过程:N=10 → cnt=1,N=8 → cnt=2,N=6 → cnt=3,N=4 → cnt=4,N=2 → cnt=5,N=0 → break,输出 cnt=5
    • D. 4 ❌ 当 N=10 时,需要 10÷2=5 次减法才能到 0,cnt 最终为 5,不是 4

    13. 在长征途中,红军需要判断物资数量 N 是否能平均分配。下面程序用于判断 N 是否为偶数,横线处应填写的代码是( A )。

    cin >> N;
    if(________)
        cout <<"偶数";
    else
        cout <<"奇数";
    

    【答案:A】

    • A. N % 2 == 0 ✅ 正确!当 N 除以 2 的余数为 0 时,N 为偶数,输出"偶数";否则为奇数,输出"奇数"
    • B. N % 2 = 0= 是赋值运算符而非比较运算符,N % 2 = 0 会编译错误(不能给右值赋值)
    • C. N % 2 ❌ N 为偶数时 N % 2 = 0(假),会输出"奇数";N 为奇数时 N % 2 = 1(真),会输出"偶数",逻辑正好相反
    • D. N % 2 != 0 ❌ 这恰好是奇数的判断条件,应该输出"奇数",但代码中该分支输出的是"偶数",逻辑错误

    14. 在纪念英雄黄继光的编程任务中,程序判断物资箱数是否能整除3。下面C++代码执行时输入10后,正确的输出是( C )。

    int N;
    cout << "请输入正整数:";
    cin >> N;
    if (N % 3)
        printf("第5行代码%2d", N % 3);
    else
        printf("第6行代码%2d", N % 3);
    

    【答案:C】

    • A. 第5行代码1%2d 格式化输出会右对齐占 2 位,1 前面有一个空格,所以输出为"第5行代码 1"而非"第5行代码1"
    • B. 第6行代码1 ❌ 输入 10 时,10 % 3 = 1 为非零值(真),执行 if 分支(第5行),不执行 else 分支(第6行)
    • C. 第5行代码 1 ✅ 正确!输入 10,10 % 3 = 1(真),执行 printf("第5行代码%2d", 1)%2d 将 1 右对齐占 2 位输出为" 1",结果为"第5行代码 1"
    • D. 第6行代码 1 ❌ 两个错误:1)分支错误,应执行第5行;2)即使执行第6行,%2d 也会输出" 1"而非"1"

    15. 在讲述《小英雄雨来》的程序中,要求将输入的字符串中前三个大写字母转换为小写,其余字母保持不变。输入:ABCdef,输出应为( D

    char ch;
    while ((ch = getchar ())!= '\n'){
        if (ch >= 'A' && ch <='Z')
            ch = ch + 32;
        else if (ch >= 'a' && ch <='z')
            ch = ch -32;
        cout << ch;
    }
    

    【答案:D】

    • A. ABCdef ❌ 代码执行后所有字符都会发生大小写转换,不会是原样输出
    • B. abcdef ❌ A→a, B→b, C→c 正确,但 d→D, e→E, f→F(小写转大写),结果应为 abcDEF
    • C. ABCDEF ❌ A→a(大写转小写),不是保持大写
    • D. abcDEF ✅ 正确!逐个字符处理:A(大写)→a (A+32);B(大写)→b (B+32);C(大写)→c (C+32);d(小写)→D (d-32);e(小写)→E (e-32);f(小写)→F (f-32)。最终输出 "abcDEF"

    ⚠️ 注意:题目描述说"前三个大写字母转换为小写,其余字母保持不变",但实际代码对所有字母都做了大小写转换(大写变小写,小写变大写),因此实际输出为 abcDEF


    二、判断题(每题5分,共25分)


    16. 在模拟红军长征翻越雪山的程序中,使用 while 循环判断海拔是否安全。如果初始海拔超过危险值,循环条件不成立,循环体将不会被执行。这个说法对吗?( ✓ 正确

    【答案:正确 ✓】 解析:

    • while 循环的特点是先判断条件,后执行循环体
    • 如果初始条件为 false,循环体一次都不会执行
    • 例如:while (altitude < danger) 中,若初始 altitude = 5000、danger = 3000,则条件 5000 < 3000 为 false,循环体直接跳过
    • 这与 do-while 循环不同(do-while 至少执行一次循环体)
    • 因此该说法正确 ✓

    17. 在模拟红军长征路线选择的程序中,if 语句用于判断是否到达目的地,其条件表达式的结果必须为 bool 类型。( ✗ 错误

    【答案:错误 ✗】 解析:

    • 在 C++ 中,if 语句的条件表达式不要求必须是 bool 类型
    • 任何可以隐式转换为 bool 的类型都可以:整型(0 为 false,非 0 为 true)、指针(nullptr 为 false,非空为 true)、浮点型等
    • 例如:if (5) 是合法的,5 作为非零值被视为 true
    • 但 C 语言中也是如此,C++ 继承了这一特性
    • 因此"必须为 bool 类型"的说法是错误的 ✗

    18. 在讲述黄继光英勇事迹的程序中,模拟冲锋次数。以下程序段中,循环体的循环次数为4次。( ✓ 正确

    int i= 0;
    do{
        i++;
    }while(i*i<10);
    

    【答案:正确 ✓】 解析:

    • do-while 循环至少执行一次循环体
    • 执行过程:
      • 第 1 次:i=0 → i++ → i=1,判断 1*1=1<10,继续
      • 第 2 次:i=1 → i++ → i=2,判断 2*2=4<10,继续
      • 第 3 次:i=2 → i++ → i=3,判断 3*3=9<10,继续
      • 第 4 次:i=3 → i++ → i=4,判断 4*4=16>=10,结束
    • 共执行 4 次循环体 ✓

    19. 在延安时期,广播设备通过输入关键词播放红色故事,说明该设备中可能运行了交互式程序。( ✓ 正确

    【答案:正确 ✓】 解析:

    • 交互式程序是指能够接收用户输入并做出响应的程序
    • 广播设备能够"输入关键词播放红色故事",说明它接收了用户输入(关键词),并根据输入给出反馈(播放对应故事)
    • 这完全符合交互式程序的定义:输入 → 处理 → 输出
    • 因此该说法正确 ✓

    20. 在模拟董存瑞炸碉堡的红色教育程序中,每前进3步标记一次位置。下面C++代码执行后,最后一次标记的位置是10。( ✗ 错误

    for (int i = 1; i < 10; i+=3)
        cout << i << endl;
    

    【答案:错误 ✗】 解析:

    • 循环执行过程:
      • i=1:输出 1,i+=3 → i=4
      • i=4:输出 4,i+=3 → i=7
      • i=7:输出 7,i+=3 → i=10
      • i=10:10 < 10 为 false,循环结束
    • 输出位置依次为:1、4、7
    • 最后一次标记的位置是 7,不是 10
    • 因此说法错误 ✗
    • 1

    信息

    ID
    4882
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    19
    已通过
    7
    上传者