#1632. 信息素养大赛——中学组模拟卷 2

信息素养大赛——中学组模拟卷 2

信息素养大赛——中学组模拟卷 2

一、单选题(共20题,每题2分,共40分)

1 近日,空中客车公司表示,约 6000 架空客 A320 系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故分析后的结果显示,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的 ( )

{{ select(1) }}

  • 辐射传感器
  • 处理器
  • 内存单元
  • 输出设备

2 小明最近为了备考 GESP,开始看 B 站上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,那他平时上学所在的教学楼内的网络是一个 ( )

{{ select(2) }}

  • PAN
  • LAN
  • MAN
  • WAN

3 下面有关 C++ 变量的说法,正确的是 ( )

{{ select(3) }}

  • 不可以用 for 作为变量名,因为 for 是 C++ 的关键字 (保留字)
  • _tnt 不可以是变量名,因为变量名的第一个字符必须是英文字母
  • _tnt_不可以是变量名,因为最后一个字符容易与减号混淆
  • 可以用 printf 作为变量名,因为 printf 是关键字,但这不是好习惯

4 一个小数是 0.123123123…… 无限循环,求第 N 位的值。横线处应填入的代码是 ( )

int N; cin >> N;
remainder = ________;
if (remainder == 0) cout << 1;
else if (remainder == 1) cout << 2;
else cout << 3;

{{ select(4) }}

  • N % 3
  • (N - 1) % 3
  • N / 3
  • (N - 1) / 3

5 某同学执行 C++ 代码printf("%g\n", (3 + 3.1415926535));输出 6.14159,其原因最可能是 ( )

{{ select(5) }}

  • 整数转浮点数产生舍入误差
  • printf 输出浮点数有默认小数点位数
  • 3.1415926535 是无限循环小数
  • CPU 运算错误

6 某单位工号编码总长 5 位数字,前 4 位依次整除以 3 的商累加和除以 10 的余数为第 5 位。代码中两个横线处分别应填的是 ( )


int rst = 0, N;
for (int i = 0; i < 4; i++){
    cin >> N;
    rst += ________; // L1
}
cout << ___________; // L2

{{ select(6) }}

  • N%3,rst/10
  • N%3,rst%10
  • N/3,rst/10
  • N/3,rst%10

7 下面 C++ 代码执行后的输出是 ( )

for (int i = -2; i < 2; i++)
    if (i % 2) printf("%d#",i);

{{ select(7) }}

  • -1#1#
  • -1#0#1#
  • -2#-1#1#
  • -2#-1#1#2#

8 与下面 C++ 输出效果不一致的代码是 ( )

int i;
for (i = 0; i < 10; i++)
cout << i;

A.

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

B.

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

C.

int i = 0; while(true){cout << i;i += 1;if(i>=10)break;}

D.

int i = 0; while(true){if(i>=10)break;cout << i;i += 1;}

{{ select(8) }}

  • A
  • B
  • C
  • D

9 下面 C++ 代码执行后输出是 ( )


int num = 0;
while (num <= 5){
    num += 1;
    if (num % 3) continue;
    printf("%d#",num);
}
if(num > 5) printf("%d", num);

{{ select(9) }}

  • 3#6#
  • 3#6#6
  • 1#2#3#4#5#6#
  • 1#2#3#4#5#6#6

10 下面 C++ 代码执行后,其输出是 ( )

int cnt = 0;
for (int i = 0; i <5; i++)
    for (int j =i; j < 4; j++)
        cnt += 1;
cout << cnt;

{{ select(10) }}

  • 9
  • 10
  • 14
  • 20

11 以下关于标准 C++ 一维数组的描述,哪一项是错误的?( )

{{ select(11) }}

  • 数组的下标从 0 开始
  • 数组在内存中是连续存放的
  • 数组的长度只能在运行时才能确定
  • 可以修改数组某个元素的值

12 执行以下程序段,输出值是 ( )


int x = 5;
if (x == 3 >> 2) x = 8 >> 3;
cout << x << endl;

{{ select(12) }}

  • 0
  • 5
  • 120
  • 1

13 已知字符串s = "C++ Programming",运行结果是 ( )


cout << (int)(s.length() | 3) << endl;

{{ select(13) }}

  • 14
  • 15
  • 16
  • 17

14 以下关于 C++ 求最小值函数 min () 的描述,不正确的是 ( )

{{ select(14) }}

  • 函数必须返回一个值
  • 可以嵌套调用
  • 调用 min ##### (5) 编译错误
  • 调用 min () 可编译,结果为 0

15 unsigned int 占 2 字节,可表示的数据范围是 ( )

