C 語言規範 NOIP複賽易忘知識

2021-08-30 17:38:17 字數 2280 閱讀 7926

函式的傳引數問題

檔案操作

資料規模估算

實數(浮點數)

浮點數比較(重要)

可以用來表示有理數,簡化0的部分書寫

e前面的數字代表基礎部分(可帶小數) e代表乘以 e後的數字代表10的次方

double a = 1.5e3; // a= 1500

double b = 2e-2; //b = 0.02

double c = -1.7e2; //c = -170

double c = 1.7e2; //c = 170

相當於編譯的時候直接替換同名的常量名(寫在開頭)

#define pi 3.14159265359

…cout…cout《直接修改傳入的函式「永久性」

void swap(double &a,double &b)

…double a=5;

double b=2;

swap(a,b);

cout<<「a=」《直接修改傳入函式的副本,原函式不變

void swap(double a,double b)

…double a=5;

double b=2;

swap(a,b);

cout<<「a=」《重定向版freopen

很多人會說cin的速度比scanf慢很多, 其實不然.

cin慢的原因主要在於預設cin與stdin總是保持同步, 這一步是消耗時間大戶.

只需要加上std::ios::sync_with_stdio(false)來關閉同步就好了, 速度甚至要優於scanf

引用 這句語句是用來取消cin的同步,什麼叫同步呢?就是iostream的緩衝跟stdio的同步。如果你已經在標頭檔案上用了using namespace std;那麼就可以去掉前面的std::了。取消後就cin就不能和scanf,sscanf, getchar, fgets之類同時用了,否則就可能會導致輸出和預期的不一樣。

int main()
ibyte(位元組)=8bit(一般以byte為準,1bit相當於乙個開關1/0)

基礎位元組數是2位(16bit)大約是-(215)~215-1 (乙個符號位被占用)

如果符號位沒有被占用即只表示正數 大約是0~216-1

long代表位元組數目翻倍

unsigned代表只表示正數,位元組數目也翻倍

推薦寫法

全部寫法

大體範圍

short

short (int)

±3e4 (2byte)

unsigned

unsigned (short int)/unsigned short (int)

+6e4 (2byte)

long

long / int / long int

±2e9 (4byte)

unsigned long

unsigned long (int)

+4e9 (4byte)

以下型別在noip比賽中禁止使用

推薦寫法

全部寫法

大體範圍

long long

long long (int)

±9e18 (8byte)

unsigned long long

unsigned long long

+1.8e19 (8byte)

基礎位數是4位

全部表示正負數無unsigned

階梯式翻倍位元組數目由於涉及特殊儲存格式,有效位元組數比較少

| 寫法 | 大體範圍 |

|–|--|–|

| float | ±3e-38 (4byte) |

| double | ±3e-308 (8byte) |

以下型別在noip比賽中禁止使用

寫法大體範圍

long double

±3e-4932 (16byte)

由於浮點數的儲存格式問題(你看它**的儲存範圍就知道)

其實是無法完全表示的(二進位制底層儲存格式決定)只能是取乙個大致的範圍存在誤差

所以浮點數的比較不能簡單的==來運算

如果fabs(a-b)<=1e-6,那麼就是相等了。 fabs是求浮點數絕對值的函式。

類似的 判斷大於的時候,就是if(a>b && fabs(a-b)>1e-6)。

判斷小於的時候,就是if(a1e-6)。

C語言易忘知識 隨時更新

cr lf,即 r n cr是0x0d,lf是0x0a。十六進製制數 0x 和 x 有什麼區別?區別不大,都是把數按16進製制輸出。0x 當輸出的數轉換為16進製制只有1位時,在前面補0,如 0a,其它情況按照實際情況輸出。x 按照輸出數轉換為16進製制的實際位數輸出。此外,小寫x和大寫x也有點區別...

C易忘知識點

巨集定義中 類似於拼接,如 12 34 1234,並且如果34是乙個巨集,也會阻止其展開並拼接 將後邊的內容轉換成字串巨集定義可以巢狀 巨集定義中可以使用三目運算子,因為被認為是表示式,最終返回的是乙個結果。其實最重要就是記住巨集的用法是直接展開,然後看符不符合語法。int 左移 不溢位時符號位不變...

c基本易忘知識點

const 作用是把乙個變數視為常量,這個變數不能被改變,可以用const int a b a不能被改變,a可以改變,a c這樣是可以的,a 20這樣是不行的 int const a b 這樣的話a不能改變,而 a可以改變 register關鍵字暗示編譯器前面帶有這個關鍵字的變數將被頻繁的利用 re...