1. 它來啦 ! 這就是你們想要的C++嗎?

        共 3788字,需瀏覽 8分鐘

         ·

        2021-05-20 09:23


        C++語言具有以下特點(diǎn):

        1.C++是C語言的超集。它既保持了C語言的簡潔、高效和接近匯編語言等特點(diǎn),又克服了C語言的缺點(diǎn),其編譯系統(tǒng)能檢查更多的語法錯(cuò)誤,因此,C++比C語言更安全。

        2.C++保持了與C語言的兼容。絕大多數(shù)C語言程序可以不經(jīng)修改直接在C++環(huán)境中運(yùn)行,用C語言編寫的眾多庫函數(shù)可以用于C++程序中。

        3.支持面向?qū)ο蟪绦蛟O(shè)計(jì)的特征。C++既支持面向過程的程序設(shè)計(jì),又支持面向?qū)ο蟮某绦蛟O(shè)計(jì)。

        4.C++程序在可重用性、可擴(kuò)充性、可維護(hù)性和可靠性等方面都較C語言得到了提高,使其更適合開發(fā)大中型的系統(tǒng)軟件和應(yīng)用程序。

        5.C++設(shè)計(jì)成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計(jì)語言。

        6.C++設(shè)計(jì)成直接的和廣泛的支援多種程序設(shè)計(jì)風(fēng)格(程序化程序設(shè)計(jì)、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì))。

        7.C++設(shè)計(jì)成給程序設(shè)計(jì)者更多的選擇,即使可能導(dǎo)致程序設(shè)計(jì)者選擇錯(cuò)誤。

        8.C++設(shè)計(jì)成盡可能與C兼容,籍此提供一個(gè)從C到C++的平滑過渡。

        9.C++避免平臺(tái)限定或沒有普遍用途的特性。

        10.C++不使用會(huì)帶來額外開銷的特性。

        11.C++設(shè)計(jì)成無需復(fù)雜的程序設(shè)計(jì)環(huán)境。


        很多同學(xué)想學(xué)好計(jì)算機(jī)編程,但是自己辛辛苦苦努力了半學(xué)期發(fā)現(xiàn),自己的去年上學(xué)期學(xué)習(xí)的編程方面的知識(shí)跟沒學(xué)一樣,全部都忘得一干二凈。那么,如果想要重新學(xué)會(huì)他,亦或者想要學(xué)好一門新的編程語言,有什么能夠快速上手的辦法呢?

        對(duì)于高級(jí)程序員來說,學(xué)會(huì)新的編程語言有C/C++的基礎(chǔ)的話,學(xué)好新語言兩個(gè)星期左右就能得心應(yīng)手,沒錯(cuò),他們的編程經(jīng)驗(yàn)豐富,編程水平比較高,而我們很多新手就不能這樣。當(dāng)然本篇文章也是針對(duì)新手來寫的。

        首先,編程水平的概念有點(diǎn)大,我們這里約定編程水平是指代碼正確性,代碼的邏輯性以及代碼可讀性三個(gè)方面。

        1、提高代碼的正確性。

        2、提高代碼的邏輯性

        3、提高代碼的可讀性

        所謂代碼的正確性是指程序在運(yùn)行過程中,代碼層面運(yùn)行正常。也就是我們常說的代碼健壯(代碼健壯其實(shí)還包含業(yè)務(wù)層面)。

        在本文中,我將演示如何用 C++ 在終端上實(shí)現(xiàn)猜謎游戲。


        安裝依賴關(guān)系

        要跟上本文的步伐,你需要 C++ 和一個(gè)編譯器。

        在 Linux 上,你可以通過從你的發(fā)行版軟件倉庫中安裝 Qt Creator IDE 來獲得你所需要的一切。

        在 Fedora、CentOS 或 RHEL 上:

        1. $ sudo dnf install qt-creator

        在 Debian、Ubuntu、Chromebook 或類似的系統(tǒng)上:

        1. $ sudo apt install qtcreator

        本文并沒有使用 Qt Creator IDE,但它是一個(gè)安裝你所需要的一切的簡單方法,對(duì)于復(fù)雜的 C++ 項(xiàng)目(包括那些帶有 GUI 的項(xiàng)目),它是一個(gè)必不可少的工具。

        設(shè)置包含和命名空間

        C++ 的核心語言是精簡的。即使是一個(gè)簡單的應(yīng)用程序也需要使用額外的庫。這個(gè)應(yīng)用程序使用 iostream 來獲得對(duì) cout 和 cin 關(guān)鍵字的訪問。

        另外,確保程序使用 std 命名空間:

        1. #include <iostream>
        2. using namespace std;

        這并不是絕對(duì)必要,但如果不將命名空間設(shè)置為 std,所有來自 iostream 庫的關(guān)鍵字都需要一個(gè)命名空間前綴。例如,我不能寫作 cout,而是要寫作 std::cout。

        C++ 中的語句以分號(hào)結(jié)束。

        創(chuàng)建一個(gè)函數(shù)

        每個(gè) C++ 應(yīng)用程序至少需要一個(gè)函數(shù)。一個(gè) C++ 應(yīng)用程序的主函數(shù)必須稱為 main,它必須返回一個(gè)整數(shù)(int),這符合 POSIX 的期望,即一個(gè)進(jìn)程在成功時(shí)返回 0,而在失敗時(shí)返回其他值。你可以通過為它提供返回類型和名稱來創(chuàng)建一個(gè)新函數(shù)。

        1. int main() {
        2.  // code goes here
        3. }

        實(shí)現(xiàn)程序邏輯

        游戲代碼必須首先產(chǎn)生一個(gè)隨機(jī)數(shù)供玩家猜測(cè)。在 C++ 中,你可以通過建立一個(gè)用于生成偽隨機(jī)數(shù)的種子來實(shí)現(xiàn)。一個(gè)簡單的種子就是當(dāng)前的時(shí)間。一旦有了種子,你就可以得到一個(gè)在 1 和 100 之間的數(shù)字。通過調(diào)用 rand 函數(shù),并設(shè)置上限值 100 來產(chǎn)生一個(gè)從 0 到 99 的隨機(jī)數(shù),所以無論選擇了什么數(shù)字都要加 1,并將結(jié)果分配給一個(gè)名為 number 的變量。你還必須聲明一個(gè)變量來保存玩家的猜測(cè)值。為了清楚起見,我稱這個(gè)變量為 guess

        這個(gè)示例代碼還包括一個(gè)調(diào)試語句,告訴你隨機(jī)數(shù)到底是什么。這對(duì)于猜測(cè)游戲來說不是很好,但它使測(cè)試速度快了很多。以后,你可以刪除這一行,或者直接在行前面用 // 注釋出來:

        1. srand (time(NULL));
        2. int number = rand() % 100+1;
        3. int guess = 0;
        4. cout << number << endl; //debug

        增加 do-while 和 if 語句

        C++ 中的 do-while 語句以關(guān)鍵字 do 開頭,并將你希望 C++ 做的所有事情用括號(hào)括起來。用 while 關(guān)鍵字結(jié)束語句,后面是必須滿足的條件(括號(hào)內(nèi)):

        1. do {
        2.  // code here
        3. } while ( number != guess );

        游戲代碼出現(xiàn)在 if、else if 和 else 語句之間,為玩家提供提示。

        首先,用 cout 語句提示玩家猜測(cè)。cout 函數(shù)將輸出打印到 stdout 上。因?yàn)?nbsp;cout 語句沒有連著 endl(endline)函數(shù),所以沒有換行。緊接著這個(gè) cout 語句,通過使用 cin 函數(shù)告訴 C++ 等待輸入。正如你所猜測(cè)的那樣,cin 等待來自 stdin 的輸入。

        接下來,程序進(jìn)入 if 控制語句。如果玩家的猜測(cè)大于 number 變量中包含的偽隨機(jī)數(shù),那么程序就會(huì)打印出一個(gè)提示,后面是一個(gè)換行符。這就中斷了 if 語句,但 C++ 仍然被困在 do-while 循環(huán)中,因?yàn)樗臈l件(number 變量等于 guess)還沒有滿足。

        如果玩家的猜測(cè)小于 number 變量中包含的偽隨機(jī)數(shù),那么程序就會(huì)打印出一個(gè)提示,后面是一個(gè)換行符。這再次中斷了 if 語句,但程序仍然被困在 do-while 循環(huán)中。

        當(dāng) guess 等于 number 時(shí),最終滿足關(guān)鍵條件,觸發(fā) else 語句,do-while 循環(huán)結(jié)束,程序結(jié)束:

        1. do {
        2. cout << "Guess a number between 1 and 100: ";
        3. cin >> guess;
        4. if ( guess > number) { cout << "Too high.\n" << endl; }
        5. else if ( guess < number ) { cout << "Too low.\n" << endl; }
        6. else {
        7. cout << "That's right!\n" << endl;
        8. exit(0);
        9. } // fi
        10. } while ( number != guess );
        11. return 0;
        12. } // main

        構(gòu)建代碼和玩游戲

        你可以用 GCC 構(gòu)建你的應(yīng)用程序:

        1. $ g++ -o guess.bin guess.cpp

        運(yùn)行二進(jìn)制文件試試:

        1. $ ./guess.bin
        2. 74
        3. Guess a number between 1 and 100: 76
        4. Too high.
        5. Guess a number between 1 and 100: 1
        6. Too low.
        7. Guess a number between 1 and 100: 74
        8. That's right!

        成功了!

        往期推薦




        趣味設(shè)計(jì)模式
        C++ 音視頻開發(fā)
        Qt 硬核指南
        玩轉(zhuǎn) Linux
        GitHub 開源推薦
        程序人生


        關(guān)注公眾號(hào)??一起優(yōu)(niu)秀(bi)!

        回復(fù)「1024」,送你一份程序員大禮包。
        瀏覽 83
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 国产1级黄片 | 古言荒淫h女h | 插插插91 | 国产主播大尺度精品福利软件 | 黄色大片高清 |