{{ select(15) }}

  • 0~65535
  • 0~65536
  • -65536~65535
  • 0~32767

16 以下代码执行后,数组 arr 的内容是 ( )

int arr[6] = {1,2,3,4,5,6};
for (int i = 0; i < 6; i += 2) {
    arr[i] = arr[i] + arr[i+1];
    arr[i+1] = arr[i] - arr[i+1];
    arr[i] = arr[i] - arr[i+1];
}

{{ select(16) }}

  • {2,1,4,3,6,5}
  • {1,2,3,4,5,6}
  • {3,1,4,2,5,3}
  • {1,3,2,5,4,6}

17 整型变量 x 初始值为 10,输出结果是 ( )

int t = x--;
t -= x;
cout << t << endl;

{{ select(17) }}

  • 0
  • -1
  • 1
  • 死循环

18 根据流程图,输入 score=60,输出结果是 ( )

{{ select(18) }} 开始→输入 score→score≥90?→否→score>60?→是输出优秀,否输出及格,否则不及格

  • 优秀
  • 及格
  • 不及格
  • 无输出

19 以下关于 C++ 中 abs () 函数的描述,正确的是 ()

{{ select(19) }}

  • 计算 int 绝对值,头文件或
  • abs (3.14) 四舍五入得 3
  • abs (-1,-2) 返回 1
  • 负数浮点数自动截断取整

20 字符串 s="GESP",代码执行后 s 结果是 ( )

for (int i = 0; i < s.length(); i++) {
    s[i] = toupper(s[i] + i);
}

{{ select(20) }}

  • GESP
  • HFTR
  • hesp
  • GFUS

二、阅读程序(共3题,判断题2分/题+选择题2分/题,共30分)

第一题:



#include <iostream>
#include <string>
using namespace std;
int main() {
    string s;
    cin >> s;
    for (int i = 0; i < s.length(); i++) {
        if (s[i] >= 'a' && s[i] <= 'z') {
            s[i] = s[i] - 'a' + 'A';
        }
    }
    cout << s;
    return 0;
}

程序功能:将输入字符串中的小写字母转换为大写字母,其他字符保持不变。

1.判断题

(1) 输入 Hello123 时,输出为 HELLO123。 ()

{{ select(21) }}

(2) 输入 GESP 时,输出为 gesp。 ()

{{ select(22) }}

(3) 若输入字符串包含大写字母,程序会将其转换为小写字母。 ()

{{ select(23) }}

2.选择题

(1) 输入 abc DEF(注意中间有空格),输出结果是()

{{ select(24) }}

  • ABC DEF
  • ABC
  • DEF
  • abc DEF
(2) 若将条件 s[i] >= 'a' && s[i] <= 'z' 改为 s[i] >= 'A' && s[i] <= 'Z',并将转换语句改为 s[i] = s[i] - 'A' + 'a',则程序功能变为()

{{ select(25) }}

  • 将小写字母转大写
  • 将大写字母转小写
  • 将大小写互换
  • 删除所有字母

第二题:


#include <iostream>
using namespace std;
int main() {
    int arr[6] = {1, 2, 3, 4, 5, 6};
    for (int i = 0; i < 3; i++) {
        int t = arr[i];
        arr[i] = arr[5 - i];
        arr[5 - i] = t;
    }
    for (int i = 0; i < 6; i++)
        cout << arr[i] << " ";
    return 0;
}


程序功能:将数组元素前后对称交换。

1.判断题

(1) 程序输出为 6 5 4 3 2 1。 ()

{{ select(26) }}

(2) 如果将循环条件 i < 3 改为 i < 6,数组会变回原样。 ()

{{ select(27) }}

(3) 删除 int t = arr[i]; 并将交换语句改为 arr[i] = arr[5-i]; arr[5-i] = arr[i]; 可以实现相同效果。 ()

{{ select(28) }}

2.选择题

(4) 若数组初始化为 {2,4,6,8,10,12},输出结果是()

{{ select(29) }}

  • 2 4 6 8 10 12
  • 12 10 8 6 4 2
  • 12 10 6 8 4 2
  • 2 4 6 8 10 12
(5) 若将循环改为 for (int i = 0; i <= 5; i++),则()

{{ select(30) }}

  • 程序正常运行,输出与原结果相同
  • 程序正常运行,输出为原数组
  • 程序可能越界访问
  • 编译错误

第三题:



#include <iostream>
using namespace std;
int main() {
    int n, x;
    cin >> n >> x;
    int total = n;
    for (int i = 1; i <= n; i++) {
        if (i % x == 0)
            total++;
    }
    cout << total;
    return 0;
}

