GESP 2023年12月认证 C++ 1级真题

1 单选题(每题 2 分,共 30 分)

👉 点击查看答案
题号123456789101112131415
答案ABBABCACDDBDBCB

第 1 题 以下 C++ 不可以作为变量的名称的是( )。

  • A. CCF_GESP
  • B. ccFGESP
  • C. CCFgesp
  • D. CCF_GESP

第 2 题 C++ 表达式 10 - 3 * (2 + 1) % 10 的值是( )。

  • A. 0
  • B. 1
  • C. 2
  • D. 3

第 3 题 假设现在是上午十点,求出 N 小时(正整数)后是第几天几时,如输入 20 小时则为第 2 天 6 点,如 N 输入 4 则为今天 14 点。为实现相应功能,应在横线处填写代码是( )。

int N, dayX, hourX;  
cin >> N;  
dayX = ______, hourX = ______;  
if (dayX == 0)  
    cout << "今天" << hourX << "点";  
else  
    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

第 4 题 下面的程序用于判断 N 是否为偶数,横线处应填写代码是( )。

cin >> N;  
if (______)  
    cout << "偶数";  
else  
    cout << "奇数";  
  • A. N % 2 == 0
  • B. N % 2 = 0
  • C. N % 2
  • D. N % 2 != 0

第 5 题 下面对 C++ 代码执行后输出的描述,正确的是( )。

cin >> N;  
cnt = 0;  
for (int i = 1; i < N; i++)  
    cnt += 1;  
cout << cnt;  
  • A. 如果输入的 N 是大于等于 2 整数,第 5 行将输出 0。
  • B. 如果输入的 N 是大于等于 2 整数,第 5 行将输出 N-1。
  • C. 如果输入的 N 是大于等于 2 整数,第 5 行将输出 N。
  • D. 以上说法均不正确。

第 6 题 下面 C++ 代码执行后的输出是( )。

cnt = 0;  
for (int i = 1; i < 10; i++) {  
    cnt += 1;  
    i += 2;  
}  
cout << cnt;  
  • A. 10
  • B. 9
  • C. 3
  • D. 1

第 7 题 下面 C++ 代码执行后的输出是( )。

cnt = 0;  
for (int i = 1; i < 20; i++) {  
    if (i % 2)  
        continue;  
    else if (i % 3 == 0 && i % 5 == 0)  
        break;  
    cnt += i;  
}  
cout << cnt;  
  • A. 90
  • B. 44
  • C. 20
  • D. 10

第 8 题 下面 C++ 代码执行后的输出是( )。

int N = 10;  
int cnt = 0;  
while (1) {  
    if (N == 0) break;  
    cnt += 1;  
    N -= 2;  
}  
cout << cnt;  
  • A. 11
  • B. 10
  • C. 5
  • D. 4

第 9 题 下面 C++ 代码用于判断一个数是否为质数(素数),在横线处应填入代码是( )。

cin >> N;  
int cnt = 0;  
for (int i = 1; i < N + 1; i++)  
    if (N % i == 0)  
        ______  
if (cnt == 2)  
    cout << N << "是质数。";  
else  
    cout << N << "不是质数。";  
  • A. cnt = 1
  • B. cnt = 2
  • C. cnt += 1
  • D. cnt += 1

第 10 题 对下面的代码,描述正确的是( )。

#include <stdlib.h>  
using namespace std;  
int main() {  
    int arr[] = {2, 6, 3, 5, 4, 8, 1, 0, 9, 10};  
    for (int i = 0; i < 10; i++)  
        cout << arr[i] << " ";  
    cout << i << endl;  
    cout << endl;  
    return 0;  
}  
  • 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. 提示有编译错误

第 11 题 执行下面 C++ 代码后输出是( )。

int cnt = 0;  
for (int i = 10; i > 3; i -= 3)  
    cnt = cnt + i;  
cout << cnt;  
  • A. 3
  • B. 21
  • C. 27
  • D. 49

第 12 题 定义变量 char c,下面对 c 赋值的语句,不符合语法的是( )。

  • A. c = (char)66;
  • B. c = (char)(66);
  • C. c = char(66);
  • D. c = char 66;

