Skip to content

洛谷 202406GESP 模拟 二级

发布时间:

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

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

    A. Love!Luogu
    B. 012AB
    C. __GESP
    D. P(AB)

  2. 下图为“50 米跑步”评分流程图。若需满足:时间(t)小于等于 7 秒为优秀;7 到 9 秒为良好,大于 9 秒为需努力,则 A 处和 B 处分别应当填写( )?

    A. t>7t<=7
    B. t<=7t>7
    C. t>=9t<=7
    D. t<=9t<=7

  3. C++ 语言中,变量 x 为以下哪项时,可以使得表达式 sqrt(x) == abs(x) 成立?( )

    A. 1
    B. 2
    C. 3
    D. 4

  4. 一个正整数 n 的双阶乘为不超过这个正整数且与它有相同的奇偶性的所有正整数的乘积,例如 5!!=1 x 3 x 5=15。以下 C++ 代码用于求解计算 n(n ≤ 25) 的双阶乘,横线处应当填写( )?

    long long ans = 1;
    for (int i = 1; i <= n; i++) {
       if (________)
           ans *= i;
    }
    cout << ans << endl;
    

    A. n % i == 0
    B. n % i == i % n
    C. n % 2 == i
    D. n % 2 == i % 2

  5. 现需要输出一个边长为 n 的,由字符 * 构成的等腰直角三角形,例如:当 n=4 时如下图所示:

    js
       *
      **
     ***
    ****
       

    以下 C++ 代码用于求解该问题,则横线处应当填入的代码为( )?

    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        for (________)
            cout << ' ';
        for (int j = 1; j <= i; j++)
            cout << '*';
        cout << endl;
    }
    

    A. int j = 1; j <= n - i; j++
    B. int j = 1; j <= i; j++
    C. int j = 1; j <= i; i++
    D. int j = 1; j <= n - i; i++

  6. 下列 C++ 代码用于计算正整数 n 各位数之和的立方,保证 1 ≤ n ≤ 10^ 18 。下面对于该代码,错误的说法是( )?

    long long n, ans = 0;
    cin >> n;
    while (n > 0) {
       int x = n % 10;
       n /= 10;
       ans += x;
    }
    cout << ans * ans * ans << endl;
    

    A. 变量 ans 定义为 int 类型,不会影响程序的输出结果。
    B. 该程序的 while 循环可以改写为 for 循环。
    C. 该程序的循环一共要执行 n 次。
    D. 当 n=12345 时,输出为 3375。

  7. 下列代码用于判断一个不超过 10^9 的正整数 n 是否能被 38 整除且出现过 38。对于该代码,错误的说法是( )?

    int n; cin >> n;
    bool flag = 0;
    if (n % 38 == 0) flag = 1;
    while (n) {
       if (n % 100 == 38) {
           flag = 1;
           break;
       }
       n /= 10;
    }
    if (flag)
       cout << "Yes" << endl;
    else
       cout << "No" << endl;
    

    A. 该代码不存在语法问题,可以正常编译运行,且输出结果能达成预期。
    B. 该程序的 while 循环用于判断正整数 n 中是否出现过 38。
    C. 若删除 break 语句,不影响程序的输出结果。
    D. 若误输入了负数 n,程序不会陷入死循环。

  8. 小洛编写了一个程序,用于练习加法。他的程序能生成两个随机自然数,小洛需要计算出这两个数的和。小洛需要正确计算 5 次程序才会退出。他的程序如下所示。对于该代码,错误的说法是( )?

    srand(time(0));
    int tot = 0;
    while (tot <= 5) {
       int a = rand() % 10, b = rand() % 10, x;
       cout << a << "+" << b << "=";
       cin >> x;
       if (a + b == x) {
           cout << "Correct!" << endl;
           tot++;
       } else
           cout << "Wrong!" << endl;
    }
    cout << "Finish!" << endl;
    

    A. srand(time(0)) 的意思是,以当前的系统时间作为初始种子,初始化随机数生成器。
    B. 间隔一段时间运行该代码,rand() 函数可以产生不同的随机数数列。
    C. 该代码中存在错误,会使得小洛实际需要正确计算 6 次才会退出程序。
    D. 每次计算加法时的变量 a 和 b 必然不可能为相同的数。

  9. 已知 A 的 ASCII 码为 65,a 的 ASCII 码为 97。则以下哪一行代码可以完成将输入的大写字母字符 ch 转化为小写字母后并输出?( )

    A. cout << char(ch+32);
    B. cout << char(ch+'32');
    C. cout << char(ch+int('A')-int('a'));
    D. cout << char(ch+'97');

  10. 下面 C++ 代码,若输入 n=12,则运行后输出是( )?

    int n, ans = 0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
       for (int j = i; j >= 1; j--) {
           if (i % j == 0 && n % j == 0) {
               ans += j;
               break;
           }
       }
    }
    cout << ans << endl;
    

    A. 12
    B. 28
    C. 40
    D. 60

  11. 下面 C++ 代码,若输入 n=12,则运行后输出是( )?

    int n, ans = 0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
       int p = 0;
       for (int j = i; j >= 1; j--) {
           int k = j;
           for (; k >= 1; k--) {
               if (i % k == 0 && j % k == 0)
                   break;
           }
           if (k == 1) p++;
       }
       ans += p;
    }
    cout << ans << endl;
    

    A. 4
    B. 10
    C. 32
    D. 46

  12. 下面 C++ 代码,若输入 n=12,则运行后输出是( )?

    int n, tot = 0, i;
    cin >> n;
    for (i = 2; tot < n; i++) {
        bool flag = true;
        for (int j = 2; j <= i - 1; j++) {
            if (i % j == 0) {
                flag = false;
                break;
            }
        }
        if (flag) tot++;
    }
    cout << i - 1 << endl;
    

    A. 29
    B. 31
    C. 37
    D. 41

  13. CCF CSP 非专业组所采用的评测机 CPU 具体介绍如下:

    参数数据
    名称Intel Core i7-8700K
    主频3.7GHz
    一级缓存384KB
    二级缓存1.5MB
    三级缓存12MB

    该评测机有 32GB 的内存。在上述所提到的所有可以用于数据存储的硬件中,存取数据最快的是( )?

    A. 一级缓存
    B. 二级缓存
    C. 三级缓存
    D. 内存

  14. 小洛要为班级同学讲解计算机网络知识,其中有一段内容如下:

    IPv4 协议采用 32 位地址,一共能够提供约 A 个地址空间。随着互联网的不断发展,地址不断地被分配,地址资源日趋枯竭。因此,它正逐渐被使用 B 位地址的 IPv6 协议所取代。

    以上的 A 和 B 分别应当填入( )?

    A. 2^31,64
    B. 2^31,128
    C. 2^32,64
    D. 2^32,128

  15. 计算机界的最高奖项是( )?

    A. 诺贝尔奖
    B. 图灵奖
    C. 菲尔兹奖
    D. CCF 终身成就奖

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

  1. 78.12.123.95 是一个合法的 B 类 IPv4 地址。

  2. FTP 协议是一种应用层协议,可以用于进行远程文件传输。

  3. 高级语言比汇编语言程序更容易从一种计算机上移植到另一种计算机上。

  4. 在 C++ 语言中,使用 STL 函数 c=max(a,b) 求解变量 a,b 中的最大值时,若 a 为 int 类型,而 b 为 long long 类型,程序也可以正常运行。

  5. 在 C++ 语言中,执行下列代码的结果为 34。

    int ans = 0;
    for (int i = 1; i <= 50; i++)
       ans += !!(i % 3);
    cout << ans << endl;
    
  6. 在 C++ 语言中,下列代码可以正常执行,输出一个实数。

    cout << sqrt(-1) << endl;
    
  7. 在 C++ 语言中,循环可以进行多层嵌套。循环层数嵌套多的代码,运行速度一定比层数嵌套少的代码慢。

  8. A 和 B 是两个布尔类型表达式,则在 C++ 语言下,!(A && B)(!A) || (!B) 等价。

  9. 在 C++ 语言中,可以定义一个名叫 cin 的变量名。

  10. 已知:在 C++ 语言中,执行下列代码可以计算得到圆周率 π 的近似值。

    你需要判断这一句话的正误:如果将 eps 的定义改为 const double eps=1e-6;,计算得到的 \pi 更精确。

    const double eps = 1e-3;
    int main() {
        int sign = 1, n = 1;
        double ans = 0, term = 1;
        while (abs(term) >= eps) {
            ans += term;
            n += 2;
            sign = -sign;
            term = sign / (1.0 * n);
        }
        cout << fixed << setprecision(8) << ans * 4 << endl;
        return 0;
    }
    

