1. 说点什么

以下我将介绍地表最强(可能是之一,别打我) C/C++ 开发 IDE——CLion,以及如何使用它来快乐刷题

工欲善其事,必先利其器。一个好的编程工具对写代码或是做题来说格外重要,尤其是考场上拼手速debug的时候。

首先是各种工具的对比:

  • DEV C++:大伙用的最多的,很方便啊是吧,但是也很朴素……没有代码补全是不是有点难受?

  • 小熊猫 DEV:我后来用的是这个,增添了代码补全,也是比较流畅,但毕竟是魔改版而且跟原来的 DEV 不能同时用,不放心就给卸了;

  • Visual Studio:没怎么深入体验过,那大 10 个 G 看了还是……呵呵

  • VSCode:可以说编程工具里的瑞士军刀,什么都能写,体验也还不错,美中不足的就是……安装配置 C 语言真的很麻烦

  • CLion:安装好之后应该在 1G 左右,收费(北航邮箱可以免费使用教育版),有一定的学习成本,但是让我最欣赏的是它真的特别人性化,写起代码相当便捷流畅。而且学校机房是可以使用 CLion 的(VSCode和小熊猫用不了,万一到机房考试还是一夜回到解放前)。

关于我自己的经历:

那是一次算法上机考试,结束后一同学让我帮 debug。我先是打开了原始的 DEV C++ 看代码,emm……也没啥问题,样例都对,但是交上去总有几个点 WA。我就反复找错改改怎么还是 WA,后来我把代码 copy 到 CLion 上,发现了这么一段:

浮点数的快速排序,写一个 cmp 函数,乍一看可能没问题,但是 CLion 给我一个警告,翻译过来是“类型转换范围缩小”,我恍然大悟(不明白的同学请速速面壁)。从此我成了 CLion 的忠实信徒233。

以上是我的代码工作页面,采用输入输出重定位实现输入输出分离,不像控制台一样又丑又不方便哈~

2. 操作步骤

1. 注册北航邮箱

注意你们的 accoding 账号本身只是一个账号,不能用来收发邮件,还要单独申请邮箱,不过你的邮箱名字不一定非得是学号哈,可以个性化的:

北京航空航天大学-邮箱注册页面 (buaa.edu.cn)

按照步骤自己来哈~

2. 下载以及安装 CLion

下载 CLion:适用于 C 和 C++ 的智能跨平台 IDE (jetbrains.com)

这里直接点下载 .exe 就好,稍等片刻。

不好意思我懒了……其实是我不能再重装一遍,找到别人的博客大家看看叭~CLion安装配置与学生认证

注意最后创建工程的时候改成 C 可执行文件而不是 C++。

3. 舒适写代码

小问题要提一下下,CLion 每写一份代码是要重新建一个项目 Project,而 Project 里有大量看不懂乱七八糟的东西,所以为了免去频繁新建 Project 的麻烦,我推荐每次做完一道题把代码整个复制粘贴保存到一个新的 .c 文件里(可以用 DEV C++ 或是记事本打开,这也是我CLion 和 DEV 双持的原因)。然后把 CLion 里的代码删掉。

不过还有一个小问题就是——CLion 无法不定行读入,也就是不能按 Ctrl+Z 来停止读入。这里我推荐文件I/O (文件读写):

  1. 右键 cmake-build-debug 文件夹,新建 -> 文件,命名为 a.in,再新建一个命名 a.out

  1. 把这两个文本打开然后拆分右移等一系列操作:

最后效果如图

记得交题的时候把 freopen 注释掉喂!(快捷键 Ctrl+/)

4. 赢在起跑线

读到这里我再讲一下 CLion 的日常使用姿势:

  1. a.ina.out 应该是日常存放在 cmake-build-debug 里,一般不会在左边的文件目录栏里动了。
  2. a.ina.out 应该一直被打开放在你的右侧边栏,方便快速输入输出。
  3. 写完代码准备提交的时候应该注释掉 freopen 语句,否则会 TLE。
  4. 一道题通过以后可以在别处新建一个 .c 文件,然后用记事本打开(右键文件,点击“编辑”),把 CLion 里的代码全选剪切过去。
  5. 这个时候你 CLion 的代码区就空了。

关键是,做下一道题的时候难道要重打一遍???

不不不,下面我将介绍一个外挂级操作:实时模板————一键生成初始代码,请看

我只打了一个大写 S:

然后啪的一下敲下回车:

