C++面向對象程序設計 筆記整理(1)——編程基礎

字符與字符串


 大小寫轉換

void lower_or_upper_case(char c)
{
    int transferred_c;
    if ( ('a'<=c) && (c<='z') )
    {
        transferred_c = (int)c - ( (int)'b' - (int)'B' );
        cout << "The lower/upper case is: " << (char)transferred_c << endl;
    }
    else if ( ('A'<=c) && (c<='Z') )
    {
        transferred_c = (int)c + ( (int)'a' - (int)'A' );
        cout << "The lower/upper case is: " << (char)transferred_c << endl;
    }
    else
        cout << "您輸入的不是字母" << endl;
    
}
int main()
{
    char letter;
    cout << "Please enter a letter: ";
    cin >> letter;
    lower_or_upper_case(letter);

    char c = 'A';
    
    cout << c << endl;
}

 

程序的控制結構


 

例題0: 雞兔同籠

雞、兔共有98個頭,386只腳,求雞、兔各多少隻。 使用遍歷方法求全部解數組

int main()
{
    for (int i = 0; i <= 98; i++)    // i: chicken
    {
        int j = 98 - i;    // j: rabbit
        if ((2*i + 4*j) == 386)
        {
            cout << "chicken: " << i << " rabbit: " << j << endl;
        }
    }

    return 0;
}

例題1:

π/4 = 1 - 1/3 + 1/5 - 1/7 + ... 直到最後一項的絕對值小於10^-6爲止函數

int main()
{
    double sum = 0;
    double temp = 1;
    int i = 1;

    while (abs(temp) >= 1e-6)
    {
        temp = pow(-1.0, i+1) / (2*i -1);
        cout << fixed << setprecision(0) << pow(-1.0, i+1) << "/" << (2*i -1) << ": ";
        cout << scientific << setprecision(1) << temp << endl;
        i++;
        sum += temp;
    }

    cout << endl;
    cout << sum << endl;
    system("pause");
    return 0;
}

例題2: 階乘數列求和

S = 1!+2!+...+n!spa

int factorial(int k)    //階乘函數
{
    int product = 1;
    for (int i = 1; i <=k; i++)
        product *= i;
    return product;
}

int main()
{
    int sum = 0, n;
    cout << "please enter a number: ";
    cin >> n;

    for (int i=1; i<=n; i++)
    {
        sum += factorial(i);
    }

    cout << "The result is: " << sum << endl;

    return 0;
}

例題3: 菲波那切數列

S = 1+1+2+3+5+8+13+21+...指針

int sum_fibonacci_sequence()
{
    static int a = 0, b = 1;
    int t = a;
    a = b;
    b = t + b;
    //cout << a << " " << b << endl;
    return a;
}

int main()
{
    int result = 0, n;
    cout << "please enter n: ";
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        int an = sum_fibonacci_sequence();
        result += an;
        cout << "an is: " << an << endl;
    }
    cout << result << endl;

    return 0;
}

 

指針


使用指針動態生成數組

    int length;
    cout << "input x length: ";
    cin >> length;
    int* a;
    a = new int[length];
    a[0] = 25;
    cout << a[0] << endl;
    delete[] a;        // 釋放內存

 

遞歸


使用遞歸來計算階乘

long factorial(long n)
{
    cout << "cur n == " << n << endl;
    if (n < 0)
        return -1;
    else if (n == 0 || n == 1)    // 函數終止條件, 小事化了
        return 1;
    else
    {
        long ret;
        ret = n * factorial(n-1);
        cout << "cur ret == " << ret << endl;
        return ret;    // 大事化小, 調用自身進行遞歸, 想辦法把表達式變成 f(n) = g( f(n-1) , n )
    }
}

 

經常使用模塊


向量 vector

#include <vector>
int main()
{
    vector<int> x;

    x.push_back(1);
    x.push_back(2);
    int y = 345;
    x.push_back(y);  // 動態插入成員
    cout << x.size() << endl;  // 獲取長度
    x.pop_back();        // 刪除最後一個成員

    for (int k=0; k<x.size(); k++)
    {
        cout << x[k] << endl;
    }

    return 0;
}
相關文章
相關標籤/搜索