C++程序設(shè)計:第一章C++基礎(chǔ)知識_第1頁
C++程序設(shè)計:第一章C++基礎(chǔ)知識_第2頁
C++程序設(shè)計:第一章C++基礎(chǔ)知識_第3頁
C++程序設(shè)計:第一章C++基礎(chǔ)知識_第4頁
C++程序設(shè)計:第一章C++基礎(chǔ)知識_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、C+ 程序設(shè)計,計算機語言的基本體系結(jié)構(gòu),語言的基本體系結(jié)構(gòu),程序設(shè)計語言,第一章 C+基礎(chǔ)知識(4學時,1.3-6 C+語法基礎(chǔ) 詞法單位、數(shù)據(jù)類型、 常量變量、運算符與表達式,1.8 簡單的輸入輸出,1.7 數(shù)組與字符數(shù)組,1.1 C+語言概述,1.2 一個C+程序?qū)嵗?1.1 C語言概述,歷史: C+是由C語言為基礎(chǔ)發(fā)展起來的。 C語言是作為UNIX操作系統(tǒng)的開發(fā)語言為人們所認識。 1988年美國國家標準協(xié)會ANSI對C語言進行了標準化,產(chǎn)生了ANSI C,自學閱讀: C語言主要特點; C+與C的最主要區(qū)別; C+與C的兼容性,1.2 一個C+程序?qū)嵗?*test.cpp*/ #incl

2、ude using namespace std; void main(void) cout“Best wishes for everybody here!”endl;,先看一個程序入門程序,*a simple application: Ex1_1.cpp*/ #include using namespace std; int max(int i, int j) if (i=j) return i; else return j; int main(void) coutij; /從鍵盤輸入變量值 cout“max number is:”max(i,j)endln; /輸出 return 0;,例1

3、.1】 一個簡單的C+程序,程序組成: #打頭編譯預(yù)處理指令 若干函數(shù),其中有且只有一個main() 注釋,1.3 C+的詞法單位,1.3.1 C+的字符集,1.3.2 關(guān)鍵字,1.3.3 標識符(ID,identifier,1.3.4 標點符號,1.3.1 C+的字符集,ASCII碼字符集是計算機中的常用字符集。它包括英文字母及阿拉伯數(shù)字等128個字符,存儲一個ASCII碼占用一個字節(jié)單元,漢字國標碼用于漢字處理。國標碼的存儲占用兩個字節(jié)單元,Unicode字符集對各類字符進行統(tǒng)一的雙字節(jié)編碼。它包括了世界上多種語言的基本字符,最多可容納65536個字符。 ASCII碼字符集,國標碼字符集都

4、是它的子集,計算機可處理字符集,C+的字符集,C+語言基本字符,1.3.2 關(guān) 鍵 字,關(guān)鍵字(keyword): 又稱保留字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作它用,C+區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標準C+(ISO14882)定義了74個關(guān)鍵字,具體的C+編譯器會做一些增刪。常用關(guān)鍵字及分類見表2.1,關(guān) 鍵 字,表2-1 C+常用關(guān)鍵字及分類,1.3.3 標識符,標識符(Identifier,ID ): 是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名,標識符命名應(yīng)考慮可讀性 合法標識符的要求,標識符,例: 判斷下面哪些是合法的標識符,MyFile

5、,Salary 94,amount,void,94Salary,Salary94,amount,f3.5,Num_of_Student,1.3.4 標點符號,標點符號: # ( ) , : ; 等,標點符號的作用,有些是有一定的語法意義。如字符和字符串常量分別用 和 引起來,有些是對語法符號起分隔作用。如 ;等,1.4 C+中的數(shù)據(jù)類型,C+基本數(shù)據(jù)類型稱為內(nèi)置數(shù)據(jù)類型,內(nèi)置數(shù)據(jù)類型不僅定義了數(shù)據(jù)類型,還定義了常用操作。本節(jié)僅介紹各種基本數(shù)據(jù)類型的定義,常用操作將在后面介紹,內(nèi)置數(shù)據(jù)類型,整型:用來保存整數(shù),有符號時存儲的是補碼,無符號時存儲的時原碼,字符型:用來保存字符,存儲的是該字符的AS

