C言語基礎文法

21428 ワード

にゅうしゅつりょく
入力
リダイレクト
freopen("input.txt", "r", stdin);

行全体の入力
  • c++
  • string a;
    #include<iostream>
    getline(cin, a);  
  • C言語
  • char a[100];
    #include<stdin.h>   2015       。
    gets(a);
    char a[1001];
    scanf("%s",a);

    cinアルファベットと数字の入力
    int a[3],b[3];  
    char c;  
    cin>>a[0]>>c>>a[1]>>c>>a[2];  
    cin>>b[0]>>c>>b[1]>>c>>b[2];  
    //       3.2.1

    しゅつりょく
    coutの出力フォーマット
    #include<iomanip>
    cout<setfill('0')<<setw(4)<<flag2;//          0       
    cout        
    cout<<fixed<<setprecision(2)<<cost;//<iomanip>

    データ構造
    はいれつ
    初期化
    世代を指し、const char*は「hello」のような文字列、またはchar配列のポインタを指す.
    どうてきわりあて
    int *numList = (int *) malloc (n * sizeof(int)); 
    scanf("%d", &numList[i]); 
    int *nums = new int[n];

    配列の固定配分初期値配分
    int array [100]={0}
    

    newならstring*strs=new string[n];int *cc = new int[n];
    配列ソート
    c言語のqsort
    #include <stdlib.h>
    int num[100];
    
    //Sample:
    int cmp ( const void *a , const void *b )
    
    { return *(int *)a - *(int *)b; }
    
    qsort(num,100,sizeof(num[0]),cmp);
    

    1番目のパラメータは配列のポインタで、2番目のパラメータはソートするデータ量で、3番目のパラメータは1つの数のサイズで、4番目は比較する関数です.
    http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.html
    文字配列
    初期化
    char largnum[] = {'J','Q','K'};

    char配列サイズ
    #include<string.h>
    strlen(a);

    大文字と小文字の判断
    #include <ctype.h> 
    char c='c'
    if(islower(c)){
     c=toupper(c);
    }

    コピー
    strcat(C, B); // B   C   
    strcpy(B, C); // C   B

    文字列
    文字列のサイズ
     str.size();

    文字列のいくつかの関数(最後に詳細な説明があります)http://blog.csdn.net/yzl_rex/article/details/7839379
    string &append(int n,char c);        //          n   c
         
    void insert(iterator it, int n, char c);// it   n   c

    C言語の文字列はサイズを限定する必要があります.サイズはそれより1桁多いです.終端があるからです.char文字のいくつかの関数
    stringは直接s.find(c)sがstringフォーマットであり、cがcharフォーマットs.append(1,c)である.stringを長くする場合は、char動的生成配列をいくつか追加することを明記します.
    cin>>n;                   
    i=n-1;
    string *s=new string[n];

    文字列find_first_not_of http://baike.baidu.com/link?url=eikMzuoUH9_OOD_Z4ov-JdcAdv2bMse_eWBLjRuL5IH9ggR-AgMng2SI7GiLHQuzQWiRmetaKECksoq-TLoX8a
    stringとchar配列の変換
    http://www.2cto.com/kf/201110/109447.html
    http://blog.csdn.net/xinwang24/article/details/6612686、
    文字列配列回転文字列
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(){
        char a[10]="aaaabbbba";
        string s(&a[0],&a[strlen(a)]);
        cout<<s<<endl;
        system("pause");
    }

    文字列変換文字配列
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(){
        string s="aaaavvva";
        char a[10];
        strncpy(a,s.c_str(),s.length());
    
        for(int i=0;i<10;i++)
            cout<<a[i]<<" ";
        cout<<endl;
        system("pause");
    }

    文字列の回転数
    #include<iostream>
    using namespace std;
    
    int main()
    {
     char a='1';
     int x;
     x=atoi(a);  
    
     cout<<x<<endl;
     getchar();
     return 0;
    }

    文字の性質判定
    #include<ctype.h>
    islower(ch);
    isupper(ch);
    isalpha(ch);
    

    vectorの使い方
    vector挿入
    vectorの定義
    vectorの初期化http://blog.csdn.net/fulva/article/details/7550782
     vector<bool> existed(MAX, false);  

    c.push_back(elem)/末尾にデータを追加します.vectorの遍歴
    http://blog.csdn.net/liunian17/article/details/7435781vector遍歴出力
    void print(int n){
        cout<<" "<<n;
    }
    
    //        
    #include <algorithm>
    vector<int> vec; 
    for_each(vec.begin(),vec.end(),print);</algorithm> 

    エラー原因(1)error C 2679:バイナリ">>>":std::stringタイプの右オペランドを受け入れる演算子が見つかりません(または許容可能な変換がありません)stringは定義されていません
    #include "stdafx.h"
    #include <vector>
    #include <iostream.h>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
        int a[7]={1,2,3,4,5,6,7};
        vector<int> ivector(a,a+7);//vector                          ,             vector,    
        // vector<elementType> intvec(begin,end);                 。
        vector<int>::iterator iter;
        for (iter=ivector.begin();iter!=ivector.end();iter++)
        {
            cout<<*iter<<'\0';
        }
        cout<<endl;
        ivector[5]=1;//  vector   ,               ,         ivector.at(5)=1;       
        cout<<ivector[5]<<endl<<ivector.size()<<endl;
        for (iter=ivector.begin();iter!=ivector.end();iter++)
        {
            cout<<*iter<<'\0';
        }
        return 0;
    }

    vector逆シーケンス出力
    c.insert(vector.begin()、elem)もう一つ、rbegin、rend
    mapの使い方
    mapは本当にいいものですhttp://blog.csdn.net/artemisrj/article/details/20373281mapが挿入されると自動的にソートされるようです..map検索if(map.find(a)!=map.end()){ ; }
    C++データ取値範囲
    char-128~+127(1 Byte)short-32767~+32768(2 Bytes)unsigned short 0~65536(2 Bytes)int-21748648~+2174748648~+21748647(4 Bytes)unsigned int 0~4294967295(4 Bytes)long==int long-9223372036203620366854775808~+92233720366854775807(8 Bytes)double 1.7*10^308(8 Bytes)climitsヘッダファイルの使い方MIN charの最小値SCHAR_MAX signed char最大値SCHAR_MIN signed char最小値UCHAR_MAXunsigned char最大値SHRT_MAX short最大値SHRT_MIN short最小値USHRT_MAX unsigned short最大値INT_MAX int最大値INT_MIN int最小値UINT_MAX unsigned int最大値UINT_MIN unsigned int最小値LONG_MAXlong最大値LONG_MIN long最小値ULONG_MAXunsigned long最大値FLT_MANT_DIG floatタイプの末尾数FLT_DIG floatタイプの最小有効桁数FLT_MIN_10_EXP全有効数を持つfloat型の負の指数の最小値(10を基準)FLT_MAX_10_EXP float型の正の指数の最大値(10ベース)FLT_MIN全精度を保持するfloatタイプ正数最小値FLT_MAX floatタイプ正数最大値LLONG_MAXは、long longの最大値オーバーフローの判定条件1065.A+B and C(64 bit)(20)素数(prime)の求め方を指す
    bool issushu(int m){ //        
        int j;  
        bool flag=true;  
        for(j=2;j*j<=m;j++){  
            if(j==2)  
                ;  
            else if(m%j==0){  
                flag=false;  
            }  
    
        }  
        return flag;  
    }  

    ファイル入出力
    
    freopen("in.txt","r",stdin); //     ,      in.txt     
    // freopen("out.txt","w",stdout); //     ,        out.txt   
    fclose(stdin);//    
    fclose(stdout);//    
    

    ヘッダファイルがはっきり含まれているのに存在しない場合があります.その理由は、スペースの関係がないことです.std::fstreamで書く関数を便利にするために
    
    string  read(ifstream &T) //pass the file stream to the function
    {  
        //the method to read a file, that I showed you before
        string a;
        char ch;
        // a.append(" ");
        while(!T.eof())
        {
            T.get(ch);
            //cout<<ch;
            if(ch=='
    '
    ){ break; } string tt="a"; tt[0]=ch; a.append(tt); } return a; }

    C++ファイルの入出力
    http://blog.csdn.net/btooth/article/details/995097
    #include <fstream>
    using namespace std;
    
    void main() //         
    {
        ofstream SaveFile("cpp-home.txt");
        SaveFile << "Hello World, from www.cpp-home.com and Loobian!";
        SaveFile.close();
    }
    //#include<fstream>
    string fname="location.txt";
    
        ifstream f(fname.c_str());
        if(!f){
            cout<<"can't open the file "<<fname;
        }else{
            cout<<"open the file "<<fname;
        }
        double d;
        while(!f.eof()){
            f>>d;
            cout<<d<<endl;
        }
           // char str[100];
        //f.getline(str,100); //getline       
        f.close();

    入力した数字がカンマで区切られている場合は、入力の代わりに1文字を使用できます.
        ifstream f(fname.c_str());
        while(!f.eof()){
            char aa;
            f>>xValues[i];
            f>>aa;
            f>>yValues[i];
            i++;
        }
        f.close();

    すなわちfstreamの入出力は,いずれも通常の入出力のルールに従って行うことができる.ファイルの入出力を変更するには、ファイルを閉じてからファイルを開きます.p1.close(); p1.open(“C:\outPoints.csv”); ソートsort
    古典的な例はvectorでhttp://blog.csdn.net/artemisrj/article/details/18195499
    http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27『Effective STL』のこれらの言葉はあなたにも役に立つかもしれません:item 31「ソートの選択をまとめます.●vector、string、dequeまたは配列を完全にソートする必要がある場合は、sortまたはstable_sortを使用します.●vector、string、dequeまたは配列がある場合は、前のn要素をソートするだけでpartial_sortを使用します.●vector、string、dequeまたは配列がある場合はn番目の要素を鑑別する必要があるか、最も前のn個の要素を鑑別する必要があるか、順序を知らなくてもいい、nth_elementはあなたが注意して呼び出すべきです.●標準シーケンスコンテナの要素または配列を基準を満たすか満たさないかに区切る必要がある場合は、partitionまたはstableを探します.partition. ●リストにデータがある場合は、partitionとstableを直接使用できます.partition、sortとstableの代わりにlistのsortを使用することができます.sort.partialが必要ならsortまたはnth_elementが提供する効果は、間接的にこの任務を完成しなければなりませんが、私が上に描いたように、多くの選択肢があります.また、標準的な関連コンテナにデータを置く方法で、いつでも物が秩序正しく保たれます.STL以外の標準容器priorityも考えられるかもしれませんQueueは、常に要素を秩序正しく保つこともできます.」この関数を使用するには、#include sortのみで使用できます.構文は、sort(begin,end)と記述され、範囲を表します.たとえば、次のようになります.
    int _tmain(int argc, _TCHAR* argv[])
    { int a[20]={2,4,1,23,5,76,0,43,24,65},i;
     for(i=0;i<20;i++)
      cout<<a[i]<<endl;
     sort(a,a+20);
     for(i=0;i<20;i++)
     cout<<a[i]<<endl;
     return 0;
    }

    20個の要素であれば、先頭から+20までsortは文字列に対してvectorと同じ使い方string ssであることに注意してください.sort(ss.begin(),ss.end());
    オブジェクト向け
    実はC++をよく学んだことがなくて、どのように言いますか、文法などの忘れはとても速くて、やはり自分に1つの土地を残して、自分の考えを放しましょう.実験室ではオブジェクト向けの本を読んでいませんが、今回はvoronoi類を書き換える機会にC++オブジェクト向け、一般C++オブジェクト向けのクラスに2つのファイルがあり、1つのファイル主声明、1つのファイル主実現を復習します.関数が特に短い場合は、ヘッダファイルに入れて直接実現することもできます.
    関数の形参、形参は関数が宣言するそのパラメータで、実参は実際のそのパラメータで、つまり関数が実際に呼び出して入れたパラメータで、配列の形参実参などの呼び出しは少し乱れていて、1種覚えておけばいいです.ヘッダファイル,hのクラスでは,共通クラスの宣言は以下の通りである.
    bool generateVoronoi(float *xValues, float *yValues, int numPoints, float minX, float maxX, float minY, float maxY, float minDist=0,int centerPoints=-1);
    
    VoronoiDiagramGenerator();//     
        ~VoronoiDiagramGenerator();//    
    

    はい.cppファイルでは、関数の実装にクラスの名前を付けることです.たとえば、このクラスの名前はVoronoidiagramGenerator bool VoronoidiagramGenerator::generateVoronoi(float*xValue,float*yValue,int numPoint,float minX,float maxX,float minY,float maxY,float minDist,int centerPoint){