程序功能:计算行走n公里,每x公里奖励1点能量,总能量为n加上奖励次数。

1.判断题

(1) 输入 5 2 输出 7。 ()

{{ select(31) }}

(2) 输入 10 3 输出 13。 ()

{{ select(32) }}

(3) 若 x > n,则输出 n。 ()

{{ select(33) }}

2.选择题

(4) 输入 100 1 输出()

{{ select(34) }}

  • 100
  • 101
  • 199
  • 200
(5) 若将循环条件改为 i <= n 不变,但 total++ 改为 total += i % x == 0 ? 1 : 0,则()

{{ select(35) }}

  • 结果不变
  • 结果变为原来的两倍
  • 编译错误
  • 死循环

三、完善程序(共2题,每题5个空,每空3分,共30分)

(1)回文数计数

题目描述 如果一个正整数从左向右读和从右向左读是一样的,则称它为回文数。例如:1、2、3、...、9、11、22、101、121等都是回文数。给定一个正整数n,请你统计不超过n的正整数中,一共有多少个回文数。 输入格式 一行,一个正整数n (1≤n≤10000)。 输出格式 一行,一个整数,表示回文数的个数。 样例输入1: 10 样例输出1: 9 样例输入2: 100 样例输出3: 18 代码(请将下划线处填写正确的选项)



#include <iostream>
using namespace std;
int main() {
    int n, ans = 0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int t = i, rev = 0;
        while ( ____(1)____ ) {
            rev = rev * 10 + ____(2)____;
            ____(3)____;
        }
        if ( ____(4)____ )
            ____(5)____;
    }
    cout << ans;
    return 0;
}

(1) 循环继续的条件是 t 中还有未处理的数字,应填

{{ select(36) }}

  • t == 0
  • t >= 0
  • t != 0
  • t < 0
(2) 取当前末位数字,应填

{{ select(37) }}

  • t % 10
  • t / 10
  • t % 100
  • t / 100
(3) 去掉已经处理过的末位,应填

{{ select(38) }}

  • t %= 10
  • t /= 10
  • t = t % 10
  • t = t / 10
(4) 判断反转后的数是否等于原数,应填

{{ select(39) }}

  • rev == i
  • rev == t
  • rev == 0
  • i == 0
(5) 如果满足条件则累加计数,应填

{{ select(40) }}

  • ans += i
  • ans += 1
  • ans = ans + i
  • ans = rev

(2)文具采购

题目描述 小明的班级要采购M种文具,商店里有N件文具,每件文具有种类编号(从1到M)和价格。小明决定每种文具只买最便宜的那一件(如果最便宜的价格有多个,他只买其中一件)。请你计算购买所有M种文具的总花费。数据保证每个种类至少有一件文具。 输入格式 第一行两个正整数M和N。 接下来N行,每行两个整数K和P,分别表示该件文具的种类编号和价格。 输出格式 一行,一个整数,表示总花费。 样例输入: 2 5 1 1 1 2 1 1 2 3 2 10 样例输出: 4 代码(请将下划线处填写正确的选项)



#include <iostream>
using namespace std;
int min_price[100005];   // 假设 M ≤ 100000
int main() {
    int M, N;
    cin >> M >> N;
    for (int i = 1; i <= M; i++) {
        min_price[i] = ____(1)____;   // 初始化为一个很大的数
    }
    for (int i = 0; i < N; i++) {
        int K, P;
        cin >> K >> P;
        if ( ____(2)____ ) {
            min_price[K] = P;
        } else {
            if ( ____(3)____ ) {
                min_price[K] = P;
            }
        }
    }
    int total = 0;
    for (int k = 1; k <= M; k++) {
        total += ____(4)____;
    }
    cout << ____(5)____;
    return 0;
}

(1) 初始化最小价格数组为极大值,应填

{{ select(41) }}

  • 0
  • 100000000
  • -1
  • 1000
(2) 判断是否第一次遇到该种类(即尚未记录任何价格),应填

{{ select(42) }}

  • min_price[K] == 0
  • min_price[K] == -1
  • min_price[K] == 100000000
  • min_price[K] > P
(3) 判断当前价格是否比已记录的最小价格更小,应填

{{ select(43) }}

  • P > min_price[K]
  • P < min_price[K]
  • P == min_price[K]
  • P != min_price[K]
(4) 累加每种文具的最小价格,应填

{{ select(44) }}

  • min_price[k]
  • k
  • P
  • total
(5) 输出总花费,应填

{{ select(45) }}

  • total
  • M
  • N
  • min_price[0]