6、CII碼,占用一個字節(jié)。如大寫字母A的ASCII碼為65,在對應(yīng)的一個字節(jié)中存放的就是65。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任何一個8位二進制整數(shù),實型:單精度和雙精度型都用來存放實數(shù),兩者表示的實數(shù)精度不同。實數(shù)在內(nèi)存中以規(guī)范化的浮點數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),邏輯型:也稱布爾型,其取值為true(邏輯真)和false(邏輯假),布爾型在運算中可以和整型相互轉(zhuǎn)化,false對應(yīng)為0,true對應(yīng)為1或非0,無值型:主要用來說明函數(shù)的返回值類型,將在函數(shù)一章中具體介紹,基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed(有符號)、unsigned(無符號)、l

7、ong(長)、short(短)。參見下表,VC+中所有基本數(shù)據(jù)類型,1.5 變量和常量 用來表示數(shù)據(jù),1.5.1 變量,變量,在程序中是指可以改變值的量; 變量必須用標識符進行標識,稱為變量名; 任何變量都必須先說明后使用;一是便于編譯程序為變量分配空間,二是便于編譯時進行語法檢查; 如何進行變量說明 和 變量初始化,變量說明,在C+中,變量說明的一般格式為: 存儲類型數(shù)據(jù)類型 變量名1,變量名2, ,變量名n,例: int i, j, k; /說明三個整型變量i, j, k float x, y, z; /說明三個單精度實型變量x, y, z char c1, c2; /說明兩個字符型變量c

8、1, c2 double dx; /說明一個雙精度型變量dx,變量初始化,變量初始化: 定義變量時即給變量一個值稱為變量初始化 例如:int a=3, b=4, c=5;float x=3.0,1.5.2 文字常量,1. 整型常量,4. 字符串常量,3. 字符型常量,2. 實型常量,文字常量:指程序中直接給出的量; 常量的值在程序執(zhí)行過程中保持不變;并且存儲在程序區(qū),而非數(shù)據(jù)區(qū); 根據(jù)取值和表示方法的不同,可分為以下幾種,整型常量,十進制表示法,八進制表示法,十六進制表示法,其他表示法,整型常量表示方法,整數(shù)的十進制表示方法,C+中十進制表示與平時熟悉的書寫方式相同。 例: 15 -24,整數(shù)

9、的八進制表示,C+中八進制表示以0開始,由數(shù)字07組成,用來表示一個八進制數(shù)。 例: 012 /八進制數(shù)12,即十進制數(shù)10 -0655/八進制數(shù)-655,即十進制數(shù)-429,整數(shù)的十六進制表示,C+中十六進制以0X(大小寫均可)開始,由數(shù)字09和字母AF(大小寫均可)組成,用來表示一個十六進制數(shù)。 例: 0 x32A /十六進制數(shù)32A,即十進制數(shù)810 -0 x2fe0 /十六進制數(shù)-2fe0, /即十進制數(shù)-12256,整數(shù)的其他表示方法,長整型常量和無符號整型常量: 長整型常數(shù)以 L 或 l 結(jié)尾,無符號常整數(shù)以 U 或 u 結(jié)尾,以 U L 或 L U(大小寫均可)結(jié)尾則可表示無符號

10、長整型常數(shù)。 例如: -84L/十進制長整數(shù)-84 026U/八進制表示的無符號整數(shù)26 0X32LU /十六進制表示的無符號長整型數(shù)32,實型常量,1)一般形式與平時書寫形式相同,由數(shù)字 0 9和小數(shù)點組成。例如: 0.23 -125.76 0.0 .46 -35,2) 指數(shù)形式(也稱為科學表示法)表示為尾數(shù)乘以10的次方形式,由尾數(shù)、E或e和階數(shù)組成。指數(shù)形式要求在E或e前面的尾數(shù)部分必須有數(shù)字,后面的指數(shù)部分必須為整數(shù),例 : 判斷下列表示是否合法,123E12,0.34e-2,E4,1.43E3.5,包含小數(shù)點和10的冪的數(shù)為實型常量 表示方法,字符型常量,字符常量: 用單引號引起來的

11、單個字符。在內(nèi)存中保存的是字符的ASCII碼值。 在所有字符中,可顯示字符通常就用單引號引起來表示:不可見字符用轉(zhuǎn)義字符表示。 a /字符a /字符 4/字符4 /空格字符 不可見字符:n 表換行,注意,e和E是不同的字符常量,它們代表不同的ASCII碼值。 4和整型數(shù)4是不同的值, 4的ASCII碼值為52。 0和0是兩個不同的字符。 0的ASCII碼值為48。而0的ASCII碼值為0,詳見轉(zhuǎn)義字符,4. 字符串常量,字符串常量與字符型常量的區(qū)別,字符串常量 a 占兩個字節(jié),存放a和0,值為0 x6100,字符型常量a 占一個字節(jié),存放a,值為0 x61,字符串常量: 用雙引號引起來的若干個

