演算法筆記學習(1) 一些簡單易錯的知識點

2021-08-21 16:42:48 字數 1570 閱讀 7285

符號常量為:#define

c++中推薦使用const常量

^表示位異或,即相同為0,不同為1

將整個陣列賦值為0:

int a[10]=;

//或是

int a[10]={};

sscanf(str,"%d",&n);    //從左到右,將字元陣列str中的內容以%d的形勢下寫到n中

sprintf(str,"%d",&n); //從右到左,把n以%d的格式寫到str字元陣列中

二維陣列作為引數時,第一維不需要填寫長度,第二維需要填寫長度,如:

void change(int b[5]){}
指標作為引數時候,若要交換指標中存放的位址(此時相當於傳入乙個位址變數,而不是指標),則要用二級指標才能改變,若要交換指標中存放的位址的內容(此時相當於乙個指標),以及指標就可以改變。總之,該位址要用二級指標,改內容要用以及指標。

注意:引用僅對變數作用,常量不可使用。

例如函式swap不可以穿入位址常量,如swap(&a,&b),應該先用指標變數p1和p2存放這兩個位址。

指標的引用(即改變指標的指向)除了用二級指標還可以用引用:int* &a(把int*看成類似int的資料型別)

(1)結構體中不能定義自己本身,但可以定義自身型別的指標變數(如常用的next指標)

(2)使用建構函式初始化結構體

student(){}    //預設生成的建構函式

student(int _id,char _gender):id(_id),gender(_gender){} //自己的建構函式

注意:一旦定義了自己的建構函式,預設建構函式就會被覆蓋,就不能只定義不賦值。如:student st;這時候可以手動加上預設的建構函式。

11.浮點數的比較

簡單的浮點數比較可以使用「==」,但是一旦經過複雜的運算之後,精讀損失不能忽略,因此可以將比較操作寫成巨集定義。

const double eps=1e-8;    //誤差

#define equ(a,b) ((fabs((a)-(b)))<(eps)) //浮點數的等於比較

#define more(a,b) ((fabs(a)-(b))>(eps)) //浮點數的大於比較

#define less(a,b) ((fabs(a)-(b))<(-eps)) //浮點數的小於比較

#define moreequ(a,b) ((fabs(a)-(b))>(-eps)) //浮點數的大於等於

#define lessequ(a,b) ((fabs(a)-(b))<(eps)) //浮點數的小於等於

const double pi=acos(-1.0);
一般oj系統一秒能承受的運算次數大概是10的7次方到10的8次方,此時若o(n²)的n的規模為1000是可以承受的。oj中空間一般夠用,所以常常採用空間換時間的策略。

php的一些易錯點

1.單引號與雙引號的區別 一般用單引號或雙引號標識乙個字串。單引號串與雙引號串,在php中的處理是不同的。雙引號中的內容可以被解釋並被替換,單引號串中的內容則被作為普通字元處理。例如 注 單引號中輸出的內容是 所見即所得 的,無論有無變數,都被當做普通字元原樣輸出。說明 在定義簡單的字串時,使用單引...

Python一些易錯的點

1.int float 這些不是真正意義上的函式,而是建立物件的構造方法,也不是c 語言中的強制型別轉換。2.python函式中的可變引數有兩種,一種是加 一種是加上兩個 前者是解包元祖,後者是解包字典。傳入的時候要注意使用 和 def a arg print arg if name main ar...

php的一些易錯點

一般用單引號或雙引號標識乙個字串。單引號串與雙引號串,在php中的處理是不同的。雙引號中的內容可以被解釋並被替換,單引號串中的內容則被作為普通字元處理。例如 str 6 echo str is str n echo str is str n 注 單引號中輸出的內容是 所見即所得 的,無論有無變數,都...