2024年GESP12月C++-二级

*
姓名:
一、单选题(每题 2 分,共 30 分)
*
第 1 题2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton)。这两位科学家的主要研究方向是( )。
A. 天体物理
B. 流体力学
C. 人工智能
D. 量子理论
*
第 2 题计算机系统中存储的基本单位用B来表示,它代表的是( ),比如某个照片大小为3MB。
A. Byte
B. Block
C. Bulk
D. Bit
*
第 3 题C++语句 cout << (3 + 3 % 3 * 2 - 1) 执行后输出的值是( )。
A. -1
B. 4
C. 56
D. 2
*
第 4 题下面C++代码执行后其输出是( )。

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

        printf("%d",i);

A. 123456789
B. 0123456789
C. 12345678910
D. 012345678910
*
第 5 题下面C++代码的相关说法中,正确的是( )。

    int tnt;

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

        tnt += i;

    cout << tnt;

A. 上述代码执行后其输出相当于求1-10的和(包含10)
B. 上述代码执行后其输出相当于求1-10的和(不包含10)
C. 上述代码执行后其输出相当于求0-10的和(不包含10)
D. 上述代码执行后将输出不确定的值
*
第 6 题下面C++代码执行后输出是( )。

    int i;

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

        if (i % 2)

            continue

        else

            break

    cout << i;

A. 1
B. 2
C. 9
D. 10
*
第 7 题下面C++代码执行后的输出是( )。

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

          if (i % 3)

                continue;     

           printf("0#");

    }

    if(i>=10)    

        printf("1#");

A. 0#0#0#0#0#0#0#1#
B. 0#0#0#0#0#0#1#
C. 0#0#0#0#1#
D. 0#0#0#0#
*
第 8 题下面C++代码用于输出0-100之前(包含100)能被7整除但不能被3整除的数,横线处不能填入的代码是 ( ) 。

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

        if(_______)        

            cout << i << endl;

A. i % 7 == 0 && i % 3 != 0
B. !(i % 7) && i % 3 != 0
C. i % 7 && i % 3
D. i % 7 == 0 && !(i % 3 == 0)
*
第 9 题下面C++代码用于求正整数各位数字之和,横线处不应填入代码是( )。

    int tnt, N;

    printf("请输入正整数: "); 

    cin >> N;

    tnt = 0;

    while (N != 0){   

         _______;    

        N /= 10

    }

    cout <<tnt;

A. tnt = tnt + N % 10
B. tnt += N % 10
C. tnt = N % 10 + tnt
D. tnt = N % 10
*
第 10 题下图的C++程序执行后的输出是( )。

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

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

            cout <<j;

A. 0010120123
B. 01012012301234
C. 001012012301234
D. 01012012301234012345
*
第 11 题下面C++代码用于实现图示的九九乘法表。相关说法错误的是( )。    for (int Hang=1; Hang<10; Hang++){

      for (int Lie=1; Lie<Hang+1; Lie++){ 

            if (Lie * Hang > 9)            

                printf("%d*%d=%d ", Lie, Hang, Lie*Hang);

            else            

                printf("%d*%d=%d  ", Lie, Hang, Lie*Hang);    

        }    

        printf("\n");

    }

A. 将L1注释的 printf("\n") 移到L2注释所在行,效果相同
B. 将L1注释的 printf("\n") 修改为 print("%c", '\n ') 效果相同
C. 将 Lie * Hang > 9 修改为 Lie * Hang >= 10 效果相同
D. 将 Lie * Hang > 9 修改为 Hang * Lie > 9 效果相同
*
第 12 题在数学中N!表示N的阶乘,即1到N的乘积,如 3! = 123 。下面的C++用于求1-N的阶乘之和,如N为3,则是 1! + 2! + 3!。下面代码段补充选项后用于实现上述功能,其中不能实现阶乘和的选项是( )。

    int N;cin >> N;

    int tnt=0, nowNum = 1; //tnt保存求和之值 ,当前N的阶乘

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

        ________________// 基于上一个计算出当前数的阶乘    

        ________________// 从1到i每个数阶乘之和

    }

cout << tnt;

A. nowNum *= i; tnt += nowNum;
B. nowNum = nowNum * i; tnt = tnt + nowNum;
C. nowNum *= i; tnt = nowNum + tnt;
D. nowNum = nowNum + i; tnt *= nowNum;
*
第 13 题下面C++代码用于输出N和M之间(可以包括N和M)的孪生素数。孪生素数是指间隔为2的两个数均为素数,如11和13分别是素数,且间隔为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);
A. M - 2
B. M - 1
C. M
D. 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; 

    }

A. height - i 2 * i
B. height 2 * i
C. height - i 2 * i + 1
D. height - i - 1 2 * i + 1
*
第 15 题下面C++代码执行后的输出是30,则横线处不能填入( )。

    int a=10,b=20,c=30;

    cout <<______________<< endl;

A. max(max(a, b), c)
B. min(a+b, c)
C. sqrt(a+b+c)
D. (a+b+c)/2
二、判断题 (每题 2 分,共 20 分)
*
第 1 题在Windows的资源管理器中为已有文件A建立副本的操作是Ctrl+C,然后Ctrl+V。( )
正确
错误
*
第 2 题在C++代码中,假设N为正整数,则 cout << (N - N / 10 * 10) 将获得N的个位数。( )
正确
错误
*
第 3 题在C++语句 cout << (10 <= N <= 12) 中,假设N为12,则其输出为1。( )
正确
错误
*
第 4 题如果C++表达式 int(sqrt(N))*int(sqrt(N)) == N 的值为True,则说明N为完全平方数,如4、9、25等。( )
正确
错误
*
第 5 题下面C++代码执行后将输出2*3=6。( )

    int a = 2, b = 3;

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

正确
错误
*
第 6 题以下C++代码因为循环变量为将导致错误,即不能作为变量名称,不符合C++变量命名规范。( )

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

        continue;

正确
错误
*
第 7 题下面C++代码执行后因为有break,将输出0。( )

    int i;

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

        continue;

        break

    }

    cout << i;

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

    int i,j;    

    for (i = 8; i > 2; i-=2)

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

            printf("OK\n");

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

    int i;    

    int cnt = 0;

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

        if(i%2

            cnt += 1;

    cout << cnt;

正确
错误
*
第 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;

正确
错误
问卷星提供技术支持
举报