1.4 cpp編程基礎

1.4 cpp編程基礎


返回目錄 1 面向對象技術
上一節 1.3 面向對象設計
下一節 1.5 結構體和類ios


HelloWorld

廢話很少說,敲代碼的第一步,固然是HelloWorld。c++

源代碼

/* helloWorld.cpp,用C++寫HelloWorld */
#include <iostream>

int main()
{

    std::cout << "Hello" << std::ends << "World!" << std::endl; // 輸出語句

    return 0;
}

源文件命名爲HelloWorld.cpp編程

編譯

你可使用IDE自動編譯,或者使用命令行手動編譯(我是在Windows環境)。segmentfault

  • 我先使用vscode編寫程序,在vscode中使用g++編譯源文件;
  • 而後我使用命令行編譯。函數

    • 首先須要安裝MinGW,而且配置環境變量;
    • 在win10的cmd中,使用cd /d 源文件目錄命令定位到源文件目錄;
    • 使用g++ HelloWorld.cpp -o HelloWorld 命令對HelloWorld.cpp源文件進行編譯,並將編譯完成的可執行文件重命名爲HelloWorld.exe;spa

      • g++ 源文件名.cpp能夠用來編譯,編譯完成的可執行文件名爲a.exe;
      • 上一條命令後面接-o HelloWorld用來將編譯的a.exe重命名爲HelloWorld.exe。

運行

  • 在命令行中輸入HelloWorld直接運行HelloWorld.exe。

編譯運行結果:命令行

Hello World!

解釋

如你所見,只需包含iostream頭文件,就可使用:設計

  • std::cout函數進行輸出。
  • std::ends表示字符串的結束,而且添加空格
  • std::endl終止一行,刷新緩衝區,而且添加換行

要輸出的內容跟在<<後面便可,沒必要像C語言的printf()通常,要補充格式控制符。code

同時,使用cout,一樣可使用轉義字符,如n對象

在C++中, std其實就是standard——標準的意思。

這裏涉及到一個命名空間的問題。

namespace即「命名空間」,也稱「名稱空間」 、」名字空間」。這是一種代碼組織的形式,經過名稱空間來分類,區別不一樣的代碼功能,同時也是全部類的徹底名稱的一部分。

std::cout的意思就是std這個命名空間中的cout函數。


簡單的輸入輸出

輸入輸出是咱們接觸編程這一門技術的入門小菜,接下來咱們用一個簡單的加法函數來展現C++的簡單輸入輸出。

源代碼

/* io.cpp,C++輸入輸出實例:輸入兩個整數輸出其和 */
#include <iostream>

int addNum(int num_1, int num_2)
{
    return num_1 + num_2; // 返回傳入兩個變量之和的值
}

int main()
{
    int num_1, num_2;

    std::cout << "請輸入兩個整數用來求和:\n"; // 輸出提示語句
    std::cin >> num_1 >> num_2; // 輸入兩個整型變量
    std::cout << num_1 << " + " << num_2 << " = " << addNum(num_1, num_2); // 調用求和函數,獲得兩個整數的和並輸出

    return 0;

}

編譯運行

  • 輸出請輸入兩個整數用來求和:
  • 輸入 1 1
  • 輸出 1 + 1 = 2

很簡單。std::cin表示輸入,上面也講了,std::cout表示輸出。

一樣的,cin不須要格式控制符,直接對標變量的數據類型進行賦值。

函數和調用函數和C語言幾乎一致。


循環和遞歸

  • for循環

    源代碼

    /* for.cpp,for循環實例,用循環算順序累加和 */
    #include <iostream>
    
    int main()
    {
    
        int sum = 0, min_num, max_num; // 存儲累加的結果、最小值和最大值
    
        std::cout << "請輸入最小值:" << std::endl;
        std::cin >> min_num;
        std::cout << "請輸入最大值:" << std::endl;
        std::cin >> max_num;
    
        for (int i = min_num; i <= max_num; ++i)
        {
            sum += i; // 循環累加
        }
        
        std::cout << "從" << min_num << "加到" << max_num << "的和爲:" << sum << std::endl; // 輸出累加和
    
        return 0;
    
    }

    C++的for循環與C相比沒什麼區別,不一樣的是在for()裏面的第一項能夠定義新變量。若是採用g++編譯C程序,也是能夠的。

    #### 編譯運行

    >> 請輸入最小值:
    << 1
    >> 請輸入最大值:
    << 100
    >> 從1加到100的和爲:5050
  • while循環

    源代碼

    /* while.cpp,while循環實例,多個數字的和 */
    #include <iostream>
    
    int main()
    {
    
        int num = 0, sum = 0;
    
        std::cout << "你能夠對任意個數的整數求和,請輸入任意個數的整數,最後輸入EOF結束(Windows環境鍵盤快捷鍵爲Ctrl+Z):" << std::endl;
    
        while (std::cin >> num) // 遇到EOF退出while循環
        {
    
            sum += num; // 相加
    
        }
        
        std::cout << "你輸入的數字總和爲:" << sum << std::endl; // 輸出和
    
        return 0;
    
    }

    c++的while()中能夠直接用std::cin做爲條件,只有輸入EOF時,退出循環。

    編譯運行

    >> 你能夠對任意個數的整數求和,請輸入任意個數的整數,最後輸入EOF結束(Windows環境鍵盤快捷鍵爲Ctrl+Z):
    << 1
    << 23
    << 456
    << 7890
    << ^Z
    >> 你輸入的數字總和爲:8370
  • do ... while循環

    源代碼

    /* dowhile.cpp do ... while實例 */
    #include <iostream>
    
    int main()
    {
    
        int sum = 0;
    
        do
        {
    
            sum++;
            std::cout << "程序已經執行了" << sum << "次!按回車繼續執行下一次!按其它鍵後回車退出!";
            
        } while (getchar()=='\n');
        
        return 0;
    
    }

    do ... while和while差很少,只是do ... while要先執行一次之後,再看while的條件。

    編譯運行

    程序已經執行了1次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了2次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了3次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了4次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了5次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了6次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了7次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了8次!按回車繼續執行下一次!按其它鍵後回車退出!
      程序已經執行了9次!按回車繼續執行下一次!按其它鍵後回車退出!233
  • 遞歸

    源代碼

    /* recursion.cpp 遞歸實例 */
    #include <iostream>
    
    int ChristianKramp(int num) // 這個函數是求階乘的
    {
        if (num > 0)
        {
            if (num == 1)
            {
                return 1;
            }
            else
            {
                return num * ChristianKramp(num - 1);
            }
        }
        else 
        {
            return -1;
        }
    }
    
    int main()
    {
    
        std::cout << ChristianKramp(5); // 輸出5的階乘
    
        return 0;
    }

    這是一個簡單的遞歸實例,效果是求階乘

    編譯運行

    >> 120

返回目錄 1 面向對象技術
上一節 1.3 面向對象設計
下一節 1.5 結構體和類


參考資料:

  • 《C++程序設計》傳智播客
  • 百度百科
相關文章
相關標籤/搜索