2023年GESP12月认证C++一级试卷
分数:100 题数:27
一、单选题(共15题,每题2分,共30分)
1、以下C++不可以作为变量的名称的是(A )。
-
A. CCF GESP
-
B. ccfGESP
-
C. CCFgesp
-
D. CCF_GESP
解析:变量名不能包含空格,所以选项A "CCF GESP" 不合法。
2、 C++表达式 10 - 3 * (2 + 1) % 10
的值是(B )。
-
A. 0
-
B. 1
-
C. 2
-
D. 3
解析:表达式按优先级计算,结果为 1。
3、假设现在是上午十点,求出N小时(正整数)后是第几天几时,如输入20小时则为第2天6点,如N输入4则为今天14点。为实现相应功能,应在横线处填写代码是( B)。
1 int N, dayX, hourX;
2
3 cin >> N;
4
5 dayX = __________, hourX = __________;
6 if (dayX == 0)
7 cout << "今天" << hourX << "点";
8 else
9 cout << "第" << (dayX + 1) << "天" << hourX << "点";
-
A. (10 + N) % 24 , (10 + N) / 24
-
B. (10 + N) / 24 , (10 + N) % 24
-
C. N % 24 , N / 24
-
D. 10 / 24 , 10 % 24
解析:小时取余24得到几时,整除24得到第几天,所以选 B
4、下面的程序用于判断N是否为偶数,横线处应填写代码是( A)。
1 cin >> N;
2 if (__________)
3 cout << "偶数";
4 else
5 cout << "奇数";
-
A. N % 2 == 0
-
B. N % 2 = 0
-
C. N % 2
-
D. N % 2 != 0
解析:判断是否为偶数,正确代码是 N % 2 == 0
5、下面对C++代码执行后输出的描述,正确的是( B)。
1 cin >> N;
2 cnt = 0;
3 for (int i = 1; i < N; i++)
4 cnt += 1;
5 cout << cnt;
-
A. 如果输入的N是小于等于2的整数,第5行将输出0。
-
B. 如果输入的N是大于等于2的整数,第5行将输出N-1。
-
C. 如果输入的N是大于等于2的整数,第5行将输出N。
-
D. 以上说法均不正确。
解析:如果输入的N大于等于2整数,第5行将输出N-1。
6、下面C++代码执行后的输出是(C )。
1 cnt = 0;
2 for (int i = 1; i < 10; i++) {
3 cnt += 1;
4 i += 2;
5 }
6 cout << cnt;
-
A. 10
-
B. 9
-
C. 3
-
D. 1
解析:代码的输出是3。
7、下面C++代码执行后的输出是(A )。
1 cnt = 0;
2 for (int i = 1; i < 20; i++) {
3 if (i % 2)
4 continue;
5 else if (i % 3 == 0 && i % 5 == 0)
6 break;
7 cnt += i;
8 }
9 cout << cnt;
-
A. 90
-
B. 44
-
C. 20
-
D. 10
解析:代码输出结果是90。
8、下面C++代码执行后的输出是(D )。
1 N = 10;
2 cnt = 0;
3 while (1) {
4 if (N == 0)break;
5 cnt += 1;
6 N -= 2;
7 }
8 cout << cnt;
-
A. 11
-
B. 10
-
C. 5
-
D. 4
解析:代码输出结果是4。
9、下面C++代码用于判断一个数是否为质数(素数),在横线处应填入代码是(D )。
1 cin >> N;
2 cnt = 0;
3 for (int i = 1; i < N + 1; i++)
4 if (N % i == 0)
5 __________;
6 if (cnt == 2)
7 cout << N << "是质数";
8 else
9 cout << N << "不是质数";
-
A. cnt = 1
-
B. cnt = 2
-
C. cnt =+ 1
-
D. cnt += 1
解析:代码正确是 cnt += 1
。
10、对下面的代码,描述正确的是(A )。
1 # include <stdlib.h>
2
3 using namespace std;
4
5 int main() {
6 int arr[] = { 2,6,3,5,4,8,1,0,9,10 };
7 for (int i = 0; i < 10; i++)
8 cout << arr[i] << " ";
9 cout << i << endl;
10
11 cout << endl;
12 return 0;
13 }
-
A. 输出 2 6 3 5 4 8 1 0 9 10 10
-
B. 输出 2 6 3 5 4 8 1 0 9 9
-
C. 输出 2 6 3 5 4 8 1 0 9 10
-
D. 提示有编译错误
解析:代码输出 2 6 3 5 4 8 1 0 9 10 10。
11、执行下面C++代码后输出是(B )。
1 cnt = 0;
2 for (i = 10; i > 3; i -= 3)
3 cnt = cnt + i;
4 cout << cnt;
5 return 0;
-
A. 3
-
B. 21
-
C. 27
-
D. 49
解析:代码输出21。
12、定义变量 char c ,下面对 c 赋值的语句,不符合语法的是(D )。
-
A. c = (char)66;
-
B. c = (char)(66);
-
C. c = char(66);
-
D. c = char 66;
解析:c = char 66;
是不合法的赋值方式。
13、 下图所示C++代码对大写字母 'A' 到 'Z' 分组,对每个字母输出所属的组号,那么输入 'C' 时将输出的组号是?(C )。
1 char c;
2 while (1) {
3 cin >> c;
4 if (c == 'q') break;
5 switch (c) {
6 case'A':cout << "1"; break;
7 case'B':cout << "3";
8 case'C':cout << "3";
9 case'D':cout << "5"; break;
10 case'E':cout << "5"; break;
11 default:cout << "9";
12 }
13 cout << endl;
14 }
-
A. 3
-
B. 3 5
-
C. 3 5 9
-
D. 以上都不对
解析:代码输出组号 3 5 9。
14、某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。(C )
-
A. 麦克风
-
B. 扬声器
-
C. 油量表
-
D. 传感器
解析:油量表不是必须的。
15、现代计算机是指电子计算机,它所基于的是(B )体系结构。
-
A. 艾伦·图灵
-
B. 冯·诺依曼
-
C. 阿塔纳索夫
-
D. 埃克特-莫克利
解析:现代计算机基于冯·诺依曼体系结构。
二、判断题(共10题,每题2分,共20分)
1、C++表达式 int(3.14) 的值为3。(√ )
-
正确();
-
错误();
解析:将3.14强制转换为整数,结果是3。
2、 C++语句 cout << (2 * 3, 3 % 10, 2+3) 的输出为 6,3,5 。 (× )
-
正确();
-
错误();
解析:逗号表达式的结果是最后一个表达式的值,即5。
3、for(int i = 1; i < 10; i += 3); 表示i从1开始到10结束间隔为3,相当于1、4、7、10。(x )
-
正确();
-
错误();
解析:i的值为1、4、7,循环条件i < 10,不能到10。
4、C++表达式010+100+001的值为111。(x )
-
正确();
-
错误();
解析:前导0表示八进制,010是8,001是1,计算结果是109。
5、if 语句中的条件表达式的结果可以为 int 类型(√)。
-
正确();
-
错误();
解析:条件表达式可以是 int 类型。
6、在下面的C++代码 while(1) continue; 中,由于循环中的 continue 是无条件被执行,因此将导致死循环。(√ )
-
正确();
-
错误();
解析:while(1)是死循环,continue不影响。
7、C++表达式 ('1'+'1'=='2'? flag=1:flag=2)
的结果值和表达式 (flag==2) 的相同。(x )
-
正确();
-
错误();
解析:'1'+'1'的ASCII码相加不是‘2’。
8、 在C++的程序中,不能用 scanf 作为变量名。(√ )
-
正确();
-
错误();
解析:scanf是库函数名,不能作为变量名。
9、小杨最近在准备考GESP,他用的Dev C++
来练习和运行程序,所以Dev C++
也是一个小型操作系统。(x )
-
正确();
-
错误();
解析:Dev C++是IDE,不是操作系统。
10、任何一个 while 循环都可以转化为等价的 for 循环( √)。
-
正确();
-
错误();
解析:while 循环可以转化为等价的 for 循环。
三、编程题(共2题,共50分)
1、小杨的考试
【问题描述】
今天是星期 ,小杨还有 天就要考试了,你能推算出小杨考试那天是星期几吗?(本题中使用 表示星期日)
【输入描述】
输入 2 行,第一行一个整数 ();第二行一个整数 ()。
【输出描述】
输出一个整数,表示小杨考试那天是星期几。
【特别提醒】
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
【样例输入1】
1
6
【样例输出1】
7
【样例解释 1】
今天是星期 1,那么 6 天后就是星期日,星期日在本题中用 表示。
【样例输入2】
5
3
【样例输出2】
1
【样例解释 2】
今天是星期 5,那么 3 天后就是星期 1。
2、小杨报数
【问题描述】
小杨需要从 到 报数。在报数过程中,小杨希望跳过 的倍数。例如,如果 ,,那么小杨就需要依次报出 、、。
现在,请你依次输出小杨报的数。
【输入描述】
输入 2 行,第一行一个整数 ();第二行一个整数 ()。
【输出描述】
输出若干行,依次表示小杨报的数。
【特别提醒】
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
【样例输入 1】
5
2
【样例输出 1】
1
3
5
【样例输入 2】
10
3
【样例输出 2】
1
2
4
5
7
8
10