2023年GESP12月认证C++一级真题解析

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

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值