#GESP225031. GESP25年3月二级选择题

GESP25年3月二级选择题

25年3月二级选择题

  1. 2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,进入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。 {{ select(1) }}
  • 《哪吒2》是一款新型操作系统
  • DeepSeek是深海钻探软件
  • 《哪吒2》可以生成新的软件
  • DeepSeek可以根据《哪吒2》的场景生成剧情脚本
  1. 对整型变量N,如果它能够同时被3和5整除,则输出N是含有至少两个质因数。如果用流程图来描述处理过程,则输出语句应该在哪种图形框中( )。 {{ select(2) }}
  • 圆形框
  • 椭圆形框
  • 平行四边形框
  • 菱形框
  1. 下面C++代码执行后,其输出是( )。 {{ select(3) }}
  • 3 4
  • 3 3
  • 4 4
  • 4 3
int a=3, b = 4;
a == b;
b == a;
cout << a << ' ' << b << endl;
  1. 求三色彩球的颜色。有数量无限的红(Red)绿(Green)蓝(Blue)三种彩球排成一行,每组先为5个红色球,随后3个绿色,最后为2个蓝色。每个球都有编号,从左到右依次为1,2,3……。输入整数代表编号,求该编号球的颜色。下面C++代码是实现,正确说法是( )。 {{ select(4) }}
  • else if ((remainder == 9) || (remainder == 0))修改为else效果相同
  • ((1 <= remainder) && (remainder<= 5))修改为(remainder <= 5)效果相同
  • else if ((6 <= remainder) && (remainder <= 8))写法错误,应修改为else if (6 <= remainder <= 8)
  • 根据题意remainder = N % 10应修改为remainder = N / 10
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";
  1. 下面C++代码执行后其输出是( )。 {{ select(5) }}
  • 18
  • 17
  • 16
  • 14
int tnt = 0;
for (int i = 0; i < 10; i++)
    if (i % 3)
        tnt += 1;
    else
        tnt += 2;
cout << tnt;
  1. 下面C++代码执行后输出是( )。 {{ select(6) }}
  • 10
  • 8
  • 0
  • 因为循环执行时会执行break语句而终止循环,所以i的值不确定
int i;
for (i = 10; i > 0; i -= 2)
    break;
cout << i;
  1. 下面C++代码执行后输出是( )。 {{ select(7) }}
  • 0#0#0#0#0#0#
  • 0#0#0#0#0#0#0#1#
  • 0#0#0#0#1#
  • 0#0#0#0#0#0#1#
int i;
for (i = 0; i < 10; i++){
    if (i % 3 == 0) 
        continue;
    cout << "0" << "#";
}
if (i >= 10) 
    cout << "1" << "#";
  1. 下面C++代码执行后的输出是( )。 {{ select(8) }}
  • 1-2-1-3-2-1-4-3-2-1
  • 1-2-1-3-2-1-4-3-2-1
  • 0-0-1-0-1-2-0-1-2-3
  • 0-0-1-0-1-2-0-1-2-3
int i,j;
for (i = 0; i < 5; i++)
    for (j = i; j > 0; j -= 1)
        printf("%d-",j);
  1. 下面C++代码执行后,将输出能被2整除且除以7余数为2的数。下列选项不能实现的是( )。 {{ select(9) }}
  • ((i % 2 == 0) && (i % 7 == 2))
  • ((!(i % 2)) && (i % 7 == 2))
  • ((!(i % 2)) && (!(i % 7)))
  • ((i % 2 != 1) && (i % 7 == 2))
for (int i = 0; i < 100; i++)
    if(_______________________)
        cout << i << endl;
  1. 下面C++代码用于求1到N之间正整数中含有3的数的个数,比如123和32都是符合条件的数。则前后两处横线应填入代码分别是( )。 {{ select(10) }}
  • 第一处:continue;第二处:j /= 10
  • 第一处:break;第二处:j /= 10
  • 第一处:continue;第二处:j %= 10
  • 第一处:break;第二处:j %= 10
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;
            // 第一处横线
        }
        // 第二处横线
cout << cnt << " ";
  1. 在数学中N!表示N的阶乘,即1到N的乘积,如3!=123,且0! = 1。下面的两段C++代码用于求1到N的阶乘之和,如N为3,则结果是9(1!+2!+3!的值)。选项中的说法正确的是( )。 {{ select(11) }}
  • 虽然实现1的代码短小,但效率并不高
  • 实现2的代码效率更高,且更易于理解
  • 实现1因为应用了前项计算结果,计算量更小,因此效率高
  • 两种实现,效率几乎一致
// 实现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;
  1. 哥德巴赫猜想是指大于2的偶数都可以分解为两个质数之和,下面的代码用于验证4-1000之内的偶数能否分解为两个质数之和。下面C++代码中假设isPrime()是已经定义好用于判断正整数N是否为质数,返回bool值。对该段代码,错误的说法是( )。 {{ select(12) }}
  • 将代码isPrime(j) && isPrime(i-j)修改为isPrime(j) == true && isPrime(i-j) == true效果相同
  • 代码执行后,输出的一对质数,一定是小的数在前
  • 即便将外层循环中i的上界1000修改为很大的整数,也不能说从数学上证明了哥德巴赫猜想
  • 根据题意,break语句应该移到if语句块之外
int i,j;
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;
        }
  1. 已知C++代码和执行后的期望输出如下,相关说法正确的是( )。 {{ select(13) }}
  • 倒数第二行的printf("\n")有错,应该修改为cout << endl;printf( )函数不能输出换行
  • last += 1修改为last = last + 1执行效果相同
  • 代码中L1标记行中的j < i + 1应修改为j < i
  • 外层for循环前的last = 1修改为last = 0执行效果相同
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");
}

/* 期望输出(输入N=10时):
1 
2 3 
4 5 6 
7 8 9 1 
2 3 4 5 6 
7 8 9 1 2 3 
4 5 6 7 8 9 1 
2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 
*/
  1. 在C++中,( )最适合填入横线处连续5次正确生成1到10之间的随机整数? {{ select(14) }}
  • rand( ) % 11
  • rand( ) % 10
  • rand( ) % 10 + 1
  • rand() % 9 + 1
for(int i=0; i<5; i++)
    cout << __________ << " ";
  1. 在C++中,如果a和b均为float类型的变量,那么二者如果相差足够小(比如0.000001),就可以视作相等。比如2.2345676和2.2345677就可以视作相等。下列哪个表达式能用来正确判断“a等于b”( )。 {{ select(15) }}
  • ((b-a) < 0.000001 )
  • ((b-a) <= 0.000001 )
  • (abs(b-a) <= 0.000001 )
  • (sqrt(b-a) <= 0.000001 )