设置方法如下:

  1. 进入 CLion 设置

  1. 搜索“实时模板”

  1. 选中 C/C++ 点击新建动态模板

  1. 填写如下 4 步 (3 是你自己喜欢的开题模板,但是要在你的光标位置加上 $END$

顺便贴出我自己的

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <stdlib.h> int main() {
freopen("a.in", "r", stdin);
freopen("a.out", "w", stdout);
$END$
return 0;
}
  1. 最后点“更改”,把“C”打勾,“应用”:

  1. 试试吧!

额外注意:

  • CLion 与其他工具不同,程序里打开文件(例如 freopen不是在同一目录下,而是在 cmake-build-debug 文件夹!
  • 任何时候按下 Ctrl+Alt+L,会触发代码自动美化,就是一键整理;
  • CLion 对警告特别敏感,注意读一些警告信息(英文)会避免很多很多潜在的小 bug
  • 有些时候在警告处按 Alt+Enter,会给你自动修改;
  • 永远要注意英文的提示信息,最好弄明白到底出了什么问题,比如(Narrowing conversion);
  • 打上一条和上上条的脸:scanf 语句的警告大概意思是 “scanf本身有安全问题”,一般问题不大可以忽略;
  • 有时候警告的意思是你的代码太丑了,虽说不影响运行但是还是最好让它帮你改一下,培养优雅的码风。

以上,还有问题联系请我~

CLion入门教程的更多相关文章

  1. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  2. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  3. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  4. Content Security Policy 入门教程

    阮一峰文章:Content Security Policy 入门教程

  5. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  6. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

  7. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  8. webpack入门教程之初识loader(二)

    上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...

  9. 转载:TypeScript 简介与《TypeScript 中文入门教程》

    简介 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构 ...

随机推荐

  1. Solution -「牛客 NOIP 模拟赛」打拳

    \(\mathcal{Description}\)   现 \(2^n\) 个人进行淘汰赛,他们的战力为 \(1\sim 2^n\),战力强者能战胜战力弱者,但是战力在集合 \(\{a_m\}\) 里 ...

  2. VUE3 之 动画与过渡的实现 - 这个系列的教程通俗易懂,适合新手

    1. 概述 光环效应告诉我们: 当一个人在某一方面取得了巨大的成功,人们就会给他贴上正面的标签,这个人从此就被"优秀"的光环所笼罩,他做的一切,人们都认为是正确的. 例如:越是名气 ...

  3. 突破限制,CSS font-variation 可变字体的魅力

    今天,在 CodePen 上看到一个很有意思的效果 -- GSAP 3 ETC Variable Font Wave,借助了 JS 动画库 GSAP 实现,一起来看看: 我寻思着能否使用 CSS 复刻 ...

  4. HttpClient的使用(get、post请求)

    添加pom依赖 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <d ...

  5. jemter参数化是如何取值的?(数据分配)

    参数化文件数据 脚本设置 ${__threadNum}是线程号,${n}是取值 测试结果 第一次 线程1取值:1,4,7,10,12 线程2取值:2,3,6,11,16 线程3取值:5,9,15,17 ...

  6. HTTP攻击与防护-函数注入攻击

    实验目的 1.了解eval注入的概念 2.了解eval注入攻击的方式 3.掌握防范攻击的方法 实验原理 1.了解eval注入的概念 2.了解eval注入攻击的方式 3.掌握防范攻击的方法 实验内容 1 ...

  7. 3款著名BI工具功能盘点,哪款更实用?

    随着信息技术的发展和应用, 人类进入了一个大数据时代.5G的到来也在不断影响我们的生活,很明显,5G将在世界上留下持久的印记和影响力.每秒10千兆比特的传输速度,它比4G网络的连接速度提高了100倍左 ...

  8. windows server 2012 r2 修改administrator密码

    转至:https://jingyan.baidu.com/article/b907e627b615b646e7891cbf.html 1.进入开始面板,点击"管理工具". 2.双击 ...

  9. linux shell脚本批量修改密码,无需交互输入

    转至:https://blog.csdn.net/weixin_34409357/article/details/89833777?utm_medium=distribute.pc_relevant. ...

  10. 详细了解 synchronized 锁升级过程

    前言 首先,synchronized 是什么?我们需要明确的给个定义--同步锁,没错,它就是把锁. 可以用来干嘛?锁,当然当然是用于线程间的同步,以及保护临界区内的资源.我们知道,锁是个非常笼统的概念 ...