C 常用小技巧個人總結(持續更新)

2021-07-15 06:36:54 字數 4544 閱讀 6639

求任意陣列長度

sizeof(array) / sizeof(array[0]),

※c++多關鍵字排序:

struct node

int a;int b;int c;//三重引數

friend bool operator<(const node &x,const node &y)//過載(重新定義)小於號

if (x.aif (x.a>y.a) return false;

if (x.b>y.b) return true;

if (x.bif (x.creturn false;

}d[1001];

主程式中sort(d+1,d+n+1);//排d中1--n的元素

排序庫函式#include

外部比較函式

檔案

#include

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

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

小數字數輸出(兩位為例):

(1)庫函式#include

輸出前加上:

cout.setf(ios::fixed);  

cout.precision(2);

(2)庫函式#include

使用printf(「%.2lf」,x)

建議無腦開庫

#include

#include

#include

#include

左對齊輸出機佔位:

printf("%-5.3lf",aa):表示double型別的數aa左對齊佔五位保留三位小數輸出

printf("%4.2lf",aa): 表示double型別的數aa右對齊佔四位保留兩位小數輸出

庫函式:stdio.h(c) 或cstdio(c++)

printf()函式是格式化輸出函式, 一般用於向標準輸出裝置按規定格式輸出資訊。

printf()函式的呼叫格式為: printf("《格式化字串》", 《參量表》);

其中格式化字串包括兩部分內容:

一部分是正常字元, 這些字元將按原樣輸出;

另一部分是格式化規定字元, 以"%"開始, 後跟乙個或幾個規定字元, 用來確定輸出內容格式。 

參量表是需要輸出的一系列引數, 其個數必須與格式化字串所說明的輸出引數個數一樣多, 各引數之間用","分開, 且順序一一對應, 否則將會出現意想不到的錯誤。 

1. 格式化規定符

—————————————————————————— 

%d 十進位制有符號整數 

%u 十進位制無符號整數 

%f 浮點數 

%s 字串 

%c 單個字元 

%p 指標的值 

%e 指數形式的浮點數 

%x, %x 無符號以十六進製制表示的整數 

%0 無符號以八進位制表示的整數 

%g 自動選擇合適的表示法 

━━━━━━━━━━━━━━━━━━━━━━━━━━ 

說明: 

(1). 可以在"%"和字母之間插進數字表示最大場寬。 

例如: %3d 表示輸出3位整型數, 不夠3位右對齊。 

%9.2f 表示輸出場寬為9的浮點數, 其中小數字為2, 整數字為6, 

小數點佔一位, 不夠9位右對齊。 

%8s 表示輸出8個字元的字串, 不夠8個字元右對齊。 

如果字串的長度、或整型數字數超過說明的場寬, 將按其實際長度輸出。 

但對浮點數, 若整數部分位數超過了說明的整數字寬度, 將按實際整數字輸出; 

若小數部分位數超過了說明的小數字寬度, 則按說明的寬度以四捨五入輸出。 

另外, 若想在輸出值前加一些0, 就應在場寬項前加個0。 

例如: %04d 表示在輸出乙個小於4位的數值時, 將在前面補0使其總寬度 

為4位。 

如果用浮點數表示字元或整型量的輸出格式, 小數點後的數字代表最大寬度, 

小數點前的數字代表最小寬度。 

例如: %6.9s 表示顯示乙個長度不小於6且不大於9的字串。若大於9, 則 

第9個字元以後的內容將被刪除。 

(2). 可以在"%"和字母之間加小寫字母l, 表示輸出的是長型數。 

例如: %ld 表示輸出long整數 

%lf 表示輸出double浮點數 

(3). 可以控制輸出左對齊或右對齊, 即在"%"和字母之間加入乙個"-" 號可 

說明輸出為左對齊, 否則為右對齊。 

例如: %-7d 表示輸出7位整數左對齊 

%-10s 表示輸出10個字元左對齊 

2. 一些特殊規定字元

\n 換行 

\f 清屏並換頁 

\r 回車 

\t tab符 

\xhh 表示乙個ascii碼用16進表示, 

其中hh是1到2個16進製制數 

━━━━━━━━━━━━━━━━━━━━━━━━━━ 

由本節所學的printf()函式, 並結合上一節學習的資料型別, 編制下面的程 

序, 以加深對turbo c2.0資料型別的了解。 

示例

#include

#include

int main() 

棧和佇列

使用標準庫的棧和佇列時,先包含相關的標頭檔案

#include

#include

定義棧如下:

stackstk;

定義佇列如下:

queueq;

棧提供了如下的操作

s.empty()               如果棧為空返回true,否則返回false

s.size()                返回棧中元素的個數

s.pop()                 刪除棧頂元素但不返回其值

s.top()                 返回棧頂的元素,但不刪除該元素

s.push()                在棧頂壓入新元素

佇列提供了下面的操作

q.empty()               如果隊列為空返回true,否則返回false

q.size()                返回佇列中元素的個數

q.pop()                 刪除佇列首元素但不返回其值

q.front()               返回隊首元素的值,但不刪除該元素

q.push()                在隊尾壓入新元素

q.back()                返回佇列尾元素的值,但不刪除該元素

定義 priority_queue 成優先順序佇列,先定義結構體如※,佇列成降序排列!

陣列整體操作

#include

memset(a,b,sizeof(a));一般用於布林陣列的賦值,b=0,false;b=1,true

#include

fill(a+s,a+t,n)將a陣列中從s到t 均賦值為n

引入所有c++標準類庫

有關字串

在需要讀入不計空格的多個以空格分割的字串時,用char陣列,讀入方式

scanf("%s%s",&s1,&s2),計算長度方式strlen(s1);

**:#include

hah=0;

for(i = 0;i < n;i++);

std::vectormyvector (myints, myints+8);               // 32 71 12 45 26 80 53 33

// 使用預設比較器 (operator <):

std::sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33

// 使用自定義function做比較器

std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)

// 使用乙個物件做比較器

std::sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)

vector多關鍵字排序

static bool myfunction(vectora,vectorb){

if(a[0]b[0])return false;

if(a[1]vector> people;

std::sort(people.begin(),people.end(),myfunction);

Linux小技巧(持續更新)

1.最近在遠端伺服器的時候,輸入命令一些報錯資訊老是亂碼。解決辦法 因為服務的命令列預設是不支援英文的,我們需要修改語言才能正確選擇。輸入 echo lang 結果 zh cn.utf 8 修改語言為英語 lang en us 這樣這次登入資訊就是英文了,如果下次在登入,語言還是會顯示中文的。2.有...

css小技巧 (持續更新)

這兩天做專案 遇到的一些css問題記錄一下 以前的解決辦法都是用calc 100 padding或者margin 的數值 但是css3出了個新屬性 box sizing border box margin不在屬性範圍內 意思為 元素指定的任何內邊距和邊框都將在已設定的寬度和高度內進行繪製。通過從已設...

C 個人總結系列01(持續更新)

本章主要記錄個人在學習過程中簡單且實用的語法所做筆記,持續更新系列 對計算機下達的指令 1 引入命名空間 2 定義命名空間 類的住址 對類進行邏輯上的劃分,避免重名 3 定義類 做工具 4 定義方法 做功能 5 方法 表示功能 6 返回值 功能的結果 方法定義者 告訴 方法呼叫者的結果 7 型別 資...