第 13 题 下图所示 C++ 代码对大写字母 ‘A’ 到 ‘Z’ 分组,对每个字母输出所属的组号,那么输入 ‘C’ 时将输出的组号是?( )。

char c;  
while (1) {  
    cin >> c;  
    if (c == 'q') break;  
    switch (c) {  
        case 'A': cout << "1 "; break;  
        case 'B': cout << "3 ";  
        case 'C': cout << "3 ";  
        case 'D': cout << "5 "; break;  
        case 'E': cout << "5 "; break;  
        default: cout << "9 ";  
    }  
    cout << endl;  
}  
  • A. 3
  • B. 3 5
  • C. 3 5 9
  • D. 以上都不对

第 14 题 某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )

  • A. 麦克风
  • B. 扬声器
  • C. 油量表
  • D. 传感器

第 15 题 现代计算机是指电子计算机,它所基于的是( )体系结构。

  • A. 艾伦·图灵
  • B. 冯·诺依曼
  • C. 阿塔纳索夫
  • D. 埃克特·莫克利

2 判断题(每题 2 分,共 20 分)

👉 点击查看答案
题号12345678910
答案×××××
  1. C++ 表达式 int(3.14) 的值为 3。( )
  2. C++ 语句 cout << (2 * 3, 3 % 10, 2 + 3) 的输出为 6,3,5。( )
  3. for(int i = 1; i < 10; i += 3) 表示从 1 开始到 10 结束间隔为 3,相当于 1、4、7、10。( )
  4. C++ 表达式 010 + 100 + 001 的值为 111。( )
  5. if 语句中的条件表达式的结果可以为 int 类型。( )
  6. 在下面的 C++ 代码 while(1) continue; 中,由于循环中的 continue 是无条件被执行,因此将导致死循环。( )
  7. C++ 表达式 ('1' + '1' == '2' ? flag=1 : flag=2) 的结果值和表达式 (flag == 2) 的相同。( )
  8. 在 C++ 的程序中,不能用 scanf 作为变量名。( )
  9. 小杨最近准备考 GESP,他用的 Dev C++ 来练习和运行程序,所以 Dev C++ 也是一个小型操作系统。( )
  10. 任何一个 while 循环都可以转化为等价的 for 循环。( )

3 编程题(每题 25 分,共 50 分)

3.1 编程题1:小杨的考试

试题名称:小杨的考试
时间限制:1.0 s
内存限制:128.0 MB

问题描述
今天是星期 X,小杨还有 N 天就要考试了,你能推算出小杨考试那天是星期几吗?(本题中使用 7 表示星期日)

输入格式
输入 2 行,第一行一个整数 ( X (1 \leq X \leq 7) );第二行一个整数 ( N (1 \leq N \leq 364) )。

输出格式
输出一个整数,表示小杨考试那天是星期几。

样例输入1

1  
6  

样例输出1

7  

样例输入2

5  
3  

样例输出2

1  

参考程序

#include <stdio.h>  
int main(int argc, char **argv) {  
    int x, n;  
    scanf("%d%d", &x, &n);  
    printf("%d\n", (x - 1 + n % 7) % 7 + 1);  
    return 0;  
}  

3.2 编程题2:小杨报数

试题名称:小杨报数
时间限制:1.0 s
内存限制:128.0 MB

问题描述
小杨需要从 1 到 ( N ) 报数。在报数过程中,小杨希望跳过 ( M ) 的倍数。例如,如果 ( N = 5 ),( M = 2 ),那么小杨就需要依次报出 1、3、5。现在,请你依次输出小杨报的数。

输入格式
输入 2 行,第一行一个整数 ( N )(( 1 \leq N \leq 1,000 ));第二行一个整数 ( M )(( 2 \leq M \leq 100 ))。

输出格式
输出若干行,依次表示小杨报的数。

样例输入1

5  
2  

样例输出1

1  
3  
5  

样例输入2

10  
3  

样例输出2

1  
2  
4  
5  
7  
8  
10  

参考程序

#include <stdio.h>  
int main(int argc, char **argv) {  
    int n, m, i;  
    scanf("%d%d", &n, &m);  
    for (i = 1; i <= n; i++) {  
        if (i % m != 0)  
            printf("%d\n", i);  
    }  
    return 0;  
}