アルゴリズムノート学習Part 1:C/C++クイック入門


知識雑記
  • intタイプの使用範囲:一般的に10^9以内
  • long longタイプ2^31-1より大きい初期値に接尾辞LL
  • を付ける必要がある
  • 0はNULL
  • を表します
  • シフト演算子の使用(略)
  • printf出力時、いくつかの手段を採用して出力フォーマットを規範化することができる:%md右揃え出力、スペースで%0 md右揃え出力を補い、0で補い.mfはmビット出力を保持し、四捨六入五成双
  • はgetcharとputcharを使用して文字を読み取り、出力することができます(getcharは改行を認識し、putchar出力時に自動的に改行することができます)(getcharは手動で入力0を必要とします)
  • でよく使われるmath関数
  • 	double fabs(double x)     
    	double floor/ceil(double x)          
    	double pow(double r, double p)   r p  
    	double sqrt(double x)   x      
    	double round(double x)   x      
    	//  :      ———sin,cos,tan,asin,acos,atan
    
  • より大きい配列はmain関数以外の
  • に定義されるべきである.
  • memset関数を使用して配列を初期化する(string.hを導入する必要がある):
  • 	memset(a,0,sizeof(a));//   a         0(  0 -1)
    
  • 共通文字関数
  • 	strlen(str)        
    	strcmp(str1,str2)             (             \0  ),     /0/   
    	strcpy(str1,str2)      str2 str1
    	strcat(str1,str2)      str1 str2, str2   str1  
    
  • は、sscanfおよびsprintfを使用して文字列(正規表現をサポート)
  • を処理することができる.
  • C++の参照-コピーを生成せず、元の変数に対して別名
  • を付ける.
  • 構造体structについて:独自のタイプのポインタ変数をカスタマイズでき、構造関数を使用して
  • を初期化できます.
  • C++の別の入出力:cinとcont(iostreamとネーミングスペースstdを導入する必要がある)
  • 浮動小数点数は、発生する可能性のある誤差のため、比較のために極小数epsを手動で導入する必要がある:
  • 	const double eps = 1e-8
    	#define Equ(a,b) ((fabs((a)-(b))) < (eps))
    	#define More(a,b) (((a)-(b)) < (eps))
    	#define Less(a,b) (((a)-(b)) < (-eps))
    	#define MoreEqu(a,b) (((a)-(b) > (-eps))
    	#define LessEqu(a,b) (((a)-(b) < (eps))
    
  • 円周率π:
  • 	const double PI = acos(-1.0);
    
  • scanf==EOFは入力終了(入力Ctrl+Zに等しい)
  • を示す.
  • マルチポイント入力制御:
  • 	1.scanf(...) == n || EOF//        
    	2.break//  switch     
    	3.int T;T--;//