官术网_书友最值得收藏!

1.4 C++程序的結構

C++兼容C程序設計,它們的程序結構大致相同,常由以下3部分內容構成。

(1)聲明部分

聲明部分常包括:頭文件包含、全局變量或全局常量的聲明、函數聲明等內容。

C++編譯系統(或其他軟件提供者)提供了許多具有不同功能的函數,這些函數常被分為聲明(即函數頭,包括函數返回類型、函數名、形參表)和實現(即實現函數功能的程序代碼)兩部分,函數聲明常以源代碼的方式被集中放置在頭文件中,實現代碼則被編譯成二進制代碼的形式存放在各種不同的庫文件中。在C++程序中,用#include宏將頭文件包含到程序中,并按頭文件中的函數聲明提供函數參數,就能引用該函數的功能,這就是在C++程序的聲明部分包含頭文件的原因。

為了提高程序的可讀性,常將函數定義放在主函數(即main())后面。在C++中,如果函數的調用先于其定義,就必須在聲明部分對該函數進行聲明,告訴C++編譯系統此函數的定義在后面,這樣它才能被調用。今后還會發現,聲明部分常常包括類的聲明。

此外,聲明部分還常用來定義本程序要用到的全局變量和符號常量。

(2)主函數部分

同C語言一樣,C++程序的主函數也是main,它是程序執行的起點和主體。C++程序從main()函數的第一條語句開始,順序執行main()函數中的程序代碼,執行完main()函數中的全部語句后,程序就結束了。一個函數若想被執行,只有被main()函數直接或間接調用才行。

(3)函數定義部分

函數定義部分用來定義函數的功能,所有在前面只做了聲明的函數都必須在此進行定義,即編寫相關函數的程序代碼。

現在,來看一個簡單的C++程序,借此了解C++程序的一般結構。該程序接收從鍵盤輸入的10個整數,并按從大到小排序輸出。

例1-1】 一個簡單的排序程序

說明:程序代碼前面的行號是為了分析問題而添加的。

① C++源文件類型名。C語言程序文件的類型名是 .C,C++程序文件的類型名是 .cpp。第0行指出本程序的源文件名是Eg1-1.cpp。

② C++注釋語句與語句結束符。C++支持C語言的注釋語句,即寫在/* 和 */之間的內容被視為注釋。C++還增加了一個行注釋符//,它可以出現在一個語句行的任何位置,其有效范圍是從它開始到該行結束。/* 和 */常用來對多行進行注釋,即寫在/* 和 */標記之間的全部內容都是注釋,所以常稱它為塊注釋語句。

同C語句一樣,C++程序中也用“;”表示一條語句的結束。

③ C++的數據輸入與輸出。在C++中常用cin輸入數據,用cout輸出數據,它們是在iostream.h中定義的。

第1行是一條預編譯命令,其作用是將頭文件iostream.h的內容包含(即添加)到本程序中。當調用cin和cout命令時,C++就知道在iostream.h中去尋找它們的函數定義了。

第8行的cout表示輸出。語句“cout<<"input 10 numbers: \n";”用來把“<<”后面的“input 10 numbers: \n”輸出到顯示器屏幕上,提示用戶輸入10個數字。該字符串最后的“\n”與C語言中的含義一樣,是個轉義符,表示回車換行的意思。最后的分號是語句結束符。

第10行中的cin用于接收從鍵盤輸入的數據。語句“cin>>a[i];”用來把鍵盤輸入的數據存入數組元素a[i]中。第9~10行構成的for循環用于從鍵盤輸入10個整數到數組a中。

第28行的“cout<<a[i]<<" ";”則用于輸出數組元素a[i],緊接在數組元素后面又輸出了一個空白,用于間隔各數組元素。第27~28行構成一個for循環,用于連續輸出a數組的10個元素,各數組元素之間用空白間隔。第29行“cout<<endl;”語句中的endl相當于“\n”,用于在屏幕上輸出一個回車換行符。

④ 函數聲明與函數定義。第11行調用冒泡法排序函數sort()對a數組排序。

第3行是函數sort()的向前引用聲明。本程序在main()函數中調用sort()時(第11行),還沒有定義sort(),所以在第3行中進行了聲明,void表示該函數不返回任何值。同理理解第4行。

第15~24行是冒泡法排序函數sort()的定義,第26~30行是函數print()的定義。

⑤ 主函數。第6~13行是main()函數。同C程序一樣,每個C++程序必須有一個名字為main的主函數,它是程序執行的起點。寫在main后面一對{}中的所有程序代碼構成了main()的函數體。

運行該程序,當看見屏幕上顯示“input 10 numbers:”時,從鍵盤輸入10個整數,輸入一個數據后按空格鍵(也可按Enter鍵),10個數據輸入完成后,程序將會把它們按從大到小順序排列輸出。運行結果如下所示:

說明:上述第2行是從鍵盤輸入的數據,輸入完按Enter鍵,第3行是程序輸出的結果。

主站蜘蛛池模板: 依安县| 剑阁县| 潢川县| 宁津县| 高陵县| 高平市| 阜城县| 定襄县| 霞浦县| 正阳县| 罗甸县| 鲁甸县| 蒲江县| 安仁县| 石棉县| 沂水县| 汝州市| 安义县| 婺源县| 莱阳市| 江西省| 石城县| 义马市| 鄂伦春自治旗| 三原县| 施秉县| 南靖县| 乌海市| 定结县| 霍山县| 阜城县| 南平市| 泸水县| 双鸭山市| 曲周县| 东明县| 屏东县| 盐山县| 陆丰市| 台中市| 怀远县|