#1618. GESP二级真题(202409)

GESP二级真题(202409)

C++ 二级 2024 年 09 ⽉

1 单选题(每题 2 分,共 30 分)

第 1 题 据有关资料,⼭东⼤学于1972年研制成功DJL-1计算机,并于1973年投⼊运⾏,其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使⽤的磁⼼存储元件由磁⼼颗粒组成,设计存贮周期为2μs(微秒)。那么该磁⼼存储元件相当于现代计算机的( )。

{{ select(1) }}

  • 内存
  • 磁盘
  • CPU
  • 显⽰器

第 2 题 IPv4版本的因特⽹总共有( )个A类地址⽹络。

{{ select(2) }}

  • 65000
  • 200万
  • 126
  • 128

第 3 题 在C++中,下列不可做变量的是( )。

{{ select(3) }}

  • ccf-gesp
  • ccf_gesp
  • ccfGesp
  • _ccfGesp

第 4 题 在C++中,与 for (int i = 1; i < 10; i++) 效果相同的是( )。

{{ select(4) }}

  • for (int i = 0; i < 10; i++)
  • for (int i = 0; i < 11; i++)
  • for (int i = 1; i < 10; ++i)
  • for (int i = 0; i < 11; ++i)

第 5 题 在C++中, cout << (5 / 2 + 5 % 3) 的输出是( )。

{{ select(5) }}

  • 1
  • 2
  • 4
  • 5

第 6 题 假定变量a和b可能是整型、字符型或浮点型,则下⾯C++代码执⾏时先后输⼊ -2 和 3.14 后,其输出不可能是( )。 [已知字符 '+'、'-'、'=' 的ASCII码值分别是43、45和61]

cin >> a;
cin >> b;
cout << (a + b);

{{ select(6) }}

  • 1
  • 1.14
  • 47
  • 将触发异常

第 7 题 在C++代码中假设N为正整数,则下⾯代码能获得个位数的是( )。

{{ select(7) }}

  • N % 10
  • N / 10
  • N && 10
  • 以上选项均不正确

第 8 题 下⾯C++代码执⾏后的输出是( )。

int i;
for (i = 0; i < 10; i++){
    if (i % 2)
        break;
    cout << "0#";
}
if(i==10) cout << "1#";

{{ select(8) }}

  • 0#
  • 1#
  • 0#0#1
  • 没有输出

第 9 题 执⾏下⾯C++代码并输⼊1和0,有关说法正确的是( )。

int a,b;
cin >> a >> b;
if(a&&b)
    cout << ("1");
else if(!(a||b))
    cout << ("2");
else if(a || b)
    cout << ("3");
else
    cout << ("4");

{{ select(9) }}

  • 1
  • 2
  • 3
  • 4

第 10 题 下⾯C++代码执⾏后的输出是( )。

int loopCount = 0;
for (int i = 1; i < 5; i += 2)
    loopCount += 1;
cout << (loopCount);

{{ select(10) }}

  • 1
  • 2
  • 3
  • 5

第 11 题 下图是C++程序执⾏后的输出。为实现其功能,横线处应填⼊代码是( )。

7
1
2 3
3 4 5
4 5 6 7
5 6 7 8 9
6 7 8 9 10 11
7 8 9 10 11 12 13
//////////////////////////////
int lineNum;
cin >> lineNum;
for (int i= 1; i < lineNum+1; i++){
    for(int __________________)
        cout << j << " ";
    cout << endl;
}

{{ select(11) }}

  • j = i; j < i; j++
  • j = 1; j < i; j++
  • j = i; j < i*2; j++
  • j = i+1; j < i+i; j++

第 12 题 下⾯C++代码执⾏后输出逆序数,如输⼊ 123 则输出 321 。如输⼊ 120 则输出 21 。横线处先后应填⼊的代码是( )。

int N;
cin >> N;
int rst = 0;
while (N){
    ____________________;
    ____________________;
}
cout << (rst);

{{ select(12) }}

  • rst = rst * 10 + N % 10 N = N / 10
  • rst += N % 10 N = N / 10
  • rst = rst * 10 + N / 10 N = N % 10
  • rst += N / 10 N = N % 10

第 13 题 下⾯的C++代码⽤于输⼊学⽣成绩,并根据⼈数计算出平均成绩,有关说法错误的是( )。

