zl程序教程

您现在的位置是:首页 >  工具

当前栏目

【小码匠自习室】CSP-J/S复赛准备:CodeBlocks编辑器

编辑器 准备 CSP 小码 自习室 Codeblocks 复赛
2023-06-13 09:15:39 时间

CodeBlocks

思维导图

简介

官网

  • 官网
  • Downloads
    • https://www.codeblocks.org/downloads/

安装

安装

  • 双击刚下载的安装文件:codeblocks-20.03mingw-setup.exe
  • 点击【Next】按钮
  • 点击【I Agree】按钮
  • 点击【Next】按钮
  • 点击【Install】按钮,如果想修改安装路径,点击【Browse...】按钮
  • 我是修改到【D:\tools】目录
  • 静静等待,大约1分钟左右就安装完毕
  • 点击【是(Y)】按钮,继续安装
  • 点击【Next】按钮
  • 点击【Finish】按钮,完成安装

创建工程

  • 启动Code::Blocks,主画面如下
  • 点击【Create a new project】链接
  • 点击【Empty Project】,然后按【Go】按钮
  • 点击【Next】按钮
  • 输入Empty project信息输入后如图所示,继续按【Next】按钮
  • Project tilte
  • Project filename
  • 按【Finish】按钮,创建工程完毕
  • 工程创建完毕,如下面窗口

添加C++

  • 点击菜单【File】->【New】->【File】
  • 本窗口中点击左侧的【Files】
  • 点击【C/C++ source】,然后点击【Go】按钮
  • 点击【Next】按钮
  • 选择【C++】,点击【Next】按钮
  • 点击【...】之后输入C++文件名
  • 输入文件名【candy】,然后按【保存】按钮
  • 点【Finish】按钮,完成C++文件创建
  • 刚创建的C++文件,是空文件
  • 展开左侧目录树,如下图
  • 输入如下代码,本代码示例是CSP-J2021的第一题,题目请参考下面链接,代码如下
    • https://www.luogu.com.cn/problem/P7909
#include <iostream>

using namespace std;

int main() {
    long long n, l, r;
    cin >> n >> l >> r;
    if ((l % n + (r - l)) >= n) {
        cout << n - 1 << endl;
    } else {
        cout << max(l % n, r % n) << endl;
    }
    return 0;
}
  • 编写完毕的代码如下

调试

  • 先认识下执行和调试工具栏, 左侧是直接执行,右侧是调试,直接点击左侧的执行按钮
  • 下面的窗口弹出,继续按【是(Y)】,悲剧
  • 依然是前面的窗口,是因为我们设置的有问题
  • 选择工程【A】,右键单击,选择【Properties...】选项
  • 【属性】设置画面,点击【Build targets】切换选项
  • 【Build targets】画面,需要勾选【Build target files】下的【candy.cpp】文件
  • 构建Debug模式下的下的【candy.cpp】文件
  • 构建Release模式下的下的【candy.cpp】文件,按【OK】按钮
  • 重新按工具栏的执行按钮,下面画面弹出,直接按【是[Y]】按钮
  • 输入入力值(本示例代码需要输入3个值,值之间用空格区分)
  • 执行结果如下图
  • 设置断点,参考下图,然后按右侧debug模式的执行按钮
  • 可以看到下图的断电,继续debug,按【Yes】按钮
  • 输入入力值,按回车健即可
  • Debug的大致流程到此结束

配置

解决调试时可以查看STL数据结构值的问题

问题: code::blacks调试代码时,默认是不能查看STL数据结构得值,只能看到内存地址,调试起来会很不爽

现象:

  • 参考代码
#include <bits/stdc++.h>

using namespace std;
#define endl '\n';

void coder_solution();

int main() {
    // 小码匠
    coder_solution();

    return 0;
}

bool is_prime(long long x) {
    if (x < 2) {
        return false;
    }

    for (long long i = 2; i * i <= x; i++) {
        if (x % i == 0) {
            return false;
        }
    }
    return true;
}

void coder_solution() {
    // 提升cin、cout效率
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    // 输入
    long long n;
    cin >> n;
    vector<long long> vi;
    int loop_count = cbrt(n);
    vector<bool> tf(1000001, true);
    tf[0] = false;
    tf[1] = false;
    vi.push_back(2);

    for (int i = 3; i <= loop_count; i += 2) {
        if (tf[i]) {
            for (int j = 3; j * i <= loop_count; j += 2) {
                tf[j * i] = false;
            }
            vi.push_back(i);
        }
    }
    int len = vi.size();
    int ans = 0;
    for (int i = 0; i < len - 1; ++i) {
        for (int j = i + 1; vi[j] * vi[j] * vi[j] <= n / vi[i] && j < len; ++j) {
            ans++;
        }
    }
    cout << ans;
}

调试时

解决办法:启用gdb来调试

Step1: 确认gdb可执行文件路径

gdb执行文件在安装code::blacks的MinGW\bin下面

Step2:命令中启动gdb,如下图,执行命令

D:\>cd \tools\CodeBlocks\MinGW\bin

D:\tools\CodeBlocks\MinGW\bin>dir gdb*
 驱动器 D 中的卷没有标签。
 卷的序列号是 B84A-DA49

 D:\tools\CodeBlocks\MinGW\bin 的目录

2018/05/12  15:28            59,605 gdb.exe
2018/05/12  15:28         9,594,561 gdborig.exe
2018/05/12  15:28           506,436 gdbserver.exe
               3 个文件     10,160,602 字节
               0 个目录 153,524,097,024 可用字节


D:\tools\CodeBlocks\MinGW\bin>gdb
GNU gdb (GDB) 8.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-w64-mingw32".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb)

Step3: 点击菜单栏【Settings】,点击【Debugger...】选项

点击左侧【GDB/CDB debugger】的 【Default】选项,去掉【Disable startup scripts(-nx)(GDB only)】

如下图,勾选掉后,按【OK】按钮,完成设置

继续调试,调试窗口可以看到vector值

END