Skip to content

GESP模拟一级

发布时间:

一. 单选题(每题 2 分,共 30 分)

  1. 以下选项中,不符合 C++ 变量命名规则的是( )?

    A. Luogu
    B. cCfGEsp
    C. Simu1ati0n
    D. Test!

  2. C++ 表达式 4 + 3 * 7 % 10 - 1 的结果是

    A. 2
    B. 4
    C. 6
    D. 8

  3. C++ 语言中,若定义 int a = 2, b = 4, c = 7;,则下列选项中表达式为真的是?( )

    A. a + b >= c
    B. a < b && c < b
    C. a > b || a + b < c
    D. b - a > c - b

  4. 下列 C++ 代码用于单位换算,处理将小时(hr)和分钟(mn)转为秒(sec)的过程。则横线处应当填写的代码为( )?

    int hr, mn;
    cin >> hr >> mn;
    ________;
    cout << sec << endl;
    

    A. sec = hr * 3600 + mn * 60
    B. sec = hr + mn * 3600
    C. int sec = hr * 3600 + mn * 60
    D. int sec = hr * 60 + mn * 60

  5. 下列 C++ 代码执行后的输出是( ):

    int x = 7;
    printf("=%d%%",x + 3);
    

    A. =7
    B. =7%%
    C. =10%
    D. =10%%

  6. 定义三个 int 类型的变量 a,b,c,下列 C++ 语句中,不符合 C++ 语法的选项是( )?

    A. a = b = c;
    B. c = (a = 3, b = 4 + a);
    C. b %= 1.5;
    D. a /= ((b = 4) - (c = 3));

  7. 下列 C++ 代码被执行时,对于任意输入的正整数 n,永远不会出现的输出结果是( )?

    int n;
    cin >> n;
    if (n % 6 == 0)
    	cout << "Divided by 6." << endl;
    else if (n % 8 == 0)
    	cout << "Divided by 8." << endl;
    else if (n % 24 == 0)
    	cout << "Divided by 24." << endl;
    else
    	cout << "Error." << endl;
    

    A. Divided by 6.
    B. Divided by 8.
    C. Divided by 24.
    D. Error.

  8. 小洛编写了一个程序,用于练习加法。他的程序能根据小洛输入的两个正整数 a 和 b,输出 a+b 的结果。小洛需要输入五组 a 和 b 程序才会退出。他的程序如下所示。对于该代码,错误的说法是( )?

    for (int i = 1; i < 5; i++) {
    	int a, b;
    	cin >> a >> b;
    	cout << a + b << endl;
    }
    cout << "Finish!" << endl;
    

    A. 若输入的 a 为 25,b 为 40,则输出的结果为 65
    B. 当程序输出 Finish! 后,无法继续读入新的 ab
    C. 该代码中存在错误,会使得小洛实际只能输入 4ab
    D. 若小洛输入的 ab 非常大(比如 15 位),该程序依然满足小洛的需求,可以正确计算 a+b 的结果。

  9. 下列 C++ 代码执行后的输出是( )?

    int ans = 0;
    for (int i = 1; i <= 20; i++) {
    	ans += i;
    	i += 2;
    }
    cout << ans << endl;
    

    A. 20
    B. 70
    C. 100
    D. 210

  10. 下列 C++ 代码执行后的输出是( )?

    int n = 19, ans = 0;
    while (n) {
    	if (n % 7 == 0)
    		break;
    	ans += n / 7;
    	n -= 2;
    }
    cout << ans << endl;
    

    A. 1
    B. 3
    C. 5
    D. 9

  11. 下列 C++ 代码执行后的输出是( )?

    int k = 5307;
    for (; k; k /= 10)
    	cout << k % 10;
    

    A. 7
    B. 7035
    C. 530535
    D. 703707

  12. 下列 C++ 代码用于计算两个正整数 ab 的最小公倍数。两个正整数 ab 的最小公倍数的含义是最小的能够被 a 和 b 同时整除的正整数,例如 46 的最小公倍数是 12。为正确计算出最小公倍数,横线上应当填写的代码为( )?

    int a, b;
    cin >> a >> b;
    for (int i = a;; i++) {
    	if (________) {
    		cout << i << endl;
    		break;
    	}
    }
    

    A. i % a == 0 || i % b == 0
    B. a % i == 0 || b % i == 0
    C. i % a == 0 && i % b == 0
    D. a % i == 0 && b % i == 0

  13. 下列 C++ 代码的输出结果是( )

    int x = 57;
    switch (x % 5) {
    	case 1: cout << "A";
    	case 2: cout << "B";
    	case 3: cout << "C";
    	case 4: cout << "D";
    	default: cout << "E";
    }
    

    A. B
    B. BCDE
    C. BCD
    D. ABCDE

  14. 以下是某手机的推销宣传广告中展示的各项参数。该手机宣传中,最不合理的一项是( )?

    选项参数详细数据
    A处理器骁龙8 Gen3
    B屏幕分辨率2400 x 1080
    CRAM16 GB
    DROM512 GB
  15. 小洛在使用 Dev-Cpp,若需要新建一个 C/C++ 文件,他可以通过哪个快捷键完成这项操作( )?

    A. Ctrl+N
    B. Ctrl+V
    C. Ctrl+Z
    D. Ctrl+O

