跳到正文
OJ
佛大附属信奥
在线评测 · 分级学习
学习
题库
测验
提交
作业
留言
登录
菜单
学习
题库
测验
提交
作业
留言
登录
GESP C++ 二级 · 2024 年 12 月认证理论卷
登录
后作答才能记录成绩
一、单选题(每题 2 分)
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++代码执行后其输出是( )。 ```cpp for (int i=0; i<10; i++) printf("%d",i); ```
A. 123456789
B. 0123456789
C. 12345678910
D. 012345678910
5.
下面C++代码的相关说法中,正确的是( )。 ```cpp 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++代码执行后输出是( )。 ```cpp 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++代码执行后的输出是( )。 ```cpp 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整除的数,横线处不能填入的代码是( )。 ```cpp 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++代码用于求正整数各位数字之和,横线处不应填入代码是( )。 ```cpp 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++代码执行后的输出是( )。 ```cpp for (i=0; i<5; i++) for (j=0; j<i; j++) cout << j; ```
A. 0010120123
B. 01012012301234
C. 001012012301234
D. 01012012301234012345
11.
下面C++代码用于实现图示的九九乘法表。相关说法错误的是( )。 ``` 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 ``` ```cpp 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); // L2 } printf("\n"); // L1 } ```
A. 将L1注释的`printf("\n")`移到L2注释所在行,效果相同
B. 将L1注释的`printf("\n")`修改为`printf("%c", '\n')`效果相同
C. 将`Lie * Hang > 9`修改为`Lie * Hang >= 10`效果相同
D. 将`Lie * Hang > 9`修改为`Hang * Lie > 9`效果相同
12.
在数学中N!表示N的阶乘,即1到N的乘积,如3!=1*2*3。下面的C++用于求1-N的阶乘之和,如N为3,则是1!+2!+3!。下面代码段补充选项后用于实现上述功能,其中不能实现阶乘和的选项是( )。 ```cpp int N; cin >> N; int tnt=0, nowNum = 1; //tnt保存求和之值,当前N的阶乘 for (int i=1; i < N + 1; i++){ ______________ // 基于上一个计算出当前数的阶乘 ______________ // 从1到i每个数阶乘之和 } cout << tnt; ```
A. ```cpp nowNum *= i; tnt += nowNum; ```
B. ```cpp nowNum = nowNum * i; tnt = tnt + nowNum; ```
C. ```cpp nowNum *= i; tnt = nowNum + tnt; ```
D. ```cpp nowNum = nowNum + i; tnt *= nowNum; ```
13.
下面C++代码用于输出N和M之间(可以包括N和M)的孪生素数。孪生素数是指间隔为2的两个数均为素数,如11和13分别是素数,且间隔为2。`isPrime(N)`用于判断N是否为素数的函数。为完成上述功能,横线处应填上的代码是( )。 ```cpp 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 * *** ***** ******* ********* ``` ```cpp 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,则横线处不能填入( )。 ```cpp int a=10,b=20,c=30; cout << _____________________ << endl; cout << endl; ```
A. `max(max(a, b), c)`
B. `min(a+b, c)`
C. `sqrt(a+b+c)`
D. `(a+b+c)/2`
二、判断题(每题 2 分)
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`。( ) ```cpp int a = 2, b = 3; printf("%%a*%%b=%d",a*b); ```
对
错
6.
以下C++代码因为循环变量为将导致错误,即不能作为变量名称,不符合C++变量命名规范。( ) ```cpp for (int _ = 0; _ < 10; _++) continue; ```
对
错
7.
下面C++代码执行后因为有break,将输出0。( ) ```cpp int i; for (i = 0; i < 10; i++){ continue; break; } cout << i; ```
对
错
8.
下面的C++代码执行后将输出18行"OK"。( ) ```cpp 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`的输出结果相同。( ) ```cpp int i; int cnt = 0; for (i = 1; i < 5; i++) if(i%2) cnt += 1; cout << cnt; ```
对
错
10.
下面两段C++代码都是用于求1-10的和,其运行结果相同。通常说来,for循环都可以用while循环实现。( ) ```cpp int tnt; int i; tnt = 0; for (i = 1; i < 10 + 1; i++) tnt += i; cout << tnt << endl; ``` ```cpp int tnt; int i; tnt = 0; i = 1; while (i <= 10){ tnt += i; i += 1; } cout << tnt << endl; ```
对
错