编程题

1、周长与面积计算

题目描述

小洛有 n 个正方形,第 1 个正方形的边长为 1,第 2 个正方形的边长为 2,以此类推,第 n 个正方形的边长为 n。它们被紧密地排列成一行。小洛想要知道这个图案的周长和面积分别是多少。

例如当 n=5 时的图案如下图所示。红色的边框代表整个图案的周长,绿色区域代表整个图案的面积:

输入格式

输入一个正整数 n。

输出格式

输出两行。

第一行一个正整数代表图案的周长;

第二行一个正整数代表图案的面积;

样例 1

样例输入 #1

js
5
   

样例输出 #1

js
40
55
   

样例 #2

样例输入 #2

js
9
   

样例输出 #2

js
108
285
   

提示

对于 70% 的数据,1 ≤ n ≤ 100;

对于所有数据,1 ≤ n ≤ 100000。

2 小洛的田字矩阵

题目描述

小洛想要构造一个 N x N 的日字矩阵(N 为奇数)。具体来说:

  • 这个矩阵共有 N 行,每行 N 个字符,其中最左列、最右列都是 |
  • 第一行、最后一行的第 2∼N-1 个字符都是 -
  • 中间一行(即第 (N+1)/2 行)的第 2∼ (N-1)/2,(N+3)/2∼ N-1 个字符都是 -
  • 中间一列(即第(N+1)/2 列)的第 2∼ (N-1)/2,(N+3)/2∼ N-1 个字符都是 |
  • 其余所有字符都是半角小写字母 x

例如,一个 N = 5 田字矩阵如下:

js
|---|
|x|x|
|-x-|
|x|x|
|---|
   

请你帮小洛根据给定的 N 打印出对应的“田字矩阵”。

输入格式

一行一个整数 N(5 ≤ N ≤ 49,保证 N 为奇数)。

输出格式

输出对应的“田字矩阵”。

请严格按格式要求输出,不要擅自添加任何空格、标点、空格等任何符号。你一个恰好输出 N 行,每行除了换行符外恰好包含 N 个字符,这些字符要么是 -,要么是 |,要么是 x你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查

样例 #1

样例输入 #1

js
5
   

样例输出 #1

js
|---|
|x|x|
|-x-|
|x|x|
|---|
   

样例 #2

样例输入 #2

js
7
   

样例输出 #2

js
|-----|
|xx|xx|
|xx|xx|
|--x--|
|xx|xx|
|xx|xx|
|-----|