#X000208. GESP C++ 二级试卷(2024年12月)
GESP C++ 二级试卷(2024年12月)
CCF 编程能力等级认证
Grade Examination of Software Programming
C++ 二级
2024年12月
一、选择题(每题4分,共60分)
第1题
2024年10月8日,诺贝尔物理学奖"意外地"颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton)。这两位科学家的主要研究方向是( )。 {{ select(1) }}
- 天体物理
- 流体力学
- 人工智能
- 量子理论
第2题
计算机系统中存储的基本单位用B来表示,它代表的是( ),比如某个照片大小为3MB。 {{ select(2) }}
- Byte
- Block
- Bulk
- Bit
第3题
C++语句 cout << (3 + 3 % 3 * 2 - 1) 执行后输出的值是( )。 {{ select(3) }}
- -1
- 4
- 56
- 2
第4题
下面C++代码执行后其输出是( )。
for (int i=0; i<10; i++)
printf("%d",i);
{{ select(4) }}
- 123456789
- 0123456789
- 12345678910
- 012345678910
第5题
下面C++代码的相关说法中,正确的是( )。
int tnt;
for (int i=0; i<10; i++)
tnt += i;
cout << tnt;
{{ select(5) }}
- 上述代码执行后其输出相当于求1-10的和(包含10)
- 上述代码执行后其输出相当于求1-10的和(不包含10)
- 上述代码执行后其输出相当于求0-10的和(不包含10)
- 上述代码执行后将输出不确定的值
第6题
下面C++代码执行后输出是( )。
int i;
for (i=1; i<10; i++)
if (i % 2)
continue;
else
break;
cout << i;
{{ select(6) }}
- 1
- 2
- 9
- 10
第7题
下面C++代码执行后的输出是( )。
for ( i=0; i<10; i++) {
if (i % 3)
continue;
printf("0#");
}
if(i>=10)
printf("1#");
{{ select(7) }}
- 0#0#0#0#0#0#0#1#
- 0#0#0#0#0#0#1#
- 0#0#0#0#1#
- 0#0#0#0#
第8题
下面C++代码用于输出0-100之前(包含100)能被7整除但不能被3整除的数,横线处不能填入的代码是( )。
for (int i=0; i<=100; i++)
if(______)
cout << i << endl;
{{ select(8) }}
- i % 7 == 0 && i % 3 != 0
- !(i % 7) && i % 3 != 0
- i % 7 && i % 3
- i % 7 == 0 && !(i % 3 == 0)
第9题
下面C++代码用于求正整数各位数字之和,横线处不应填入代码是( )。
int tnt, N;
printf("请输入正整数: ");
cin >> N;
tnt = 0;
while (N != 0){
______
N /= 10;
}
cout << tnt;
{{ select(9) }}
- tnt = tnt + N % 10
- tnt += N % 10
- tnt = N % 10 + tnt
- tnt = N % 10
第10题
下面的C++程序执行后的输出是( )。
for (int i=0; i<5; i++)
for (int j=0; j<i; j++)
cout << j;
{{ select(10) }}
- 0010120123
- 01012012301234
- 001012012301234
- 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);
// L2
}
printf("\n"); // L1
}
{{ select(11) }}
- 将L1注释的 printf("\n") 移到L2注释所在行,效果相同
- 将L1注释的 printf("\n") 修改为 printf("%c", '\n') 效果相同
- 将 Lie * Hang > 9 修改为 Lie * Hang >= 10 效果相同
- 将 Lie * Hang > 9 修改为 Hang * Lie > 9 效果相同
第12题
在数学中N!表示N的阶乘,即1到N的乘积,如 3! = 1*2*3。下面的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;
{{ select(12) }}
-
nowNum *= i; tnt += nowNum; -
nowNum = nowNum * i; tnt = tnt + nowNum; -
nowNum *= i; tnt = nowNum + tnt; -
nowNum = nowNum + i; tnt = 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);
{{ select(13) }}
- M-2
- M-1
- M
- M+1
第14题
下面C++代码实现输出如下图形,横线应填入的代码是( )。
/*
高度:5
*
***
*****
*******
*********
*/
int height;
cout << "高度:";
//获取用户输入的高度
cin >> height;
for (int i=0; i<height; i++){
//打印每行前面的空格
for (int j = 0; j < ______; j++)
cout << " ";
//打印每行的星号
for (int k = 0; k < ______; k++)
cout << "*";
//输出一行后,换行
cout << endl;
}
{{ select(14) }}
- height - i 和 2 * i
- height 和 2 * i
- height - i 和 2 * i + 1
- height - i - 1 和 2 * i + 1
第15题
下面C++代码执行后的输出是30,则横线处不能填入( )。
int a=10,b=20,c=30;
cout << ______ << endl;
{{ select(15) }}
- max(max(a, b), c)
- min(a+b, c)
- sqrt(a+b+c)
- (a+b+c)/2
二、判断题(每题4分,共40分)
第16题
在Windows的资源管理器中为已有文件A建立副本的操作是Ctrl+C,然后Ctrl+V。 {{ select(16) }}
- 正确
- 错误
第17题
在C++代码中,假设N为正整数,则cout << (N - N / 10 * 10) 将获得N的个位数。 {{ select(17) }}
- 正确
- 错误
第18题
在C++语句cout << (10 <= N <= 12) 中,假设N为12,则其输出为1。 {{ select(18) }}
- 正确
- 错误
第19题
如果C++表达式int(sqrt(N))*int(sqrt(N)) == N的值为True,则说明N为完全平方数,如4、9、25等。 {{ select(19) }}
- 正确
- 错误
第20题
下面C++代码执行后将输出2*3=6。
int a = 2, b = 3;
printf("%a*%d=%d",a,b,a*b);
{{ select(20) }}
- 正确
- 错误
第21题
以下C++代码因为循环变量为将导致错误,即不能作为变量名称,不符合C++变量命名规范。
for (int _ = 0; _ < 10; _++)
continue;
{{ select(21) }}
- 正确
- 错误
第22题
下面C++代码执行后因为有break,将输出0。
int i;
for (i = 0; i < 10; i++) {
continue;
break;
}
cout << i;
{{ select(22) }}
- 正确
- 错误
第23题
下面的C++代码执行后将输出18行"OK"。
int i,j;
for (i = 8; i > 2; i-=2)
for (j = 0; j < i; j++)
printf("OK\n");
{{ select(23) }}
- 正确
- 错误
第24题
将下面C++代码中的i = 1调整为i = 0的输出结果相同。
int i;
int cnt = 0;
for (i = 1; i < 5; i++)
if(i%2) cnt += 1;
cout << cnt;
{{ select(24) }}
- 正确
- 错误
第25题
下面两段C++代码都是用于求1-10的和,其运行结果相同。通常说来,for循环都可以用while循环实现。
// 代码1
int tnt;
int i;
tnt = 0;
for (i = 1; i < 10 + 1; i++)
tnt += i;
cout << tnt << endl;
// 代码2
int tnt;
int i;
tnt = 0;
i = 1;
while (i <= 10){
tnt += i;
i += 1;
}
cout << tnt << endl;
{{ select(25) }}
- 正确
- 错误