## 二. 判断题(每题 2 分,共 20 分)

1、小洛编写的程序陷入了死循环,他可以通过快捷键 Ctrl+C 终止他的程序。

2、 ENIAC 是世界上第一台计算机,其在设计时采用了集成电路作为主要元器件。

3、 在 C++ 语言中,若变量 n 被赋值为 345,则 cout << n / 10 % 10; 的结果为 4

4、 在 C++ 语言中,注释可以使用 // 书写,也可以使用成对的 /* */ 书写。

5、 在 C++ 语言中,do while 循环内的语句至少会执行一次。

6、 在 C++ 语言中,可以定义一个名叫 for 的变量名。

7、在 C++ 语言中,代码段 d = (a > b ? a : b); 可以让 d 赋值为 a 和 b 中的较大值。

8、 在 C++ 语言中,执行代码 a = (b *= 3, c = 4 + 3); 后,变量 a 的值为 7。

9、在 C++ 语言中,在循环体内只要有 break 语句,该循环就必然不可能是死循环。

10、 Linux 作为一种操作系统,可以全面管理协调计算机硬件和软件资源。

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

1、 小洛的幸运数字

题目描述

小洛得到了 n 个整数,他认为,“个位数是 3,或者是 3 的倍数的整数”是不好的,应当被排除。

请编写一个程序,将不好的数字排除掉后,计算剩余数字的总和,以及剩下的数字数量。

输入格式

  • 第一行包含一个整数 n ( 1 ≤ n ≤1000)。
  • 第二行包含 n 个整数 a1, a2, …, an(每个整数 0≤a i ≤10^4)。
输出格式

输出两个整数,用空格隔开。第一个整数表示这些数字中个位数不是 3 ,且不是 3 的倍数的数字的总和,第二个整数表示这些数字的个数。

样例 1
样例输入 1
js
5
12 23 35 47 50
   
样例输出 1
js
132 3
   
提示

输入的 5 个数字分别是 12, 23, 35, 47, 50 。

其中 23 的个位数是 3,12 是 3 的倍数,所以这两个数不符合条件。

2、明日复明日

题目描述

给定一个日期,要求输出它的后一天的日期。假设今年不是闰年。

输入包括两个整数,分别表示月份和日期。你需要编写一个程序来计算并输出这个日期的后一天。如果输入的日期是年末的最后一天(12 月 31 日),则需要输出下一年的 1 月 1 日。

输入格式

输入只有一行,包括两个整数,分别表示月份 M 和日期 D 。

  • M 是一个整数,表示月份(1≤ M ≤ 12)。
  • D 是一个整数,表示日期(1 ≤ D ≤ 31,且不大于当月的最大天数)。
输出格式

输出一行,包含两个整数,分别表示后一天的月份和日期。

样例
样例输入
js
3 14
   
样例输出
js
3 15
   
样例 2
样例输入 2
js
4 30
   
样例输出 2
js
5 1
   
样例 3
样例输入 3
js
12 31
   
样例输出 3
js
1 1
   
提示
  • 每个月份的天数如下:

    • 1 月:31 天
    • 2 月:28 天(不考虑闰年)
    • 3 月:31 天
    • 4 月:30 天
    • 5 月:31 天
    • 6 月:30 天
    • 7 月:31 天
    • 8 月:31 天
    • 9 月:30 天
    • 10 月:31 天
    • 11 月:30 天
    • 12 月:31 天
  • 输入保证为有效的日期,不需要进行日期有效性的验证。

例子解释

对于输入样例 1,3 月 14 日的后一天是 3 月 15 日。

对于输入样例 2,4 月 30 日的后一天是 5 月 1 日。

对于输入样例 3,12 月 31 日的后一天是下一年的 1 月 1 日。