#GESP20241202. 202412-2级真题

202412-2级真题

2024年12月C++二级真题

单选题

1. 2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德和杰弗里·辛顿。这两位科学家的主要研究方向是( {{ select(1) }} )

  • 天体物理
  • 流体力学
  • 人工智能
  • 量子理论

2. 计算机系统中存储的基本单位用B来表示,它代表的是( {{ select(2) }} )

  • Byte
  • Block
  • Bulk
  • Bit

3. C++语句 cout << (3 + 3 % 3 * 2 - 1) 执行后输出的值是( {{ select(3) }} )

  • -1
  • 4
  • 56
  • 2

4. 下列C++代码执行后其输出是:

for (int i=0; i<10; i++)
    printf("%d",i);

{{ select(4) }}

  • 123456789
  • 0123456789
  • 12345678910
  • 012345678910

5. 下列C++代码的相关说法中,正确的是:

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

{{ select(5) }}

  • 上述代码执行后其输出相当于求1-10的和(包含10)
  • 上述代码执行后其输出相当于求1-10的和(不包含10)
  • 上述代码执行后其输出相当于求0-10的和(不包含10)
  • 上述代码执行后将输出不确定的值

6. 下列C++代码执行后输出是:

int i;
for (i=1; i<10; i++)
    if (i % 2)
        continue;
    else
        break;
cout << i;

{{ select(6) }}

  • 1
  • 2
  • 9
  • 10

7. 下列C++代码执行后的输出是:

for (i=0; i<10; i++){
    if (i % 3)
        continue;
    printf("0#");
}
if(i>=10)
    printf("1#");

{{ select(7) }}

  • 0#0#0#0#0#0#0#1#
  • 0#0#0#0#0#0#1#
  • 0#0#0#0#1#
  • 0#0#0#0#

8. 下列C++代码用于输出0-100之间(包含100)能被7整除但不能被3整除的数,横线处填入的代码是:

{{ select(8) }}

  • i % 7 == 0 && i % 3 != 0
  • !(i % 7) && i % 3 != 0
  • i % 7 && i % 3
  • i % 7 == 0 && !(i % 3 == 0)

9. 下列C++代码用于求正整数各位数字之和,横线处填入代码是:

{{ select(9) }}

  • tnt = tnt + N % 10
  • tnt += N % 10
  • tnt = N % 10 + tnt
  • tnt = N % 10

10. 下图的C++程序执行后的输出是( )

{{ select(10) }}

  • 0010120123
  • 01012012301234
  • 001012012301234
  • 01012012301234012345

11. 下面C++代码用于实现所示的九九乘法表。相关说法错误的是( )

{{ select(11) }}

  • 将L1注释的 printf("\n") 移到L2注释所在行,效果相同
  • 将L1注释的 printf("\n") 修改为 print("%c", '\n') 效果相同
  • 将 Lie * Hang > 9 修改为 Lie * Hang >= 10 效果相同
  • 将 Lie * Hang > 9 修改为 Hang * Lie > 9 效果相同

12. 在数学中N!表示N的阶乘,同1到N的乘积,如3!=123。下列C++代码用于求1-N的阶乘之和,

如下3,则是 1!+2!+3!。下面代码片段补充项用于实现上述功能。其中不能实现阶乘和的选项是( )

int N;
cin >> N;
int tnt=0, nowNum = 1;  //tnt保存累加之值, 当前的阶乘
for (int i=1; i < N + 1; i++){
    _________;   // 基于上一个计算出当前数的阶乘
    _________;   // 从1到i每个数阶乘之和
}
cout << tnt;

{{ select(12) }}

  • nowNum *= i; tnt += nowNum;
  • nowNum = nowNum * i; tnt = tnt + nowNum;
  • nowNum *= i; tnt = nowNum + tnt;
  • nowNum = nowNum + i; tnt *= nowNum;

13. 下列C++代码用于输出N和M之间(可包括N和M)的孪生素数。孪生素数是指间隔为2的两个数均为素数。

isPrime(N)用于判断N是否为素数的函数。为完成上述功能,横线处应填入的代码是( )

int N, M;
// 本题假设N小于M
cin >> N >> M;
for (int i = N; i < ________; i++)
    if (isPrime(i) && isPrime(i + 2))
        printf("%d %d\n", i, i + 2);

{{ select(13) }}

  • M - 2
  • M - 1
  • M
  • M + 1

14. 下列C++代码实现输出如下图形。横线应填入的代码是( )

/*
高度: 5
    *
   ***
  *****
 *******
*********
*/
int height;
cout << "高度: ";
cin >> height;
// 获取用户输入的高度
for (i = 0; i < height; i++) {
    // 打印每行前面的空格
    for (j = 0; j < ___________; j++)
        cout << " ";
    // 打印每行的星号
    for (k = 0; k < ___________; k++)
        cout << "*";
    // 输出一行后,换行
    cout << endl;
}

{{ select(14) }}

  • height - i; 2 * i
  • height; 2 * i
  • height - i; 2 * i + 1
  • height - i - 1; 2 * i + 1

15. 下列C++代码执行后的输出是30,填横线处不能填入的是( )

int a = 10, b = 20, c = 30;
cout << ________________ << endl;

{{ select(15) }}

  • max(max(a, b), c)
  • min(a + b, c)
  • sqrt(a + b + c)
  • (a + b + c) / 2

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

1. 在Windows的资源管理器中为已有文件A建立副本的操作是Ctrl+C,然后Ctrl+V。( {{ select(16) }} )

2. 在C++代码中,假设N为正整数,则 cout << (N - N / 10 * 10) 将获得N的个位数。( {{ select(17) }} )

3. 在C++语句 cout << (10 <= N <= 12) 中,假设N为12,则其输出为1。( {{ select(18) }} )

4. 如果C++表达式 int(sqrt(N))*int(sqrt(N)) == N 的值为True,则说明N为完全平方数,如4、9、25等。( {{ select(19) }} )

5. 下列C++代码执行后将输出2*3=6。()

int a = 2, b = 3;
printf("%%a*%%b=%d",a*b);

{{ select(20) }}

6. 以下C++代码因变量命名非法将导致编译错误,即不能作为变量名称,不符合C++变量命名规范。( )

for (int _ = 0; _ < 10; _++)
    continue;

{{ select(21) }}

7. 下述C++代码执行后因为有break,将输出10。( )

int i;
for (i = 0; i < 10; i++){
    continue;
    break;
}
cout << i;

{{ select(22) }}

8. 下述C++代码执行后将输出18行“OK”。( )

int i, j;
for (i = 8; i > 1; i -= 2)
    for (j = 0; j < i; j++)
        printf("OK\n");

{{ select(23) }}

9. 将下述C++代码中 i = 1 调整为 i = 0 的输出结果相同。( )

int i;
int cnt = 0;
for (i = 1; i < 5; i++)
    if (i%2) cnt += 1;
cout << cnt;

{{ select(24) }}

10. 下述两段C++代码都是用于求1-10的和,其运行结果相同。通常来说,for循环都可以用while循环实现。( )

int tnt;
int i;

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

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

{{ select(25) }}