#1327. GESP-C++三级(2023-06)

GESP-C++三级(2023-06)

CCF GESP C++ 三级 (2023 年 06 月)

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

1.高级语言编写的程序需要经过以下 ( ) 操作,可以生成在计算机上运行的可执行代码。

{{ select(1) }}

  • 编辑
  • 保存
  • 调试
  • 编译

2.二进制数 11.01 在十进制下是 ( )。

{{ select(2) }}

  • 3.01
  • 3.05
  • 3.125
  • 3.25

3.已知大写字符 'A' 的 ASCII 编码的十六进制表示为 0x41,则字符 'F' 的 ASCII 编码的十六进制表示为 ( )。

{{ select(3) }}

  • 0x46
  • 0x47
  • 0x48
  • 0x49

4.以下哪个不是 C++ 语言中的运算符?( )

{{ select(4) }}

  • &
  • &&
  • *
  • **

5.如果字符串定义为char str[] = "Hello";,则字符数组str的长度为 ( )。

{{ select(5) }}

  • 0
  • 5
  • 6
  • 7

6.一个数组定义为double array[3];,则这个数组占用内存的大小为 ( )。

{{ select(6) }}

  • 24
  • 12
  • 6
  • 3

7.以下数组定义,符合 C++ 语言语法的是 ( )。

{{ select(7) }}

  • int a[];
  • int b['3'];
  • int c[3.0];
  • int[3] d;

8.下列关于进制的叙述,不正确的是 ( )。

{{ select(8) }}

  • 正整数的二进制表示中只会出现 0 和 1。
  • 10 不是 2 的整数次幂,所以十进制数无法转换为二进制数。
  • 从二进制转换为 8 进制时,可以很方便地由低到高将每 3 位二进制位转换为对应的一位 8 进制位。
  • 从二进制转换为 16 进制时,可以很方便地由低到高将每 4 位二进制位转换为对应的一位 16 进制位。

9.下列关于 C++ 语言中数组的叙述,不正确的是 ( )。

{{ select(9) }}

  • 数组必须先定义后使用。
  • 数组的所有元素在内存中是连续存放的。
  • 除了字符数组,在定义数组时 “[]” 内必须有常数。
  • 不能对数组赋值,但可以对数组的每个基础类型的元素赋值。

10.一个int类型的值,做以下哪个操作,一定会变回原来的值?( )

{{ select(10) }}

  • 左移 3 位,再右移 3 位。
  • 右移 3 位,再左移 3 位。
  • 按位或 7,再按位与 - 8。
  • 按位异或 7,再按位异或 7。

11.如果a和b均为int类型的变量,下列表达式能正确判断 “a等于b” 的是 ( )。

{{ select(11) }}

  • ((a / b)==1)
  • ((a & b)==a)
  • ((a ^ b)==0)
  • ((a | b) == b)

12.如果a为int类型的变量,下列哪个表达式可以正确求出满足 “小于等于a且是 4 的倍数” 的整数中最大的?( )

{{ select(12) }}

  • (a & (~3))
  • ((a << 2) >> 2)
  • (a ^ 3)
  • ((a - 1) | 3) + 1

13.在下列代码的横线处填写 (),可以使得输出是 “24 12”。

#include <iostream>
using namespace std;

int main(){ 
    int a=12,b=24;
    _____________;//在此处填入代码
    a=a^b;
    b=a^b;
    cout<<a<<" "<<b<<endl;
    return 0;
}

{{ select(13) }}

  • a = a ^ b
  • b = a ^ b
  • a = a + b
  • b=a+b

14.在下列代码的横线处填写 (),可以使得输出是 “2”。

#include <iostream>
using namespace std;

int main(){
    int array[5]={3,7,5,2,4};
    int min=0; 
    for(int i=0;i<5;i++)
        if(__________)//在此处填写代码
            min = array[i];
    cout<<min<<endl;
    return 0;
}

{{ select(14) }}

  • min > array[i]
  • min < array[i]
  • min = array[i]
  • 以上均不对。

15.在下列代码的横线处填写 (),可以使得输出不是 “31”。

#include <iostream>
using namespace std;

int main(){
    int array[5] ={1,2,4,8,16};
    int res=0;
    for(int i=0;i<5;i++)
        ______________;//在此处填写代码
    cout<<res<<endl;
    return 0;
}

{{ select(15) }}

  • res = res + array[i]
  • res = res & array[i]
  • res = res | array[i]
  • res = res ^ array[i]

二、判断题(每题 2 分,共 20 分)

16.一个算法可以用不同的形式来描述,但要求描述比较规范,因此不能用自然语言描述。

{{ select(16) }}

17.域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,CCF 编程能力等级认证官方网站的域名是gesp.ccf.org.cn,其中顶级域名是 gesp。

{{ select(17) }}

18.数据编码方式只有原码、反码、补码三种。

{{ select(18) }}

19.在 C++ 语言中,长度为 n 的数组,合理的下标范围是从 0 到 n,包括 0 和 n。

{{ select(19) }}

20.字符常量 '\0' 常用来表示字符串结束,它和字符常量 '0' 是不同的。

{{ select(20) }}

21.在 C++ 语言中,可以使用字符(如 '0')作为数组下标。

{{ select(21) }}

22.在 C++ 语言中,数组被定义时,它的大小就确定了。

{{ select(22) }}

23.计算机中存储的数据都是二进制形式。因此,在使用 C++ 语言编写程序时,将所有十进制数改写为相同数值的二进制数,会使得程序运行效率更高。

{{ select(23) }}

24.在 C++ 语言中,表达式(0xf == 015)的值为true。

{{ select(24) }}

25.如果a为int类型的变量,且表达式((a | 3)==3)的值为true,则说明a在从 0 到 3 之间(可能为 0、可能为 3)。

{{ select(25) }}