C++入門概覽和測驗考試創立第一個C++法式。本站提示廣大學習愛好者:(C++入門概覽和測驗考試創立第一個C++法式)文章只能為提供參考,不一定能成為您想要的結果。以下是C++入門概覽和測驗考試創立第一個C++法式正文
C++法式的組成和書寫情勢
1) 一個C++法式可以由一個法式單元或多個法式單元組成。每個法式單元作為一個文件。在法式編譯時,編譯體系分離對各個文件停止編譯,是以,一個文件是一個編譯單位。
2) 在一個法式單元中,可以包含以下幾個部門:
預處置敕令。上節4個法式中都包含#include敕令。
全局聲明部門(在函數外的聲明部門)。在這部門中包含對用戶本身界說的數據類型的聲明和法式中所用到的變量的界說。
函數。函數是完成操作的部門,是以函數是法式中必需有的和最根本的構成部門。每個法式必需包含一個或多個函數,個中必需有一個(並且只能有一個)主函數(main函數)。
然則其實不請求每個法式文件都必需具有以上3個部門,可以缺乏某些部門(包含函數)。
3) 一個函數由兩部門構成:
函數首部,即函數的第一行。包含函數名、函數類型、函數屬性、函數參數(形參)名、參數類型。注:一個函數名前面必需跟一對圓括號, 函數參數可以缺省,如int main( )。
函數體,即函數首手下面的年夜括號內的部門。假如在一個函數中有多個年夜括號,則最外層的一對{ }為函數體的規模。
函數體普通包含:
部分聲明部門 (在函數內的聲明部門)。包含對本函數中所用到的類型、函數的聲明和變量的界說。注:對數據的聲明既可以放在函數以外(其感化規模是全局的),也能夠放在函數內(其感化規模是部分的,只在本函數內有用)。
履行部門。由若干個履行語句構成,用來停止有關的操作,以完成函數的功效。
4) 語句包含兩類:一類是聲明語句,另外一類是履行語句。 C++對每種語句付與一種特定的功效。語句是完成操作的根本成份,明顯,沒有語句的函數是沒成心義的。C++語句必需以分號停止。
5) 一個C++法式老是從main函數開端履行的,而豈論main函數在全部法式中的地位若何。
6) 類(class)是C++新增長的主要的數據類型,是C++對C的最主要的成長。有了類,便可以完成面向對象法式設計辦法中的封裝、信息隱藏、繼續、派生、多態等功效。在一個類中可以包含數據成員和成員函數,他們可以被指定為公有的(private)和公用的(public)屬性。公有的數據成員和成員函數只能被本類的成員函數所挪用。
7) C++法式書寫格局自在,一行內可以寫幾個語句, 一個語句可以分寫在多行上。C++法式沒有行號,也不像FORTRAN或COBOL那樣嚴厲劃定書寫格局(語句必需從某一列開端書寫)。
8) 一個好的、有應用價值的源法式都應該加上需要的正文,以增長法式的可讀性。C++還保存了C說話的正文情勢,可以用“/*……*/”對C++法式中的任何部門作正文。在“/*”和“*/”之間的全體內容作為正文。
用“//”作正文時,有用規模只要一行,即本行有用,不克不及跨行。而用“/*……*/”作正文時有用規模為多行。只需在開端處有一個“/*”,在最初一行停止處有一個“*/”便可。是以,普通習氣是: 內容較少的簡略正文經常使用“//”,內容較長的經常使用“/*……*/ ”。
第一個C++法式
例1
#include <iostream> //包括頭文件iostream using namespace std; //應用定名空間std int main( ) { cout<<"This is a C++ program."; return 0; }
在運轉時會在屏幕上輸入以下一行信息:
This is a C++ program.
用main代表“主函數”的名字。每個C++法式都必需有一個 main 函數。main後面的int的感化是聲明函數的類型為整型。法式第6行的感化是向操作體系前往一個零值。假如法式不克不及正常履行,則會主動向操作體系前往一個非零值,普通為-1。
函數體是由年夜括號{ }括起來的。本例中主函數內只要一個以cout開首的語句。留意C++一切語句最初都應該有一個分號。
再看法式的第1行“#include <iostream>”,這不是C++的語句,而是C++的一個預處置敕令,它以“#”開首以與C++語句相差別,行的末尾沒有分號。#include <iostream>是一個“包括敕令”,它的感化是將文件iostream的內容包括到該敕令地點的法式文件中,取代該敕令行。文件iostream的感化是向法式供給輸出或輸入時所須要的一些信息。iostream是i-o-stream 3個詞的組合,從它的情勢便可以曉得它代表“輸出輸入流”的意思,因為這類文件都放在法式單位的開首,所以稱為“頭文件”(head file)。在法式停止編譯時,先對一切的預處置敕令停止處置,將頭文件的詳細內容取代 #include敕令行,然後再對該法式單位停止全體編譯。
法式的第2行“using namespace std; ” 的意思是“應用定名空間std”。C++尺度庫中的類和函數是在定名空間std中聲明的,是以法式中假如須要用到C++尺度庫(此時就須要用#include敕令行),就須要用“using namespace std; ”出聲明,表現要用到定名空間std中的內容。
在初學C++時,對本法式中的第1, 2行可以不用深究,只需曉得:假如法式有輸出或輸入時,必需應用“#include <iostream>”敕令以供給需要的信息,同時要用“using namespace std;” ,使法式可以或許應用這些信息,不然法式編譯時將失足。
例2
求a和b兩個數之和。可以寫出以下法式:
// 求兩數之和 (本行是正文行) #include <iostream> //預處置敕令 using namespace std; //應用定名空間std int main( ) //主函數首部 { //函數體開端 int a, b, sum; //界說變量 cin>>a>>b; //輸出語句 sum=a+b; //賦值語句 cout<<"a+b="<<sum<<endl; //輸入語句 return 0; //如法式正常停止,向操作體系前往一個零值 } //函數停止
本法式的感化是求兩個整數a和b之和sum。第1行“//求兩數之和”是一個正文行,C++劃定在一行中假如湧現“//”,則從它開端到本行末尾之間的全體內容都作為正文。
假如在運轉時從鍵盤輸出
123 456↙
則輸入為
a+b=579
例3
給兩個數x和y,求兩數中的年夜者。在本例中包括兩個函數。
#include <iostream> //預處置敕令 using namespace std; int max(int x,int y) //界說max函數,函數值為整型,情勢參數x,y為整型 { //max函數體開端 int z; //變量聲明,界說本函數頂用到的變量z為整型 if(x>y) z=x; //if語句,假如x>y,則將x的值賦給z else z=y; //不然,將y的值賦給z return(z); //將z的值前往,經由過程max帶回挪用處 } //max函數停止 int main( ) //主函數 { //主函數體開端 int a,b,m; //變量聲明 cin>>a>>b; //輸出變量a和b的值 m=max(a,b); //挪用max函數,將獲得的值賦給m cout<<"max="<<m<<'\n'; //輸入年夜數m的值 return 0; //如法式正常停止,向操作體系前往一個零值 } //主函數停止
本法式包含兩個函數:主函數main和被挪用的函數max。法式運轉情形以下:
18 25 ↙ (輸出18和25給a和b) max=25 (輸入m的值)
留意輸出的兩個數據間用一個或多個空格距離,不克不及以逗號或其他符號距離。
在下面的法式中,max函數湧現在main函數之前,是以在main函數中挪用max函數時,編譯體系能辨認max是已界說的函數名。假如把兩個函數的地位對調一下,即先寫main函數,後寫max函數,這時候在編譯main函數碰到max時,編譯體系沒法曉得max代表甚麼寄義,因此沒法編譯,按失足處置。
為懂得決這個成績,在主函數中須要對被挪用函數出聲明。下面的法式可以改寫以下:
#include <iostream> using namespace std; int main( ) { int max(int x,int y); //對max函數出聲明 int a,b,c; cin>>a>>b; c=max(a,b); //挪用max函數 cout<<"max="<<c<<endl; return 0; } int max(int x,int y) //界說max函數 { int z; if(x>y) z=x; else z=y; return(z); }
只需在被挪用函數的首部的末尾加一個分號,就成為對該函數的函數聲明。函數聲明的地位應該在函數挪用之前。
上面舉一個包括類(class)和對象(object)的C++法式,目標是使讀者初步懂得C++是如何表現面向對象法式設計辦法的。
例4
包括類的C++法式。
#include <iostream>// 預處置敕令 using namespace std; class Student// 聲明一個類,類名為Student { private: // 以下為類中的公有部門 int num; // 公有變量num int score; // 公有變量score public: // 以下為類中的公用部門 void setdata( ) // 界說公用函數setdata { cin>>num; // 輸出num的值 cin>>score; // 輸出score的值 } void display( ) // 界說公用函數display { cout<<"num="<<num<<endl; // 輸入num的值 cout<<"score="<<score<<endl;//輸入score的值 }; }; // 類的聲明停止 Student stud1,stud2; //界說stud1和stud2為Student類的變量,稱為對象 int main( )// 主函數首部 { stud1.setdata( ); // 挪用對象stud1的setdata函數 stud2.setdata( ); // 挪用對象stud2的setdata函數 stud1.display( ); // 挪用對象stud1的display函數 stud2.display( ); // 挪用對象stud2的display函數 return 0; }
在一個類中包括兩種成員:數據和函數,分離稱為數據成員和成員函數。在C++中把一組數據和有權挪用這些數據的函數封裝在一路,構成一種稱為“類(class)”的數據構造。在下面的法式中,數據成員num,score和成員函數setdata,display構成了一個名為Student的“類”類型。成員函數是用來對數據成員停止操作的。也就是說,一個類是由一批數據和對其操作的函數構成的。
類可以表現數據的封裝性和信息隱藏。在下面的法式中,在聲明Student類時,把類中的數據和函數分為兩年夜類:private(公有的)和public(公用的)。把全體數據(num,score)指定為公有的,把全體函數(setdata,display)指定為公用的。在年夜多半情形下,會把一切數據指定為公有,以完成信息隱藏。
具有“類”類型特點的變量稱為“對象”(object)。
法式中第18~24行是主函數。
法式運轉情形以下:
1001 98.5 ↙ (輸出先生1的學號和成就) 1002 76.5 ↙ (輸出先生2的學號和成就) num=1001 (輸入先生1的學號) score=98.5 (輸入先生1的成就) num=1002 (輸入先生2的學號) score=76.5 (輸入先生2的成就)