1.1 算法编译与调试

编程要保持简单(KISS, keep it simple and stupid)。

 

算法竞赛中的输入输出框架:

输入数据保存在文件中,输出数据也保存在文件中。

几乎所有算法竞赛的输入数据和标准答案都是保存在文件中的。

使用文件最简单的方法是使用输入输出重定向:

freopen("input.txt", "r", stdin);

freopen("output.txt", "w", stdout);

重定向包括scanf、printf在内的所有键盘输入、写屏幕输出的函数。

 

要明确规则:是标准输入输出还是文件输出输出,如果是文件输入输出,是否禁止用重定向方式访问文件。

 

 

条件编译以去掉重定向

 

#define LOCAL#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif

 

 

 

 

 

C++重定向输入流

 

#include <fstream> 
ifstream cin("test.txt");

 

 

 

 

 

如果禁用重定向方式:

 

FILE *fin, *fout;
fin = fopen("data.in", "rb");
fout = fopen("data.out", "wb");
int x;
while(fscanf(fin, "%d", &x) == 1) {...}  
//scanf返回成功读入的变量个数;忽略空格、TAB和回车;Windows下Ctrl+Z结束输入,Linux下Ctrl+D结束
fprintf(fout, "%d", x);
fclose(fin);
fclose(fout);

重定向和fopen两种方法各有优劣。

 

重定向方式写起来简单、自然,但是不能同时读写文件和标准输入输出;

fopen的写法繁琐,但是灵活性较大(如可以反复打开并读写文件)。

如果想把fopen版的程序改写成读写标准输入输出,只需赋值"fin=stdin; fout=stdout",并且去掉fclose()语句即可。

 

 

gcc编译器的使用

MinGW环境下的gcc和Linux下的gcc一致性较好,并且免费。

到www.mingw.com下载安装包,在安装时选择g++编译器。

 

编译命令:

gcc test.c -o test  //将源文件test.c编译为test.exe文件。

gcc test.c -o test -Wall  //显示警告信息

gcc -lm test.c -o test -Wall  //-lm 让编译器连接数学库math.h

gcc -DLOCAL test.c -o test -Wall  //用于条件编译,为源程序定义LOCAL变量

 

可以用-o1,-o2,-o3对代码速度进行优化。

速度上,直接编译 < -o1 < -o2 < -o3。

由于某些优化可能会误解程序员的意思,一般比赛不推荐使用。

 

gdb简介

调试器,gcc的最佳拍档

编译时加-g选项,以显示行号。

gdb test.exe

list    显示下10行

list-    显示上10行

break    在指定行号或指定函数处设置断点,如b main        delete breakpoint 断点编号

run    运行程序,直至断点或结束

continue    从断点处继续运行

next    跳过执行 step over

step    跳入执行 step in

 

在提示符下,直接按Enter键等价于再次执行上一条指令

 

until    让程序执行到指定位置,如until 9;//执行到9行      until doit;//执行到doit函数

print    打印出一些变量的值

info locals    显示所有局部变量,info breakpoint//显示断点信息

display    把一个表达式设置为display,当程序每次停下来都会显示其值,如display i+1000

enable display

disable display

delete display 编号

clear    向break一样清除断点

 

gdb高级功能

bt    最常用的栈帧命令,其他命令可通过help stack学习

commands    可以指定在某个断点处停下来后所执行的gdb命令

ignore 断点编号 跳过次数     命令可以让断点在前count次到达时都不停下来,

condition 断点编号 生效条件    可以给断点加一个条件 condition 2 i==5,让该断点仅当i=5时有效。

 

特殊断点watchpoint    

watch a    在变量a 修改时停下,并显示修改前后的变量值

awatch a    变量a被读写时都会停下来

rwatch a    变量a被读时停下来

 

gdb可以自由调用函数,不管是源程序中新定义的函数还是库函数。

call 函数名     

注意,如果学过宏和内联函数就会知道,很多看起来是函数的却不一定真的是函数,或者说,不一定是调试器识别的函数。

