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.pswp.cn/news/387178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387178.shtml
英文地址,請注明出處:http://en.pswp.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…