2025年GESP3月C++-二级

*
姓名:
一、单选题(每题 2 分,共 30 分)
*
第 1 题2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。
A. 《哪吒2》是一款新型操作系统
B. DeepSeek是深海钻探软件
C. 《哪吒2》可以生成新的软件
D. DeepSeek可以根据《哪吒2》的场景生成剧情脚本
*
第 2 题对整型变量N,如果它能够同时被3和5整除,则输出 N是含有至少两个质因数。如果用流程图来描述处理过程,则输出语句应该在哪种图形框中( )。
A. 圆形框
B. 椭圆形框
C. 平行四边形框
D. 菱形框
*
第 3 题下面C++代码执行,其输出是( )。

    int a=3, b = 4;

    a == b;

    b == a;

    cout << a << ' ' << b << endl;

A. 3 4
B. 3 3
C. 4 4
D. 4 3
*
第 4 题求三色彩球的颜色。有数量无限的红(Red)绿(Green)蓝(Blue)三种彩球排成一行,每组先为5个红色球,随后3个绿色,最后为2个蓝色。每个球都有编号,从左到右依次为1,2,3… … 。输入整数代表编号,求该编号球的颜色。下面C++代码是实现,正确说法是( )。

    int N, remainder; 

    cin >> N;remainder = N % 10; // remainder变量保存余数

    if((1 <= remainder) && (remainder<= 5))    

        cout << "Red";

    else if ((6 <= remainder) &&  (remainder <= 8))    

        cout << "Green";

    else if ((remainder == 9) || (remainder == 0))     

        cout << "Blue";

A. 将 else if ((remainder == 9) || (remainder == 0)) 修改为 else 效果相同
B. 将 ((1 <= remainder) && (remainder<= 5)) 修改为 (remainder <= 5) 效果相同
C. else if ((6 <= remainder) && (remainder <= 8)) 写法错误,应修改为 else if (6 <= remainder <= 8)
D. 根据题意 remainder = N % 10 应修改为 remainder = N / 10
*
第 5 题下面C++代码执行后其输出是( )。

    int tnt = 0;

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

        if (i % 3)        

            tnt += 1;

        else        

            tnt += 2

    cout << tnt;

