CCF GESP 2025年12月认证 C++ 1级

单选题
共 15 道 每题 2 分 共计 30 分
第 1 题

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

A

辐射传感器

B

处理器

C

内存单元

D

输出设备

第 2 题

下面的 C++ 代码在某集成开发环境中编译运行时,提示有“Invalid Character”(“无效字符”)错误。可能的原因是( ):

int a, b;
a=3,b = 4; // L1
cout << a; // L2
cout << b; // L3
A

L1 行代码中的逗号很可能是中文逗号,应该改为英文逗号。

B

L1 行应该分为两行,分别是 a = 3b = 4

C

代码运行前没有保存到文件。

D

L2 和 L3 不能分为两行,应合并为一行。

第 3 题

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

A

不可以用 for 作为变量名,因为 for 是 C++ 的关键字(保留字)。

B

_tnt 不可以是变量名,因为变量名的第一个字符必须是英文字母。

C

_tnt_ 不可以是变量名,因为最后一个字符容易与减号混淆。

D

可以用 printf 作为变量名,因为 printf 是关键字,但这不是好习惯,因为 printf 有约定的功能与含义。

第 4 题

$x$ 是 C++ 的整型变量,则 cout << (x=3, x++, ++x); 执行后的输出是( )。

A

3

B

4

C

5

D

不确定

第 5 题

C++ 表达式 2 + 3 * 4 % 5 的值为( )。

A

0

B

4

C

14

D

50

第 6 题

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

a = 3;
b = a = 4;
printf("%d %d", a, b);
A

4 4

B

3 3

C

3 4

D

4 3

第 7 题

下面的 C++ 代码执行时如果先输入 10 回车后输入 20 并回车,其输出是( )。

int N, M;
printf("第一个数:");
scanf("%d", &N);
printf("第二个数:");
scanf("%d", &M);
printf("%(N+M)=%d", N+M, int(N+M));
A

30=30

B

10+20=30

C

%(N+M)=30

D

错误提示

第 8 题

某个整数很长很长,形如:1232123212321… …,其规律是从 1 开始逐一升高到 3 然后逐一降低到 1,然后又逐一升高到 3,一直到很长很长。假设最高位编号为 1,要求判断从左边最高位开始的第 N 位数是几? 在横线处应该填入的代码是 ( )。

int N, M;
cout << "请输入编号: ";
cin >> N;
M = ______________;

if (M != 0)
    cout << M;
else
    cout << 2;
A

N % 4

B

N / 4

C

N % 3

D

N / 3

第 9 题

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

int i, tnt = 0;
for (i = 0; i < 100; i++)
    tnt += 1;
cout << tnt << ' ' << i;
A

99 99

B

100 99

C

99 100

D

100 100

第 10 题

有关下面 C++ 代码的说法,错误的是( )。

int tnt = 0;
for (int i = 1; i < 10; i += 2) // L1
    tnt += i; // L2
cout << tnt;
A

L1 的 i < 10 改为 i < 11 结果相同。

B

L1 的 i = 1 改为 i = 0 结果相同。

C

tnt += itnt = tnt + i 效果相同。

D

tnt += itnt = i + tnt 效果相同。

第 11 题

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

int i;
for (i = 10; i < 100; i += 10){
    if (i % 10 == 0)
        continue;
    printf("%d#",i);
}
if(i >= 100)
    printf("%d END",i);
A

10#20#30#40#50#60#70#80#90#100 END

B

100#100 END

C

100 END

D

没有输出

第 12 题

两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的 C++ 代码用于实现该操作,横线处应该填写的代码是( )。

int N, M;
cin >> N >> M;

while (N != M) {
    if (N > M)
        ____________;
    else
        ____________;
}

cout << N;
A
N = N - M
M = M - N
B
M = M - N
N = N - M
C
M = N - M
N = M - N
D
N, M = M, N
M, N = N, M
第 13 题

如果一个正整数能被 3 整除,或者某一位能被 3 整除,则称之为“漂亮数”。下面的 C++ 代码用于判断正整数 N 是否为漂亮数,L1 行的横线处应该填入的代码是( )。

int N, Flag;
cin >> N;
 
Flag = 0; // "非漂亮数"
if (N % 3 == 0)
    Flag = 1; // "漂亮数"
else
    while (N != 0){
        if (_____________){ // L1
            Flag = 1;
            break;
        }
        N /= 10;
    }
cout << (Flag? "漂亮数" : "非漂亮数");
A

N % 10 == 0

B

N % 3 % 10 == 0

C

N % 10 % 3

D

N % 10 % 3 == 0

第 14 题

如果正整数 N 的所有奇因数(即能将 N 整除的正奇数) 的和是 27 的倍数,则称 N 是 27 的神秘数。下面的 C++ 代码用于判断输入的 N 是否为 27 的神秘数。如输入 53,它有两个奇因数 1 和 53,则将输出 Y。( )。

int i, N, cnt = 0;
cin >> N;
for (i=1; i <=N; i++){
    if (_____________)
        cnt += i;
}
if(cnt % 27 == 0)
    cout << 'Y';
A

(N % i) && (i % 2)

B

(N % i == 0) && (i % 2 == 0)

C

(N % i == 0) && (i % 2)

D

(N % i) && (i % 2 == 0)

第 15 题

执行下面 C++ 代码可以找出千位与个位的和恰好等于中间两位的四位数,横线处应该填入( )。

int count = 0;
int a, bc, d, tmp;
for (int i = 1000; i <= 9999; i++) {
    a = (tmp = i) / 1000;
    ------------------
    bc = tmp / 10;
    d = tmp - bc * 10;
    if (a + d == bc) {
        count++;
    }
}
cout << count;
A

tmp = i / 10;

B

tmp = i % 100;

C

tmp -= a * 1000;

D

tmp = i - i%1000;

单选题部分已到底了。