零碎芝士點

2021-10-10 04:02:07 字數 4581 閱讀 2143

1.c語言函式題需要輸入/輸出字串,由於c語言無字串型別,故使用字元型陣列

printf 輸出

char c=

;printf

("%s"

, c)

;//必須得是字元陣列名,按字元陣列名c找到其陣列起始位址,然後逐個輸出其中的字元,直到遇到'\0'為止。

scanf 輸入

//scanf 逐個字元輸入

char c[10]

;for

(int i =

0; i <

10; i++

)//scanf 輸入乙個字串

char c[10]

;scanf

("%s"

,c);

//注意,不需要&,系統自動在字串後面加乙個'\0'結束符。

陣列名稱本身就代表了這個陣列第乙個元素的位址,所以不需要再加取位址運算子

gets 輸入

gets

(字元陣列)

;

從終端輸入乙個字串到字元陣列,並且得到乙個函式值。該函式值是字元陣列的起始位址。它讀入全部字元(包括空格)直到遇到回車為止。gets()函式並不讀取換行符』\n』,它會把換行符替換成空字元』\0』,作為c語言字串結束的標誌。

缺陷:不檢查陣列是否能夠裝得下輸入行

puts輸出

puts

(字元陣列)

;

將乙個字串(以』\0』結束的字元陣列)輸出到終端。在輸出時將字串結束標誌』\0』轉換成』\n』,即輸出完字串後換行。

strcpy()

strcpy

(dest, src)

;//dest指向用於儲存複製內容的目標陣列。src要複製的字串

2.scanf()返回值的利用

參考鏈結

while

(scanf

("%d %d"

,&a,

&a)==2)

如果a和b都被成功讀入,那麼scanf的返回值就是2

如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為eof(定義為-1)

此外寫成2 == scanf()格式是一種程式設計風格~防止由於程式設計師手誤寫成"="

while(~

scanf

("%d%d"

,&m,

&n))

//等價於

while

(scanf

("%d%d"

,&m,

&n)!=

eof)

acm中比較常見,其功能是迴圈從輸入流讀取m和n,直到遇到eof為止

~是按位取反,-1【eof】十六進製制補碼表示為0x ffffffff,f是二進位制的1111,取反後就全部變成0了,於是while結束。只有返回值為eof(即-1)時,其取反的的值(即while迴圈的判斷條件)才為0,才能結束迴圈,其它輸入情況下(無論是否輸入成功)while迴圈的判斷條件為非0,即為真。

漏洞:一但輸入的值為字母、符號之類的,scanf賦值不成功把讀到的內容又返回到stdin的緩衝區(假設這個值為t),其取反得到的值使while又進入到下一次迴圈,scanf又從stdin緩衝區裡讀到了原先吐回的t,如此成了死迴圈

3.atof()函式

atof()把引數 str 所指向的字串轉換為乙個浮點數(型別為 double 型)

double

atof

(const

char

*str)

4.fabs(num)<1e-6

浮點數因為儲存形式的原因不能直接和0值比較,當要判斷乙個浮點數是否等於0時需要這樣寫

5.strstr()函式

strstr()返回在 haystack 中第一次出現 needle 字串的位置,如果未找到則返回 null

char

*strstr

(const

char

*haystack,

const

char

*needle)

1.stringstream字串流

stringstream是字串流,它將流與儲存在記憶體中的string物件繫結起來。

運算子<<將資料傳遞給 stringstream 物件(與通過<<使用cout物件的方法相同)

按照空格提取字串,運算子>>將資料從 stringstream 物件傳遞給字串(與通過>>使用cin相同)

2.c_str()函式

c_str()函式生成乙個const char*指標,指向以空字元終止的陣列, 內容與本string串相同

const

char

*c_str()

;

3.輸出設定 ---- 小數點位數保留&前導0

參考鏈結

小數點的保留

double pi =

3.1415926

;cout <<

setprecision

(n)<< pi;

三位有效數

cout <<

setiosflags

(ios::fixed)

<<

setprecision

(n)<< pi;

1小數點後三位

在用浮點表示的輸出中,setprecision(n)表示有效位數,c++預設的流輸出數值有效位是6。

在用定點表示的輸出中,setprecision(n)表示小數字數,setiosflags(ios::fixed)是用定點方式表示實數。

輸出前導0/其他字元

setw(n):預設寬度

cout<<

setw(6

)<<

12345

<

cout<<

setfill

('#'

)<<

setw(6

)<<

12345

<setbase(n):將輸出資料轉換為n進製

cout<<

setbase(2

)<<

255<參考鏈結

vector<

int> v;

v.resize

(n);

for(

int i=

0;i) cin >> v[i]

;//給vector分配記憶體後可以按一定數量將資料讀入陣列中

5.vector之建構函式

vector<

int> second (4,

100)

;// 定義four ints with value 100

//相當於int a [4]; memset(a, 100, sizeof(a));

6.結構體自定義建構函式

struct node

;vector adj[n]

;//以上寫法想把node型變數加入adj陣列中時,需要定義乙個node型臨時變數tmp

//node tmp;

= 3;

= 4;

//adg[1].push_back(tmp);

//更快的做法是定義結構體node的構造引數

struct node

//建構函式};

//這樣就能不定義臨時變數來實現加邊操作

adj[1]

.push_back

(node(3

,4))

;

零碎知識點

1.反斜槓也可拼接字串 window.nl ad function window.nl ad function 2.在console.log 中新增樣式 var a hello console.log c a,font size 400 background blue color white 3 通...

筆記之零碎點

include int main include include int main 執行結果 執行結果 請輸入一段文字 yfu 67t87y 輸入的文字字元數為 10 輸入的文字資訊是 yfu 67t8 此處換行符會被過濾掉,所以逐行讀取,手動新增endl。include include inclu...

零碎知識點

比較數值時,不要integer,要int 1,elasticsearch查詢時不識別大寫,應全部轉為小寫.因此建立索引時盡量使用小寫 2.var param param.yanan1 yanan2 此處的用法 param 宣告了json格式的param,param.yanan1 yanan2定義了j...