A. 18
B. 17
C. 16
D. 14
*
第 6 题下面C++代码执行后输出是( )。

    int i;

    for (i = 10; i > 0; i -= 2

        break;

    cout << i;

A. 10
B. 8
C. 0
D. 因为循环执行时会执行break语句而终止循环,所以i的值不确定
*
第 7 题下面C++代码执行后输出是( )。

    int i;

    for (i =0; i < 10; i++){

        if (i % 3 == 0)

            continue;    

        cout << "0" << "#"

    }

    if (i >= 10)    

        cout << "1" << "#";

A. 0#0#0#0#0#0#
B. 0#0#0#0#0#0#0#1#
C. 0#0#0#0#1#
D. 0#0#0#0#0#0#1#
*
第 8 题下面C++代码执行后的输出是( )。

    int i,j;

    for (i = 0; i < 5; i++)

        for (j = i; j > 0; j -= 1)        

            printf("%d-",j);

A. 1-2-1-3-2-1-4-3-2-1-
B. 1-2-1-3-2-1-4-3-3-1
C. 0-0-1-0-1-2-0-1-2-3-
D. 0-0-1-0-1-2-0-1-2-3
*
第 9 题下面C++代码执行后,将输出能被2整除且除以7余数为2的数。下列选项不能实现的是( )。

    for (int i = 0; i < 100; i++)

        if________________        

            cout << i << "  ";

A. ((i % 2 == 0) && (i % 7 == 2))
B. ((!(i % 2)) && (i % 7 == 2))
C. ((!(i % 2)) && (!(i % 7)))
D. ((i % 2 != 1) && (i % 7 == 2))
*
第 10 题下面C++代码用于求1到N之间正整数中含有3的数的个数,比如 123 和 32 都是符合条件的数。则前后两处横线应填入代码分别是( )。

    int i,j;

    int cnt = 0, N;

    cout << "请输入正整数N: "

    cin >> N;

    for (i = 1; (j=i) < N; i++) 

        while (j != 0)

            if (j % 10 == 3){             

                cnt +=1; ______;        

            }

            else___________;

                cout << cnt << "  ";

A. continue j /= 10
B. break j /= 10
C. continue j %= 10
D. break j %= 10
*
第 11 题在数学中N!表示N的阶乘,即1到N的乘积,如 3! = 1*2*3,且 0! = 1。下面的两段C++代码用于求1到N的阶乘之和,如N为3,则结果是9(1! + 2! + 3! 的值)。选项中的说法正确的是( )。

    // 实现1

    int i,N;  

    cin >> N;

    int tnt = 0, last = 1;

    for (i = 1; i < N + 1; i++){     

        last *= i;    

        tnt += last; 

    }

    cout << tnt << endl;


    // 实现2

    int i,N;  

    cin >> N;

    int tnt = 0, tmp;

    for (i = 1; i < N + 1; i++){     

        tmp = 1;

        for (int j = 1; j < i + 1; j++)         

            tmp *= j;    

        tnt += tmp; 

    }

    cout << tnt << endl;

A. 虽然实现1的代码短小,但效率并不高
B. 实现2的代码效率更高,且更易于理解
C. 实现1因为应用了前项计算结果,计算量更小,因此效率高
D. 两种实现,效率几乎一致
*
第 12 题哥德巴赫猜想是指大于2的偶数都可以分解为两个质数之和,下面的代码用于验证4-1000之内的偶数能否分解为两个质数之和。下面C++代码中假设isPrime()是已经定义好用于判断正整数N是否为质数, 返回bool值。对该段代码,错误的说法是( )。

    for (i = 4; i < 1000; i += 2

        for (j = 2; j < i; j++)

            if (isPrime(j) && isPrime(i-j)){            

                printf("%d=%d+%d\n", i, j, i-j); 

            break;        

            }

A. 将代码 isPrime(j) && isPrime(i-j) 修改为 isPrime(j) == true && isPrime(i-j) == true 效果相同
B. 代码执行后,输出的一对质数,一定是小的数在前
C. 即便将外层循环中i的上界1000修改为很大的整数,也不能说从数学上证明了哥德巴赫猜想
D. 根据题意,break语句应该移到if语句块之外
*
第 13 题已知C++代码和执行后的期望输出如下,相关说法正确的是( )。

    int i,j;

    int last, N;

    cout << "请输入层数N: "

    cin >> N;last = 1;

    for (i = 1; i < N; i++){

        for (j = 1; j < i + 1; j++){ // L1

            if (last > 9)             

                 last = 1;       

             cout << last << " ";        

             last += 1;   

     }   

     printf("\n"); }

A. 倒数第二行的 printf("\n") 有错,应该修改为 cout << endl;,printf()函数不能输出换行
B. last += 1 修改为 last = last + 1 执行效果相同
C. 代码中L1标记行中的 j < i + 1 应修改为 j < i
D. 外层for循环前的 last = 1 修改为 last = 0 执行效果相同
*
第 14 题在C++中,( )最适合填入横线处连续5次正确生成1到10之间的随机整数?

    for(int i=0; i<5; i++)     

        __________;

A. rand() % 11
B. rand() % 10
C. rand() % 10 + 1
D. rand() % 9 + 1
*
第 15 题在C++中,如果 a 和 b 均为 float 类型的变量,那么二者如果相差足够小(比如0.000001),就可以视作相等。比如 2.2345676 和 2.2345677 就可以视作相等。下列哪个表达式能用来正确判断“a等于b” ( )。
A. ((b-a) < 0.000001 )
B. ((b-a) <= 0.000001 )
C. (abs(b-a) <= 0.000001 )
D. (sqrt(b-a) <= 0.000001 )
二、判断题 (每题 2 分,共 20 分)
*
第 1 题C++、Python都是高级编程语言,它们的每条语句最终都要通过机器指令来完成。 ( )
正确
错误
*
第 2 题在C++代码中,假设N为正整数,则 N - N / 10 * 10 与 N % 10 都将获得N的个位数。 ( )
正确
错误
*
第 3 题C++语句 cout << ((10 <= N <= 12)? "true":"false") 中,假设整型变量N为12,则其输出为 true。原因是执行 10 <= N 后其值为 true,true 与 12 相比仍然是 true。 ( )
正确
错误
*
第 4 题C++表达式 (sqrt(N) * sqrt(N)) == N 中的N如果为正整数,则表达式的值为true,相当于开平方后平方是本身。 ( )
正确
错误
*
第 5 题下面C++执行后将输出 3*2=6。 ( )

    int a=2, b = 3

    a=a-b;

    b=a+b; 

    a=b-a;

    printf("%d*%d=%d\n", a, b, a*b);

正确
错误
*
第 6 题下面C++代码执行后将输出10。 ( )

    int i;

    for (i = 0; i < 10; i++) 

        continue;

    cout << i << endl;

正确
错误
*
第 7 题下面C++代码执行后将输出1。 ( )

    int i;

    for (i = 1; i < 10; i++){ 

        break;

        continue

    }    

    cout << i << endl;

正确
错误
*
第 8 题下面的C++代码执行后将输出10行 "OK"。 ( )

    for (int i = 0; i < 5; i++)

        for(int j = 0; j < i; j++)        

            printf("OK\n");

正确
错误
*
第 9 题将下面C++代码中的for循环中的 i = 1 调整为 i = 0 的输出结果相同。 ( )

    int tnt = 0;

    for (int i = 1; i < 5; i++)     

        tnt += i;

    cout << tnt;

正确
错误
*
第 10 题下面C++代码执行后将输出 0123。 ( )
    for (i = 0; i < 5; i++)
        for (i = 0; i < i; i++)
            continue;  
    printf("%d\n", i);
正确
错误
问卷星提供技术支持
举报