CCF GESP 2024年12月认证 C++ 3级

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

下列二进制表示的十进制数值分别是( )

[10000011]原 = ( )
[10000011]补 = ( )
A

-125,-3

B

-3,-125

C

-3,-3

D

-125,-125

第 2 题

关于计算机中的编码,下列说法中错误的是( )

A

对于无符号数,原码就是真值

B

正数的反码是其本身

C

负数的反码和补码是不一样的

D

负数的反码,在其原码的基础上,各个位取反

第 3 题

16 进制数 B2025 转换成 8 进制数是( )

A

2620045

B

2004526

C

729125

D

2420045

第 4 题

625.625 变成二进制是( )。

A

1001110001.101

B

101.101

C

101.1001110001

D

1001110001.1101

第 5 题

下面逻辑运算中,正确的是( )。

A

5 && 3 == 0

B

5 | 3 == 8

C

5 || 3 == 11

D

5 & 3 == 0001

第 6 题

补码 1111 1101 进行运算 1111 1101 >> 1 以后得到的结果是( )

A

1111 1100

B

-2

C

1111 1101

D

1111 1010

第 7 题

下列代码输出的是

string s = "1234@chenadai";
string str = "12345";
s.replace(1, 5, str);
cout << s << endl;
A

12345

B

2345@

C

112345chenadai

D

12345chenadai

第 8 题

a | 10(a 与 10 都是 10 进制,且二进制表示最高位为 1)运算的结果是( )。

A

使 a 的二进制表示从右往左的第二位为 1

B

使 a 的二进制表示从右往左的第一位为 0

C

使 a 的二进制表示从右往左第二位为 0

D

使 a 的二进制表示最高位为 0

第 9 题

下列程序输出的是( )。

string ch = "hello";
if (ch[5] == NULL)
{
    cout << "right" << endl;
}
else if (ch[5] == '\0')
{
    cout << "wrong" << endl;
}
else
{
    cout << "hello" << endl;
}
A

right

B

wrong

C

hello

D

不能正确执行

第 10 题

下列程序中,假设一个字符占用的内存空间是 1,下列程序中,ch 占用的内存空间是( )

char ch[] = "hello world";
size_t ret = strlen(ch);
cout << ret << endl;
A

11

B

10

C

13

D

12

第 11 题

下列程序最后输出的是( )

int a = 65;
cout << tolower(a) << endl;
A

65

B

A

C

a

D

97

第 12 题

想要计算从数字 n 到数字 m 之间(包含 n 和 m )有多少个数字 d 出现,下列程序哪个能够实现( )。

A
int n, m, res, d;
cin >> n >> m >> d;
for (int i = n + C1; i <= m; i++) {
    int temp = i;
    while (temp) {
        if (temp % 10 == d) res++;
        temp /= 10;
    }
}
cout << res << endl;
return 0;
B
int n, m, res, d;
cin >> n >> m >> d;
for (int i = n; i <= m; i++) {
    int temp = i;
    while (temp) {
        if (temp % 10 = d) res++;
        temp /= 10;
    }
}
cout << res << endl;
return 0;
C
int n,m,res=0,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
    int temp = i;
    while(temp){
        if(temp % 10 == d) res++;
        temp /= 10;
    }
}
cout << res << endl;
return 0;
D
int n,m,res=0,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
    while(temp){
        if(temp % 10 == d) res++;
        temp /= 10;
    }
}
cout << res << endl;
return 0;
第 13 题

兔子五元一只,鸡三元一只,小鸭子一元三只,现在你有一百元要买一百只,兔子、鸡、鸭子,问兔子、鸡、鸭子各买多少只,每种必须至少一只,下列哪个程序能实现。( )。

A
for(int i = 0; i <= 100; i++){
    for(int j = 0; j <= 100; j++){
        for(int k = 0; k <= 100; k++){
            if(i + j + k == 100 && 25 * i + 10 * j + k == 300)
                cout << i << " " << j << " " << k << endl;
        }
    }
}
B
for(int i = 0; i <= 100; i++){
    for(int j = 0; j <= 100; j++){
        for(int k = 0; k <= 100; k++){
            if(i + j + k == 100 && 20 * i + 10 * j + k == 300)
                cout << i << " " << j << " " << k << endl;
        }
    }
}
C
for(int i = 0; i <= 20; i++){
    for(int j = 0; j <= 34; j++){
        for(int k = 0; k <= 20; k++){
            if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
                cout << i << " " << j << " " << k << endl;
        }
    }
}
D
for(int i = 0; i <= 100; i++){
    for(int j = 0; j <= 100; j++){
        for(int k = 0; k <= 100; k++){
            if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
                cout << i << " " << j << " " << k << endl;
        }
    }
}
第 14 题

求小于等于 N 的素数的方法中,有一种方法是将所有从 2 到它本身减 1 的数都除一遍,如果不能整除,就是素数。下列哪个程序,体现了这种方法( )?

A
if(N >= 3){
    cout<<2<<endl;
    for(int i = 2; i <= N; i++){
        for(int j = 2; j < i; j++){
            if(i % j != 0){
                flag = 1;
            }
        }
        if(flag == 0){
            cout<<i<<endl;
        }
        flag = 0;
    }
}
B
if(N > 2){
    for(int i = 3; i <= N; i++){
        for(int j = 2; j < i; j++){
            if(i % j == 0){
                flag = 1;
            }
        }
        if(flag == 0){
            cout<<i<<endl;
        }
        flag = 0;
    }
}
C
if(N > 2){
    cout<<2<<endl;
    for(int i = 3; i <= N; i++){
        for(int j = 2; j < i; j++){
            if(i % j == 0){
                flag = 1;
            }
        }
        if(flag == 0){
            cout<<i<<endl;
        }
        flag = 0;
    }
}
D
if(N > 2){
    cout<<2<<endl;
    for(int i = 3; i <= N; i++){
        for(int j = 2; j < i; j++){
            if(i % j == 0){
                flag = 1;
            }
        }
        if(flag == 0){
            cout<<i<<endl;
        }
    }
}
第 15 题

工人工作一天,会得到一个金环作为工资报酬,某个工作需要 15 天完成,一条 15 个环的金环项链,为了严格执行每天工作结束时,完成对工人工资的结算,最少需要将金环项链剪裁成几段,每段几个金环( )

A

4 段,分别是 1、2、4、8

B

15 段,每段 1 个

C

6 段,分别是 3、3、3、2、1

D

9 段,分别是 2、2、2、2、2、2、1、1、1

单选题部分已到底了。