print    condition    display  命令都可以像call这样使用C/C++函数。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ionic2开发的仿外卖点餐系统(Ionic2+Angular2

github上的项目源码 Run this Project&#xff08;运行该项目&#xff09; first&#xff08;首先&#xff09;: make sure your computer install ionic 确保你的电脑安装了ionic2,不懂自行百度 second&#xff08;其次&#xff09;:$ ionic start wechat_restaurant tutorial…

Container Injection

Container的历史&#xff1a; 2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails&#xff0c;这是最早期&#xff0c;也是功能最多的容器技术。Jails 英译过来是监狱的意思&#xff0c;这个“监狱”&#xff08;用沙盒更为准确&#xff09;包含了文件系统、用户…

HadoopHA集群搭建

三台主机&#xff1a; 192.168.143.111 hdp1 192.168.143.112 hdp2 192.168.143.113 hdp3 1、安装配置ZooKeeper&#xff1b; (1)在conf目录下创建配置文件zoo.cfg tickTime2000 dataDir.../zookeeper/data dataLogDir.../zookeeper/dataLog clientPort2181 initLim…

node搭建服务器,写接口,调接口,跨域

刚开始学node&#xff0c;今天做这个也是累死宝宝了&#xff0c;以后可以自己写接口自己用了&#xff0c;再也不用麻烦人家后台人员了&#xff0c;这些年我们欠他们的太多了&#xff0c;说多了都是泪&#xff0c;不多说&#xff0c;往下看吧。。。 服务端项目目录下&#xff1a…

ThreadPoolExcutor 线程池 异常处理 (上篇)

前言 最近看到crossoverJie的一篇文章&#xff1a;一个线程罢工的诡异事件 首先感谢原作者的分享&#xff0c;自己获益匪浅。然后是回想到自己的一次面试经历&#xff0c;面试官提问了线程池中的线程出现了异常该怎样捕获&#xff1f;会导致什么样的问题&#xff1f; 示例代码 …

3 MapReduce计算模型

MapReduce被广泛应用于日志分析、海量数据排序、在海量数据中查找特定模式等场景中。 MapReduceJob 在Hadoop中&#xff0c;每个MapReduce任务都被初始化为一个Job。 每个Job又可以分为两个阶段&#xff1a;Map阶段和Reduce阶段。这两个阶段分别用Map函数和Reduce函数来表示。…

ionic3 调用本地相册并上传图片

前言在APP中启动相册选择器或者拍照上传图片这些功能是非常常见的。对于Ionic2&#xff0c;我们只能通过cordova插件实现调用原生的功能。下面将简单的封装一个选择相册或拍照上传图片的ImgService服务。具体如下。 Cordova准备下载安装所需的Cordovar插件&#xff1a; Image P…

Mapreduce中maptask过程详解

一、Maptask并行度与决定机制 1.一个job任务的map阶段的并行度默认是由该任务的大小决定的&#xff1b; 2.一个split切分分配一个maprask来并行处理&#xff1b; 3.默认情况下&#xff0c;split切分的大小等于blocksize大小&#xff1b; 4.切片不是mapper类中对单词的切片&…

4 开发MapReduce应用程序

系统参数配置 Configuration类由源来设置&#xff0c;每个源包含以XML形式出现的一系列属性/值对。如&#xff1a; configuration-default.xml configuration-site.xml Configuration conf new Configuration(); conf.addResource("configuraition-default.xml"…

实用的HTML5的上传图片方法

<input type"file" accept"video/*;capturecamcorder"> <input type"file" accept"audio/*;capturemicrophone"><input type"file" accept"image/*;capturecamera">直接调用相机<input type…

3.11 列出完数

完数&#xff1a;一个数恰好等于不包括自身的所有不同因子之和。如6123。 输入&#xff1a;每一行含有一个整数n。 输出&#xff1a;对每个整数n&#xff0c;输出所有不大于n的完数。输出格式为&#xff1a;整数n&#xff0c;冒号&#xff0c;空格&#xff0c;完数&#xff0…

angularjs 上传

xxx.module.ts模块 import { NgModule} from “angular/core”; import { FileUploadModule } from “ng2-file-upload” ; import { XXXComponent } from “./xxx.component”; NgModule({ imports:[ FileUploadModule ], declarations:[ XXXComponent &#xff0c;/component…

PHPCMS的产品筛选功能

如下图所示功能&#xff1a; 首先&#xff0c;用下面这些代码替换掉phpcms/libs/functions/extention.func.php的内容 <?php /*** extention.func.php 用户自定义函数库** copyright (C) 2005-2010 PHPCMS* license http://www.phpcms.cn/licen…

框架使用SpringBoot + Spring Security Oauth2 +PostMan

框架使用SpringBoot Spring Security Oauth2 主要完成了客户端授权 可以通过mysql数据库读取当前客户端表信息进行验证&#xff0c;token存储在数据库中 1.引入依赖 oauth2 依赖于spring security&#xff0c;需要引入spring&#xff0c; mysql&#xff0c;redis&#xff0c; …

3.12 12!配对

找出输入数据中所有两两相乘的积为12!的个数。 输入样例&#xff1a; 1 10000 159667200 9696 38373635 1000000 479001600 3 1 479001600 输出样例&#xff1a; 3 有3对&#xff1a; 1 479001600 1 479001600 3 159667200 #include<iostream> #include<fstre…

程序员自身价值值这么多钱么?

xx 网络公司人均奖金 28 个月…… xx 科技公司人均奖金 35 个月…… 每到年底&#xff0c;这样的新闻在互联网业内简直是铺天盖地。那些奖金不高的程序员们一边羡慕嫉妒&#xff0c;一边暗暗比较一下自己的身价&#xff0c;考虑是不是该跳槽了。 不同水平的程序员&#xff0c;薪…

3.13 判读是否是对称素数

输入&#xff1a;11 101 272 输出&#xff1a; Yes Yes No #include<fstream> #include<iostream> #include<sstream> #include<string> #include<cmath> using namespace std;bool isPrime(int); bool isSymmetry(int);int main(){ifstream…

Spring MVC中使用 Swagger2 构建Restful API

0.Spring MVC配置文件中的配置[java] view plaincopy<!-- 设置使用注解的类所在的jar包&#xff0c;只加载controller类 --> <span style"white-space:pre"> </span><context:component-scan base-package"com.jay.plat.config.contro…

Go语言规范汇总

目录 统一规范篇合理规划目录GOPATH设置import 规范代码风格大小约定命名篇基本命令规范项目目录名包名文件名常量变量变量申明变量命名惯例全局变量名局部变量名循环变量结构体(struct)接口名函数和方法名参数名返回值开发篇包魔鬼数字常量 & 枚举结构体运算符函数参数返回…

3.14 01串排序

将01串首先按照长度排序&#xff0c;其次按1的个数的多少排序&#xff0c;最后按ASCII码排序。 输入样例&#xff1a; 10011111 00001101 10110101 1 0 1100 输出样例&#xff1a; 0 1 1100 1010101 00001101 10011111 #include<fstream> #include<iost…