float Sum = 0; // 保存总成绩
int cnt = 0; // 保存学生人数
while (1){
    int score;
    cin >> score;
    if (score < 0)
        break;
    cnt += 1;
    Sum += score;
}
cout << "总学生数:" << cnt << "平均分:" << Sum/cnt;

{{ select(13) }}

  • 代码 while (1) 写法错误
  • 如果输⼊负数,将结束输⼊,并正确输出
  • 如果输⼊的学⽣成绩含有⼩数,程序将⽆法正常执⾏
  • 变量 int score 初始值不确定,但不影响程序执⾏

第 14 题 以下C++代码判断输⼊的正整数是否为质数,如果该数字是质数,则输出 YES ,否则输出 NO 。质数是指仅能被1和它本⾝整除的正整数。请在横线上填写代码。( )

int num, i;
cin >> num;
for(i = 2; i < num; i++)
    if (__________){
        cout << ("NO");
        break;
    }
if(i == num)
    cout << ("YES");

{{ select(14) }}

  • num % i
  • num % i == 0
  • num / i
  • num / i == 0

第 15 题 ⼀个数如果能被某个数(⽐如7)整除,或者含有该数,则说该数是某个数的相关数。下⾯C++代码⽤于判定输⼊的数与7是否有关。下列说法错误的是( )。

int N, M;
bool Flag = false;
cin >> N;
M = N;

if (M % 7 == 0)
    Flag = true;

while (!Flag && M){
    if (M % 10 == 7){
        Flag = true;
        break;
    }
    M /= 10;
}

if (Flag)
    cout << N << "与7有关";
else
    cout << N << "与7无关";

{{ select(15) }}

  • 删除break语句不会导致死循环,但有时会导致结果错误
  • 删除 M /= 10 将可能导致死循环
  • 删除 M = N 并将其后代码中的M变量改为N,并调整输出同样能完成相关功能
  • 删除 break 语句不会导致死循环,但有时会影响效率

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

第 1 题 ⼩杨最近开始学习C++编程,⽼师说C++是⼀门⾯向对象的编程语⾔,也是⼀门⾼级语⾔。( )

{{ select(16) }}

第 2 题 在C++中, cout << (3, 4, 5) 可以输出 3 4 5 ,且每个输出项之间⽤空格分开。( )

{{ select(17) }}

第 3 题 C++表达式 12 % 10 % 10 的值为2。( )

{{ select(18) }}

第 4 题 C++语句 cout << rand() << ' ' << rand(); 的第⼆个输出值较⼤。( )

{{ select(19) }}

第 5 题 定义C++的 int 类型的变量 ch ,⽽且值为 '1' ,则语句 cout << int(ch); 的输出为 1 。( )

{{ select(20) }}

第 6 题 下⾯C++代码执⾏后将输出10。( )

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

{{ select(21) }}

第 7 题 下⾯C++代码能求整数N和M之间所有整数之和,包含N和M。( )

int N, M, Sum;

cin >> N >> M;

if (N > M){
    int tmp = N;
    N = M, M = tmp;
}

for (int i = N; i < M+1; i++)
    Sum += i;

cout << Sum;

{{ select(22) }}

第 8 题 将下⾯C++代码中的 L3 标记的代码⾏调整为 for (int i = 0; i < 5; i++) 后输出结果相同。( )

int loopCount = 0;
for (int i = 1; i < 5; i++) // L3
    for (int j = 0; j < i; j++)
        loopCount += 1;
cout << loopCount;

{{ select(23) }}

第 9 题 某⼀系列数据的规律是从第3个数值开始是前两个数之和。下⾯的代码求第N个数的值,N限定为⼤于2。( )

int start1; // 第1个数
int start2; // 第2个数
int N; //求N个数的值
int tmp;
cin >> start1 >> start2 >> N;
for (int i = 2; i < N; i++){
    tmp = start1 + start2;
    start1 = start2;
    start2 = tmp;
}
cout << start2;

{{ select(24) }}

第 10 题 下⾯C++代码执⾏时如果输⼊ 2024 ,则输出是 4202 。( )

int N, flag=0;
cin >> N;
while (N){
    if(!flag) cout << N % 10;
    N /= 10;
    flag = (flag + 1)%2;
}

{{ select(25) }}