12、字符。 例如: I am a Chinese., 123, a ,1.5.3 常變量,標識符常量: 用常量說明符const給常量起的名字(標識符),因為其說明和引用形式很像變量,所以也稱常變量; 例如: const float PI=3.14159; const int Number_of_Student=100; /推薦用大寫字母作為常變量名,以便與一般變量區(qū)分 存儲在數(shù)據(jù)區(qū)??勺x不可寫 使用常變量的意義:便于程序修改,增加可讀性。 C+建議使用常變量,而不要使用直接常量,1.6 運算符和表達式,1.6.1 運算符、優(yōu)先級和結(jié)合性,1.6.2 基本運算符及其表達式,1.6.4 算術(shù)類型轉(zhuǎn)換和

13、賦值類型轉(zhuǎn)換 (選讀,1.6.5 求值次序與副作用(選讀,1.6.3 語句,1.6.1 運算符、優(yōu)先級和結(jié)合性,運算符對數(shù)據(jù)進行運算或處理的符號 分單目、雙目、三目 操作數(shù)參與運算的對象,運算符按操作數(shù)的數(shù)量分類: 單目運算符 如“-” ; 雙目運算符 如“+、-”; 三目運算符 如“,1.6.1 運算符、優(yōu)先級和結(jié)合性,優(yōu)先級和結(jié)合性決定了運算中的優(yōu)先關(guān)系,優(yōu)先級:指不同運算符在運算中的優(yōu)先關(guān)系,可以用序號表示,序號越小,優(yōu)先級越高。 例如: 加號()和減號()的優(yōu)先級是6;乘號( * )和除號( / )的優(yōu)先級是5;* 和 / 的優(yōu)先級高于和,優(yōu)先級無需記憶,可使用()限制優(yōu)先運算,1.6

14、.1 運算符、優(yōu)先級和結(jié)合性,結(jié)合性: 決定優(yōu)先級相等的運算符組合在一起時的運算次序, 如+、-的結(jié)合性是從左到右(左結(jié)合),則a+b+c-d的運算次序為: (a+b)+c)-d /先算a+b,再加c,最后減d 又如前+和單目負-的結(jié)合性是從右到左(右結(jié)合),則-+a的運算次序為: -(+a) /先做+a,再取反(加負號,1.6.1 運算符、優(yōu)先級和結(jié)合性,例: (1) a*b+c; /根據(jù)優(yōu)先級,先做乘法運算,再 /做加法 (2) a+b-c ;/根據(jù)左結(jié)合性,先取a、b相加; /再取c,最后相減,1 算術(shù)運算符及其表達式,4 邏輯運算、邏輯表達式及其求值優(yōu)化,5 位運算(選讀,2 賦值運算

15、符賦值表達式,3 自增、自減運算,6 逗號運算符與逗號表達式(使用較少,自學,1.6.2 基本運算符及其表達式,7 sizeof( )運算符,表達式:由運算符、操作數(shù)組成的,能取得值的式子,/ 與 % 的使用,左值、右值概念,運算符前置、后置的區(qū)別,求值優(yōu)化的 副作用,計算字節(jié)數(shù),1.算術(shù)運算符及其表達式,算術(shù)表達式,使用時注意: 1、表達式中每個變量都有確定的值時才能進行表達式求值; 2、C+中算術(shù)運算應(yīng)注意數(shù)據(jù)溢出問題。 為變量選擇合適的數(shù)據(jù)類型,并確保該數(shù)據(jù)類型能存放變量可能的值, 盡可能避免除數(shù)是一個絕對值很接近于0的數(shù), 盡可能避免整數(shù)的連續(xù)乘運算,由算術(shù)運算符連接的表達式,如:a+

16、b*3,2.賦值運算符與賦值表達式,賦值: 將數(shù)據(jù)存放到相應(yīng)存儲單元中稱為賦值,如果該單元中已有值,賦值操作以新值取代舊值,賦值通過賦值運算符“=”來完成,其意義是將賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號不是數(shù)學中的等號,它具有方向性,左值與右值: C+將變量名代表的單元稱為 “左值”,而將變量的值稱為“右值”。 左值必須是內(nèi)存中一個可以訪問且可以合法修改的對象,因此只能是變量名,而不能是常量或表達式,2.賦值運算符與賦值表達式,例如下面的賦值運算是錯誤的: 3.1415926=pi;/左值不能是常數(shù) x+y=z;/左值不能是表達式 const int N=30; N=40;/常變量

17、不能重新賦值,2.賦值運算符與賦值表達式,賦值表達式: 由賦值運算符連接的表達式。格式為: 變量 = 表達式 (先計算右值,再將右值賦給左值) 例如:x=5+6;a=b=c=d+1(右到左); 復(fù)合賦值運算符: 雙目算術(shù)運算符和賦值運算符可以組合成單一運算符: + = (復(fù)合加) = * = / = % = 例如:x+=5 等同于:x=x+5,3.自增自減運算,前置和后置區(qū)別: int i=5, m, n; m=i+; /后置;相當于m=i; i=i+1; /結(jié)果:i的值為6,m的值為5; n=+i; /前置;相當于i=i+1; n=i; /結(jié)果:i的值為6,n的值為6,自增自減運算符( +

18、,-) 意義:使變量當前值加1或減1,再賦給該變量自己: i+或+i /相當于i=i+1 j-或-j /相當于j=j1,4.邏輯運算、邏輯表達式及其求值優(yōu)化,邏輯運算: 用于判斷分析,運算符包括關(guān)系和邏輯運算符。 關(guān)系運算符: 包括:(大于)、(大于等于)、(小于)、(小于等于)、= =(等于)和!=(不等于)。 關(guān)系運算符完成兩個操作數(shù)大小的比較,結(jié)果為邏輯值true(真)或false(假)。真對應(yīng)1,假對應(yīng)0,例如: a+bc+d /*等同于(a+b)(c+d), 結(jié)果為0或1*,關(guān)系表達式,邏輯運算符,包括:!、 b= 0; c= 5; d= 2; a+bc+d | 0 /* 先算37,

19、為假:0, 0|0 結(jié)果為假:0 *,邏輯表達式求值的優(yōu)化,求值優(yōu)化,已知: int a=10, b=30; 求: a | b+ /結(jié)果以及a,b的值,t1=1,整個表達式的值為 1,可見: 表達式 b+ 已不需要計算所以: b不變?nèi)詾?30,副作用,條件運算符,條件運算符是C+中惟一的一個三目運算符,由兩個符號“?”和“:”組成。條件運算符的格式如下: 條件表達式?表達式1:表達式2 其含義是如果條件表達式的結(jié)果為真(非0),就執(zhí)行表達式1;否則就執(zhí)行表達式2。表達式1和2的類型必須相容,例:ab?(max=a):(max=b) 意思是如果a大于b,則max=a,否則max=b。即把a和b兩

20、者中的大值賦給max。 上例也可寫成:max=ab?a:b,逗號表達式,C+中,逗號既是分隔符,又是運算符,用逗號連接起來的表達式稱為逗號表達式。 一般格式為: 表達式1,表達式2,表達式n 逗號表達式中的每一個表達式都會被運算,整個逗號表達式的值為最后一個表達式的值。 例如:a=(x=3,x+=6,5+6);/a=11 x=9(左至右,7. sizeof( ) 運算符,sizeof是帶參數(shù)的單目運算符,而不是一個函數(shù)。用于計算一個操作數(shù)類型或一個變量的字節(jié)數(shù)。一般格式為: sizeof (數(shù)據(jù)類型) 或 sizeof(變量名) 例如:sizeof(int) 值為4 sizeof( float

21、) 值為4 double x; sizeof( x) 值為8,1.6.3 語句,1 表達式語句:表達式; 2 空語句: ; 3 復(fù)合語句: /若干語句 流程控制語句:流程控制語句用來控制或 改變程序的執(zhí)行方向,1.6.3結(jié)束,1、系統(tǒng)自動進行類型轉(zhuǎn)換 混合運算的類型轉(zhuǎn)換規(guī)則 賦值類型轉(zhuǎn)換,2、人為進行強制類型轉(zhuǎn)換,1.6.4 類型轉(zhuǎn)換 (選讀,在遵循優(yōu)先級和結(jié)合性前提下的編譯器行為,1.6.5 求值次序與副作用(選讀,ok,類型轉(zhuǎn)換不改變數(shù)據(jù)本身的值,自動類型轉(zhuǎn)換,在表達式中常會遇到不同類型數(shù)據(jù)之間進行運算,此時不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后再進行運算。: 在表達式中,char 和 s

22、hort 類型的值都會自動轉(zhuǎn)換成int ,無符號的char 和 short 類型的值會自動轉(zhuǎn)換成unsigned int。float型數(shù)據(jù)在運算時一律先轉(zhuǎn)換成雙精度型,以提高運算精度。 按照從高到低的順序給各種數(shù)據(jù)類型分等級,依次為:long double, double, unsigned long long, long long, unsigned long, long。當兩操作數(shù)類型不同時,將精度低的操作數(shù)的數(shù)據(jù)類型變換到與另一精度高的類型再進行運算,強制類型轉(zhuǎn)換,強制類型轉(zhuǎn)換格式為: 強制轉(zhuǎn)換類型 (表達式)或 (強制轉(zhuǎn)換類型) (表達式) 強制轉(zhuǎn)換并不是將表達式或變量直接轉(zhuǎn)換成指定的

23、類型,而是產(chǎn)生一個臨時變量,再將表達式強制轉(zhuǎn)換成指定的數(shù)據(jù)類型并賦給臨時變量,而原來的表達式或變量的數(shù)據(jù)類型和值不發(fā)生變化。 例如:執(zhí)行語句double f=3.6;int i=(int)f;后,i的值為3,而f的值依然為3.6,用途、特點 存儲方式 定義和訪問方法,1.7.1 一維數(shù)組,定義: int a100; /一個100個整數(shù)的數(shù)組a const int N=30; double xN; /一個30個實數(shù)的數(shù)組x,線性數(shù)據(jù)組織,連續(xù)存儲,注:元素個數(shù)只能是常數(shù),訪問: coutx1endl; /輸出某元素,1.7 數(shù)組與字符數(shù)組自定義導(dǎo)出類型,數(shù)組的初始化 : 數(shù)組初始化的方法是在定義

24、時用大括號列出元素的值。 例如: int score5=88, 92, 90, 85, 78; float y5=3.4, 4.2, 7; int n=1, 2, 3, 4;/數(shù)組n有4個元素,1,1,2,3,1,輸出,1,2,3,1+2=3,例1.2】使用數(shù)組的簡單例子。 # include void main() int int_arr4; int_arr0=1; int_arr1=1; int_arr2=2; int_arr3=int_arr1+int_arr2; coutint_arr0n int_arr1n int_arr2n int_arr3 n;,1.7.2 字符數(shù)組,字符數(shù)組定

25、義: 如果數(shù)組中的元素為字符,就稱為字符數(shù)組,char string110; /10個字符的字符數(shù)組 char city_name3=S,u,z,h,o,u; 字符數(shù)組可用來處理字符串,故也可用字符串來定義數(shù)組 char city_name130=“Nanjing”; char city_name2=“Beijing,注意:串結(jié)束標志的重要性。定義字符數(shù)組時留出足夠空間,因為字符串變量不能直接賦值,所以將一個字符串的值賦給另一個字符串必須用字符串復(fù)制函數(shù)完成。例如: char string220; string2=”VC+”;/非法 strcpy(string2, ”VC+”);/合法,字符串

26、處理函數(shù):添加 #include strlen(s) /串s的長度(不包括0) strcpy(s1,s2) /將串s2拷貝到串s1中,1.7.2 字符數(shù)組,例1.3】 字符數(shù)組和字符串處理函數(shù)的應(yīng)用。 # include # include using namespace std; int main( ) char s1 =Hello C+;/初始化決定數(shù)組s1有10個元素 char s210, s320; s20= B; s21= e; s22= g; s23= i; s24= n; s25= 0 ; /對字符串結(jié)束處理非常重要 strcpy(s3, s2); coutThe length of s1 is: strlen(s1) n; couts2 ts3 n; return 0 /只有字符數(shù)組可整體輸出,因為有結(jié)束符 運行結(jié)果:The length of Hello C+ is:9 Begin Begin,2.4.2結(jié)束,cin: cin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù), 一般格式為: cin變量名1變量名2變量名n; cout: cout實現(xiàn)將數(shù)據(jù)輸出到顯示器的操作, 一般格式為: cout us

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論