營銷型網(wǎng)站策劃方案網(wǎng)站源碼
C++ 中的C
- C 是面向過程的是把整個(gè)大程序分為一個(gè)個(gè)的子函數(shù);
- C++ 是面向?qū)ο蟮氖前颜麄€(gè)程序劃分為一個(gè)個(gè)的類。
- C++ 是完全兼容C 的,C 是C++ 的子集,C++ 是C 的超集。C++ 又對(duì)C 做了很多補(bǔ)充和提升,因此使用C++ 會(huì)比使用純C 更方便。
- 混用C和C++:用C++ 寫函數(shù)(可能會(huì)使用幾個(gè)現(xiàn)成類),但并沒有自己定義類,因此還是在面向過程的范疇內(nèi)編程。
C++ 的頭文件
- C 的頭文件都是以.h結(jié)尾的,如stdio.h、string.h。
- C++ 的頭文件分為兩類(都沒有后綴.h)
繼承自C 的頭文件:去掉.h在前面加c,如cstdio、cstring。
C++ 特有的頭文件:如iostream、string。 - 使用C++ 特有的頭文件需在代碼開頭聲明名稱空間using namespace std;
常量:const vs define
- 嚴(yán)格意義上講C中是沒有常量的概念的,所謂的#define N 100只是一種不加任何檢查的文本替換C++ 中用關(guān)鍵字const定義常量如const int N = 1010;。
- 用const的定義的常量是有明確的數(shù)據(jù)類型的,在程序中可以進(jìn)行類型檢查和轉(zhuǎn)換,更嚴(yán)謹(jǐn),更規(guī)范。
- 最常用的兩個(gè)常量
定義最大數(shù)據(jù)范圍:const int N = 1e3 + 10;
定義無窮大: const int INF = x3f3f3f3f;
代碼模板
?
常見輸入輸出模式
文件輸入
- 當(dāng)數(shù)據(jù)量大且需要多次調(diào)試時(shí),每次手工輸入或者數(shù)據(jù)或者復(fù)制粘貼效率太低。
- 可以把輸入數(shù)據(jù)放在同目錄下一個(gè)文本文件in.txt中,每次程序執(zhí)行時(shí)自動(dòng)從文件中讀取數(shù)據(jù)。
?
?
EOF 是什么(End of File)
-
EOF 就是-1: #define EOF -1
-
在輸入文件最后的一個(gè)不可見字符,占一個(gè)字節(jié),ASCII 碼為-1,二進(jìn)制為11111111
原碼1000?0001 -> 反碼11111 1110 ->補(bǔ)碼1111 1111
?
?
多Case 輸入(多個(gè)測(cè)試用例一起輸入)
指定用例組數(shù),需要輸出用例序號(hào)
?
指定用例組數(shù),不需要輸出用例序號(hào)
?
不指定用例組數(shù),有結(jié)束標(biāo)記
?
?
不指定用例組數(shù),無結(jié)束標(biāo)記
?
數(shù)組大小的問題
全局變量在靜態(tài)存儲(chǔ)區(qū)分配內(nèi)存,局部變量在棧上分配內(nèi)存。程序運(yùn)行時(shí)會(huì)動(dòng)態(tài)創(chuàng)建一個(gè)堆棧段,里面存放著調(diào)用棧,保存著函數(shù)的調(diào)用關(guān)系和局部變量。如果函數(shù)內(nèi)的數(shù)組太大,可能會(huì)造成棧溢出。
- 大數(shù)組最好開成全局變量。
- 或者動(dòng)態(tài)分配內(nèi)容
數(shù)字的大小問題
高精度加法/減法
加法核心代碼:
?減法同理,注意a和b之間的大小關(guān)系
?