《C++程序設(shè)計》(第2版)教學資源-第一章課件_第1頁
《C++程序設(shè)計》(第2版)教學資源-第一章課件_第2頁
《C++程序設(shè)計》(第2版)教學資源-第一章課件_第3頁
《C++程序設(shè)計》(第2版)教學資源-第一章課件_第4頁
《C++程序設(shè)計》(第2版)教學資源-第一章課件_第5頁
已閱讀5頁,還剩185頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++程序設(shè)計C++程序設(shè)計1計算機語言的基本體系結(jié)構(gòu)語言的基本體系結(jié)構(gòu)程序設(shè)計語言計算機語言的基本體系結(jié)構(gòu)語言的基本體系結(jié)構(gòu)程序設(shè)計語言2本章將簡要介紹C++中的數(shù)據(jù)類型及相關(guān)運算,以及常量、變量、表達式、語句等,最后介紹簡單的輸入輸出方法。第一章C++基礎(chǔ)知識本章將簡要介紹C++中的數(shù)據(jù)類型及相關(guān)運算,以及常量、變量、3第一章C++基礎(chǔ)知識

C++的詞法單位

運算符和表達式

簡單的輸入輸出

數(shù)組與字符數(shù)組

常量和變量

C++中的數(shù)據(jù)類型ok1.1

C++語言概述

1.2一個C++程序?qū)嵗谝徽翪++基礎(chǔ)知識C++的詞法單位41.1C++語言概述

歷史:C++是由C語言為基礎(chǔ)發(fā)展起來的。C語言是作為UNIX操作系統(tǒng)的開發(fā)語言為人們所認識。七十年代末,C語言開始移植到非UNIX環(huán)境中,并逐步脫離UNIX系統(tǒng)成為一種獨立的程序設(shè)計語言。1988年美國國家標準協(xié)會ANSI對C語言進行了標準化,產(chǎn)生了ANSIC。1.1C++語言概述歷史:51.1C++語言概述

(1)C語言既具備高級語言的結(jié)構(gòu)和編程環(huán)境,又提供類似于匯編語言那樣的系統(tǒng)資源操縱能力及程序執(zhí)行效率。適合解決有實時要求的問題。C語言的主要特點:(2)有豐富的運算符和數(shù)據(jù)類型,表達式類型多樣化,可以方便地實現(xiàn)在其他語言中較難實現(xiàn)的運算,對各種不同類型的程序設(shè)計都有良好的適應性。(3)以函數(shù)為基礎(chǔ)實現(xiàn)程序的結(jié)構(gòu)化設(shè)計,支持大型程序的多文件構(gòu)成及單個文件獨立編譯,適合大型復雜程序的設(shè)計。(4)語言簡潔、緊湊,使用方便、靈活。(5)可移植性好。1.1C++語言概述(1)C語言既具備高級語言的結(jié)構(gòu)和61.1C++語言概述

C++是由C發(fā)展成為的以面向?qū)ο鬄橹饕卣鞯恼Z言。作為C語言的超集,C++繼承了C的所有優(yōu)點,又對數(shù)據(jù)類型做了擴充,使得編譯系統(tǒng)可以檢查出更多類型錯誤。C++支持面向?qū)ο蟪绦蛟O(shè)計,通過類和對象的概念把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,通過派生、繼承、重載和多態(tài)性等特征實現(xiàn)了軟件重用和程序自動生成,使得大型復雜軟件的構(gòu)造和維護變得更加有效和容易。C++語言的主要特點:1.1C++語言概述C++是由C發(fā)展成為的以面向?qū)ο鬄?1.1C++語言概述

C++與C完全兼容,很多用C編寫的庫函數(shù)和應用程序都可以為C++所用。但正是由于與C兼容,使得C++不是純正的面向?qū)ο蟮恼Z言,它既支持面向?qū)ο蟪绦蛟O(shè)計,也支持面向過程設(shè)計。但我們應當注意用面向?qū)ο蟮乃枷脒M行設(shè)計,以發(fā)揮出C++的優(yōu)勢。C++語言的兼容性:1.1C++語言概述C++與C完全兼容,很多用C編寫的81.2一個C++程序?qū)嵗?include<iostream>usingnamespacestd;intmax(inti,intj){ //A

if(i>=j)returni;

else

returnj;}intmain(void){//Bcout<<″輸入i,j:″;//顯示提示信息

inti,j; //說明變量cin>>i>>j;//從鍵盤上輸入變量值

cout<<″maxnumberis:″<<max(i,j)<<′\n′; //輸出提示和結(jié)果

return0;}【例1.1】

一個簡單的C++程序。程序組成:注釋編譯預處理指令程序體由若干函數(shù)組成,其中有且僅有一個主函數(shù)main(),這是程序的執(zhí)行入口。在Windows編程中定義為winmain()。下面進入VC++運行1.2一個C++程序?qū)嵗?include<iostre91.3C++的詞法單位1.3.1C++的字符集

1.3.2關(guān)鍵字

1.3.3標識符(ID,identifier)1.3.4標點符號

ok1.3C++的詞法單位1.3.1C++的字101.3.1C++的字符集ASCII碼字符集是計算機中的常用字符集。它包括英文字母及阿拉伯數(shù)字等128個字符,存儲一個ASCII碼占用一個字節(jié)單元。漢字國標碼用于漢字處理。國標碼的存儲占用兩個字節(jié)單元。Unicode字符集對各類字符進行統(tǒng)一的雙字節(jié)編碼。它包括了世界上多種語言的基本字符,最多可容納65536個字符。ASCII碼字符集,國標碼字符集都是它的子集。ok常用字符集:1.3.1C++的字符集ASCII碼字符集是計算機中11C++的字符集26個小寫字母

abcdefghijklmnopqrstuvwxyz26個大寫字母

ABCDEFGHIJKLMNOPQRSTUVWXYZ10個阿拉伯數(shù)字

0123456789

其他符號

+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++語言基本字符:C++的字符集26個abcdefghijklmnopqrs121.3.2關(guān)鍵字關(guān)鍵字(keyword):又稱保留字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作它用。C++區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標準C++(ISO14882)定義了74個關(guān)鍵字,具體的C++編譯器會做一些增刪。常用關(guān)鍵字及分類見表。ok1.3.2關(guān)鍵字關(guān)鍵字(keyword):C13關(guān)鍵字數(shù)據(jù)類型說明符與修飾符boolcharwchar_tclassconstdoubleenumfloatintlongshortsignedstructunionunsignedvoidvolatile存儲類型說明符autoexterninlineregisterstatic訪問說明符friendprivateprotectedpublic其它說明符asmexplicitnamespaceoperatortemplatethistypedeftypenameusingvirtual

語句與標號breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtrywhile

運算符及邏輯值deletefalsenewsizeoftrue表2-1C++常用關(guān)鍵字及分類

ok關(guān)鍵字數(shù)據(jù)類型說明符與修飾符boo14關(guān)鍵字

還有一些關(guān)鍵字本書未介紹:

const_castdynamic_castreinterpret_caststatic_castexportmutabletypeid下面可用一些關(guān)鍵字代替邏輯運算符:andand_eqbitandbitorcomplnotoror_eqXorxor_eqnot_eq關(guān)鍵字還有一些151.3.3標識符標識符(Identifier,ID):是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名。合法標識符由字母或下劃線開始,由字母、數(shù)字、下劃線組成,其有效長度為1-31個字符,長度超過31個字符者只識別前31個字符,VC++標識符長度為1-247個字符。建議使用有一定含義的英文單詞或拼音序列作標識符,以提高可讀性;另外盡量不用下劃線或雙下劃線打頭,以免與系統(tǒng)定義的關(guān)鍵字沖突。ok1.3.3標識符標識符(Identifier,ID)16 標識符例:判斷下面哪些是合法的標識符:

MyFileSalary94amountvoid94SalarySalary94$amountNum_of_Student 標識符例:判斷下面哪些是合法的標識符:MyFileS171.3.4標點符號標點符號:#(){},:;"'…等。標點符號的作用:有一定的語法意義。如字符和字符串常量分別用'

'和"

"引起來。對語法符號起分隔作用。如;等1.3.4標點符號標點符號:標點符號的作用:有一定的181.4C++中的數(shù)據(jù)類型圖2-1C++的數(shù)據(jù)結(jié)構(gòu)實型float雙精度型doubleC++的數(shù)據(jù)類型基本數(shù)據(jù)類型非基本數(shù)據(jù)類型數(shù)組type[]指針type*結(jié)構(gòu)struct聯(lián)合union枚舉enum類class整型int字符型char邏輯型bool無值型void實型ok1.4C++中的數(shù)據(jù)類型圖2-1C++的數(shù)據(jù)結(jié)構(gòu)19

C++基本數(shù)據(jù)類型稱為內(nèi)置數(shù)據(jù)類型,內(nèi)置數(shù)據(jù)類型不僅定義了數(shù)據(jù)類型,還定義了常用操作。本節(jié)僅介紹各種基本數(shù)據(jù)類型的定義,常用操作將在后面介紹。

C++為強類型語言,所有數(shù)據(jù)的使用嚴格遵從“先說明后使用”的原則,以便編譯器進行編譯。

整型:用來存放整數(shù),整數(shù)(有符號的整數(shù))在內(nèi)存中存放的是它的補碼,無符號數(shù)沒有符號位,存放的就是原碼。整數(shù)占用的字節(jié)數(shù)與機型有關(guān),32位機上占用4個字節(jié)。內(nèi)置數(shù)據(jù)類型:C++基本數(shù)據(jù)類型稱為內(nèi)置數(shù)據(jù)類型,內(nèi)置數(shù)據(jù)類型不僅20

字符型:用來保存字符,存儲的是該字符的ASCII碼,占用一個字節(jié)。如大寫字母A的ASCII碼為65,在對應的一個字節(jié)中存放的就是65。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任何一個8位二進制整數(shù)。C++同時也支持寬字符類型(wchar_t),或稱雙字節(jié)字符型。

實型:單精度和雙精度型都用來存放實數(shù),兩者表示的實數(shù)精度不同。實數(shù)在內(nèi)存中以規(guī)范化的浮點數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),32位機上實型為23位(因規(guī)范化數(shù)的數(shù)碼最高位恒為1,不必存儲,實際精度為24位),雙精度為52位。字符型:用來保存字符,存儲的是該字符的ASCII碼,21邏輯型:也稱布爾型,其取值為true(邏輯真)和false(邏輯假),存儲字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,中為1個字節(jié)。布爾型在運算中可以和整型相互轉(zhuǎn)化,false對應為0,true對應為1或非0無值型:主要用來說明函數(shù)的返回值類型,將在函數(shù)一章中具體介紹。

基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed(有符號)、unsigned(無符號)、long(長)、short(短)。參見下表:邏輯型:也稱布爾型,其取值為true(邏輯真)和false(22類型名稱占用字節(jié)數(shù)取值范圍bool布爾型

1true,false(signed)char有符號字符型1-128127unsigedchar無符號字符型10255(signed)short(int)有符號短整型2-3276832767unsignedshort(int)無符號短整型2065535(signed)int(signed)有符號整型4-231

(231-1)unsigned(int)無符號整型40(232-1)(signed)long(int)有符號長整型4-231

(231-1)unsignedlong(int)無符號長整型40(232-1)float實型4-1038

1038double雙精度型8-10308

10308longdouble長雙精度型8-10308

10308void無值型0無值VC++中所有基本數(shù)據(jù)類型類型名稱取值范圍bool布爾型

1t231.5變量和常量1.5.1變量1.5.2文字常量1.5.3常變量在程序中,常量和變量是用來表示數(shù)據(jù)的;常量又分為字面常量、常變量;ok1.5變量和常量1.5.1變量241.5.1變量1變量說明

2變量初始化變量,在程序中是指可以改變值的量;變量必須用標識符進行標識,稱為變量名;變量有類型之分,如整形變量、字符變量等;類型決定了變量的取值范圍和合法運算;任何變量都必須先說明后使用;一是便于編譯程序為變量分配空間,二是便于編譯時進行語法檢查;變量使用的第一步,是給變量賦一個確定的值;ok1.5.1變量1變量說明2變量初始化變25變量說明

在C++中,變量說明的一般格式為:《存儲類型》數(shù)據(jù)類型變量名1《,變量名2,,變量名n》;例:inti,j,k;

//說明三個整型變量i,j,kfloatx,y,z;

//說明三個單精度實型變量x,y,zcharc1,c2;

//說明兩個字符型變量c1,c2doubledx;

//說明一個雙精度型變量dx

變量說明在C++中,變量說明的一般格式為:例:26變量初始化變量初始化:定義變量時即給變量一個值稱為變量初始化例如: inta=3,b=4,c=5; float;

變量初始化可以避免引用到隨機變量。如未初始化,變量使用的第一步是賦一個確定的值。變量初始化變量初始化:271.5.2文字常量1.整型常量

4.字符串常量3.字符型常量2.實型常量文字常量:指程序中直接給出的量;常量的值在程序執(zhí)行過程中保持不變;并且存儲在程序區(qū),而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為以下幾種:ok1.5.2文字常量1.整型常量4.28整型常量十進制表示法八進制表示法十六進制表示法其他表示法整型常量表示方法:ok整型常量十進制表示法八進制表示法十六進制表示法其他表示法整型29整數(shù)的十進制表示方法C++中十進制表示與平時熟悉的書寫方式相同。例:15-24ok整數(shù)的十進制表示方法C++中十進制表示與平時熟悉的30整數(shù)的八進制表示

C++中八進制表示以0開始,由數(shù)字07組成,用來表示一個八進制數(shù)。例:012 //八進制數(shù)12,即十進制數(shù)10-0655 //八進制數(shù)-655,即十進制數(shù)-429ok整數(shù)的八進制表示C++中八進制表示以0開始,由數(shù)31整數(shù)的十六進制表示

C++中十六進制以0X(大小寫均可)開始,由數(shù)字09和字母AF(大小寫均可)組成,用來表示一個十六進制數(shù)。例:0x32A//十六進制數(shù)32A,即十進制數(shù)810-0x2fe0//十六進制數(shù)-2fe0,//即十進制數(shù)-12256ok整數(shù)的十六進制表示C++中十六進制以0X(大小寫32整數(shù)的其他表示方法長整型常量和無符號整型常量:長整型常數(shù)以L或l結(jié)尾,無符號常整數(shù)以U或u結(jié)尾,以UL或LU(大小寫均可)結(jié)尾則可表示無符號長整型常數(shù)。例如:-84L //十進制長整數(shù)-84026U //八進制表示的無符號整數(shù)260X32LU//十六進制表示的無符號長整型數(shù)32。整數(shù)的其他表示方法長整型常量和無符號整型常量:33實型常量(1)一般形式與平時書寫形式相同,由數(shù)字09和小數(shù)點組成。例如:0.23-125.760.0.46-35.(2)指數(shù)形式(也稱為科學表示法)表示為尾數(shù)乘以10的次方形式,由尾數(shù)、E或e和階數(shù)組成。指數(shù)形式要求在E或e前面的尾數(shù)部分必須有數(shù)字,后面的指數(shù)部分必須為整數(shù)。

例:判斷下列表示是否合法123E12-.34e-2E41.43E3.5包含小數(shù)點和10的冪的數(shù)為實型常量表示方法:實型常量(1)一般形式與平時書寫形式相同,由數(shù)字034字符型常量

字符常量:用單引號引起來的單個字符。在內(nèi)存中保存的是字符的ASCII碼值。在所有字符中,可顯示字符通常就用單引號引起來表示:

'a' //字符a

'@' //字符@

'4' //字符4

'

' //空格字符特殊情況字符,如不可顯示的字符等,c++使用轉(zhuǎn)義序列表示方法(詳見表1-3,此處略):

'\n' //換行

'\\'//字符\字符型常量字符常量:354.字符串常量字符串常量與字符型常量的區(qū)別:字符串常量"

a"占兩個字節(jié),存放'a'和'\0',值為0x6100字符型常量'a'占一個字節(jié),存放'a',值為0x61\0aa字符串常量:用雙引號引起來的若干個字符。例如:"

IamaChinese.","123","

a","

"4.字符串常量字符串常量與字符型常量的區(qū)別:字符串常量"361.5.3常變量標識符常量:用常量說明符const給文字常量起的名字(標識符),因為其說明和引用形式很像變量,所以也稱常變量;例如:constfloatPI=3.14159;//推薦用大寫字母作為常變量名constintNumber_of_Student=100;常變量必須也只能在說明時進行初始化;常變量初始化之后,不允許再被賦值;常變量必須先說明后使用;常變量存儲在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時系統(tǒng)對常變量進行類型檢查。C++建議使用常變量,而不要使用文字常量。1.5.3常變量標識符常量:371.6運算符和表達式1.6.1運算符、優(yōu)先級和結(jié)合性

1.6.2基本運算符及其表達式1.6.4算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換(選讀)1.6.5求值次序與副作用1.6.3語句本節(jié)的重點:介紹與基本數(shù)據(jù)類型封裝在一起的運算(操作)。ok1.6運算符和表達式1.6.1運算符、優(yōu)先級和結(jié)合性381.6.1運算符、優(yōu)先級和結(jié)合性ok在C++中對常量或變量進行運算或處理的符號稱為運算符,參與運算的對象稱為操作數(shù)。運算符按操作數(shù)的數(shù)量分類:單目運算符只對一個操作數(shù)運算,如負號運算符“”等;雙目運算符要求有兩個操作數(shù),如乘號運算符“*”等;三目運算符要求有三個操作數(shù),三元運算符只有一個“?:”。1.6.1運算符、優(yōu)先級和結(jié)合性ok在C++中對391.6.1運算符、優(yōu)先級和結(jié)合性ok

優(yōu)先級和結(jié)合性決定了運算中的優(yōu)先關(guān)系。優(yōu)先級:指不同運算符在運算中的優(yōu)先關(guān)系,可以用序號表示,序號越小,優(yōu)先級越高。例如:加號(+)和減號(-)的優(yōu)先級是6;乘號(*)和除號(/)的優(yōu)先級是5;*和/的優(yōu)先級高于+和-。

1.6.1運算符、優(yōu)先級和結(jié)合性ok優(yōu)先級401.6.1運算符、優(yōu)先級和結(jié)合性結(jié)合性:決定優(yōu)先級相等的運算符組合在一起時的運算次序,同一優(yōu)先級的運算符有相同的結(jié)合性。如+、-的結(jié)合性是從左到右(左結(jié)合),則a+b+c-d的運算次序為:((a+b)+c)-d//先算a+b,再加c,最后減d又如前++和單目負-的結(jié)合性是從右到左(右結(jié)合),則-++a的運算次序為:-(++a)//先做++a,再取相反數(shù)(加負號)這對算法描述是必須的,每一步做什么必須確定。1.6.1運算符、優(yōu)先級和結(jié)合性結(jié)合性:411.6.1運算符、優(yōu)先級和結(jié)合性例:(1)a*b+c;

//先做乘法運算,再做加法(2) a+b-c;

//根據(jù)左結(jié)合性,先取a、b相加; //再取c,最后相減演示如下:設(shè)a=10,b=20,c=15;1020151020+3015-151.6.1運算符、優(yōu)先級和結(jié)合性例:1020151020421算術(shù)運算符及其表達式4邏輯運算、邏輯表達式及其求值優(yōu)化5位運算(選讀)2賦值運算符賦值表達式3自增、自減運算6逗號運算符與逗號表達式1.6.2基本運算符及其表達式7sizeof()運算符表達式:由運算符、操作數(shù)及標點符號組成的,能取得一個值的式子。1算術(shù)運算符及其表達式4邏輯運算、邏輯表達式及其求值優(yōu)化431.算術(shù)運算符及其表達式優(yōu)先級運算符名稱3+正,單目

-負,單目5*乘,雙目

/除,雙目

%求余,雙目6+加,雙目

-減,雙目ok1.算術(shù)運算符及其表達式

ok44整數(shù)的算術(shù)運算:當兩個操作數(shù)均為整數(shù)時,*和/重載為整乘和整除,結(jié)果為整數(shù),除法運算后舍去小數(shù)取整。如:5/4 //結(jié)果為1,整數(shù)當兩個操作數(shù)均為整數(shù),%定義為求余運算,也稱求模運算,結(jié)果為兩個整數(shù)相除后的余數(shù)。如果兩個整數(shù)中有負數(shù),則先用兩數(shù)絕對值求余,最后結(jié)果的符號與被除數(shù)相同。例如6%3 //結(jié)果為06%7 //結(jié)果為67%6 //結(jié)果為1-7%6 //結(jié)果為-17%-6 //結(jié)果為1-7%-6 //結(jié)果為-1整數(shù)的算術(shù)運算:當兩個操作數(shù)均為整數(shù),%定義為求余運算,也稱45實數(shù)的算術(shù)運算:

只要有一個操作數(shù)是實數(shù),兩個操作數(shù)均轉(zhuǎn)換為double型,*和/重載為普通的乘和除,結(jié)果是實數(shù):5/4.0 //結(jié)果為,實數(shù)運算符的重載:運算符總是與操作數(shù)封裝在一起。相同的運算符對不同類型的操作數(shù)執(zhí)行的運算是有差異的。實數(shù)的算術(shù)運算:運算符的重載:46算術(shù)表達式:使用時注意:1、表達式中每個變量都有確定的值時才能進行表達式求值;2、C++中算術(shù)運算應注意數(shù)據(jù)溢出問題,即運算結(jié)果超出對應數(shù)據(jù)類型的表示范圍。編譯程序只會對除法運算時除數(shù)為0這種情況提示出錯,因此,程序設(shè)計者必須在程序中解決檢查并處理整數(shù)溢出問題。ok由算術(shù)運算符連接的表達式,如:a+b*3;算術(shù)表達式:使用時注意:ok由算術(shù)運算符連接的表達式,如:a472.賦值運算符與賦值表達式

ok賦值與引用:

將數(shù)據(jù)存放到相應存儲單元中稱為賦值,如果該單元中已有值,賦值操作以新值取代舊值;從某個存儲單元中取出數(shù)據(jù)使用,稱為引用,引用不影響單元中的值,即一個量可以多次引用。常量只能引用,不能賦值。賦值通過賦值運算符“=”來完成,其意義是將賦值號右邊的值送到左邊變量所對應的單元中。賦值號不是等號,它具有方向性。

2.賦值運算符與賦值表達式ok賦值與引用:賦值通過賦值運算48左值與右值:C++將變量名代表的單元稱為“左值”,而將變量的值稱為“右值”。左值必須是內(nèi)存中一個可以訪問且可以合法修改的對象,因此只能是變量名,而不能是常量或表達式。2.賦值運算符與賦值表達式

例如下面的賦值運算是錯誤的:3.1415926=pi;

//左值不能是常數(shù)x+y=z;

//左值不能是表達式constintN=30;N=40;

//左值不能是常變量左值與右值:2.賦值運算符與賦值表達式例如下面的賦值運算是492.賦值運算符與賦值表達式賦值表達式:由賦值運算符連接的表達式。格式為:

變量=表達式例如:x=5+6;a=b=c=d+1;

復合賦值運算符:雙目算術(shù)運算符和賦值運算符可以組合成單一運算符:+=–=*=/=%=格式為:

變量復合賦值運算符表達式它等同于

變量=變量運算符表達式

例如:x+=5

等同于:x=x+5ok2.賦值運算符與賦值表達式賦值表達式:ok503.自增自減運算前置和后置運算:前置是先增減后引用,即先對變量自加或自減,用新的值參與其他運算;后置則是先引用后增減,即用變量原來的值參與其他運算,然后再對變量進行自加或自減,例如:inti=5,j=5,m,n;m=i++;

//后置;相當于m=i;i=i+1;

//結(jié)果:i的值為6,m的值為5;n=++j;

//前置;相當于j=j+1;n=j;

//結(jié)果:j的值為6,n的值為6;自增自減運算符:意義:使變量當前值加1或減1,再賦給該變量自己:i++或++i

//相當于i=i+1

j--或--j

//相當于j=j–1要求:操作數(shù)只能是變量,不能是常量或表達式;ok3.自增自減運算前置和后置運算:自增自減運算符:ok514.邏輯運算、邏輯表達式及其求值優(yōu)化

ok邏輯運算:用于判斷分析,運算符包括關(guān)系和邏輯運算符。關(guān)系運算符:包括:(大于)、(大于等于)、(小于)、(小于等于)、==(等于)和!=(不等于)。關(guān)系運算符完成兩個操作數(shù)大小的比較,結(jié)果為邏輯值true(真)或false(假)。每種可比較大小的數(shù)據(jù)類型,都重載了關(guān)系運算符。不同類型,自動轉(zhuǎn)換為同一類型后進行比較。在C++中這兩個邏輯值與整數(shù)之間有一個對應關(guān)系,真對應1,假對應0;反過來,0對應假,非0整數(shù)對應真。所以邏輯運算結(jié)果可以作為整數(shù)參與算術(shù)運算、關(guān)系運算、邏輯運算及其他運算。4.邏輯運算、邏輯表達式及其求值優(yōu)化ok邏輯運算:在C++52關(guān)系表達式:例如:a+b>c+d/*等同于(a+b)>(c+d),結(jié)果為0或1*/y=a>b /*計算a>b的值0或1賦給y,y的值為0或1*/a>b>c /*等同于(a>b)>c,先求a>b的值,再將結(jié)果0或1與c比較大小*/由關(guān)系運算符連接的表達式。值為true或false。ok關(guān)系表達式:例如:由關(guān)系運算符連接的表達式。值為true或f534.邏輯運算、邏輯表達式及其求值優(yōu)化設(shè)有定義floata=3.2;intb=5;則:3>a>b //結(jié)果是?根據(jù)右結(jié)合原則其運算過程如下:a5b3>F,即0>F即04.邏輯運算、邏輯表達式及其求值優(yōu)化設(shè)有定義floata54優(yōu)先級運算符名稱語義3!邏輯非,單目操作數(shù)的值為真,則結(jié)果為假;反之結(jié)果為真12&&邏輯與,雙目當兩個操作數(shù)全為真時,結(jié)果為真,否則為假;13||邏輯或,雙目兩個操作數(shù)中有一個為真,則結(jié)果為真;邏輯運算符:包括:!、&&和||,其優(yōu)先級和語義見下表。優(yōu)先級運算符名稱語義3!邏輯非,單目55由邏輯運算符連接的表達式。其操作數(shù)和運算結(jié)果均為邏輯量。運算結(jié)果同樣可以作為一個整數(shù)參與其他運算。

由于邏輯值和整數(shù)之間的對應關(guān)系,也允許整型和字符型操作數(shù)進行邏輯運算:21&&0 //邏輯與,21與0,結(jié)果為假:021||0 //邏輯或,21或0,結(jié)果為真:1!21 //邏輯非,21的非,結(jié)果為假:0邏輯表達式:邏輯表達式計算時,邏輯非優(yōu)先級最高,關(guān)系運算其次,邏輯與和邏輯或最低。

由邏輯運算符連接的表達式。由于邏輯值和整數(shù)之間的對應56ok已知:

inta=10,b=20,c=30;floatx=1.8,y=2.4;a<b&&x>y||a<b-!c按優(yōu)先級與結(jié)合性,其求值順序等同于:(a<b)&&(x>y)||(a<(b-(!c)))t1=1t2=0t4=0-&&t3=0t5=b<t6=1||

得整個表達式的值為:①②③⑥④⑤⑦1ok已知:inta=10,b=20,c=30;f57邏輯表達式求值的優(yōu)化:在求邏輯表達式值的過程中,一旦表達式的值能夠確定,就不再逐步進行下面的運算。稱為“求值優(yōu)化”。已知:

inta=10,b=20,c=30;求:a<b||c++ //結(jié)果以及a,b,c的值t1=1①整個表達式的值為1可見:表達式c++已不需要計算所以: c不變?nèi)詾?0編程人員在使用邏輯運算時應當加以小心,優(yōu)化計算固然提高了運算效率,但可能產(chǎn)生副作用。所謂副作用,就是出乎設(shè)計人員的意料,得到預想不到的結(jié)果。邏輯表達式求值的優(yōu)化:在求邏輯表達式值的過程中,一旦表達式的585.位運算(選讀)(1)按位取反運算符“~”(2)左移運算符“<<”(3)右移運算符“>>”(4)按位與運算符“&”(5)按位或運算符“|”(6)按位異或運算符“^”okc++語言提供字位運算,它對操作數(shù)的各個位進行操作。5.位運算(選讀)(1)按位取反運算符“~”okc++語59(1)按位取反運算符“~”將操作數(shù)的每個二進制位取反,即1變?yōu)?,0變?yōu)?。例如,整數(shù)a的值為10011011,則~a的值為01100100。(2)左移運算符“<<”運算一般格式為:a<<n其中a為整數(shù),n為一個正整數(shù)常數(shù)。語義為將a的二進制數(shù)依次向左移動n個二進制位,并在低位補0。左移n位相當于乘以2的n次方,但移位運算的速度比乘法快。

(3)右移運算符“>>”與左移運算符類同,將左操作數(shù)向右移動右操作數(shù)指定的二進制位數(shù),忽略移位后的小數(shù)部分,并在高位補0。一個整數(shù)右移n位相當于除以2的n次方,但比除法快。在中有符號數(shù)右移時高位補符號位,嚴格對應除法:-32>>3

//-32右移3位,由11100000B得11111100B,即-4(1)按位取反運算符“~”(2)左移運算符“<<”(3)右移60(4)按位與運算符“&”將兩個操作數(shù)的對應位逐一進行按位邏輯與運算。運算規(guī)則為:對應位均為1時,該位運算結(jié)果為1;否則為0。例如:a01001101b00001111a&b00001101該運算可用來將整數(shù)的某些位置0,而保留所需要的位,上例保留了低四位。(5)按位或運算符“|”將兩個操作數(shù)的對應位逐一進行按位邏輯或運算。運算規(guī)則為:只要有一個數(shù)對應位為1,該位運算結(jié)果即為1;兩個數(shù)對應位均為0,該位結(jié)果為0。例如:a01001101b00001111a|b01001111該運算符可用來將整數(shù)的某些位置1。上例高四位不變,低四位全1。(4)按位與運算符“&”(5)按位或運算符“|”61(6)按位異或運算符“^”將兩個操作數(shù)的對應位逐一進行按位異或運算。運算規(guī)則為:當對應位的值不同時,該位運算結(jié)果為1,否則為0。例如:a01001101b00001111a^b01000010該運算符可用來將一個整數(shù)的某些位取反,或?qū)⒄妥兞康闹抵?(將整型變量與自身按位異或)。上例低四位取反,高四位不變。雙目位運算符也可以與賦值運算符組合成復合賦值運算符:<<=>>=&=|=^=以上6種單目運算不影響數(shù)據(jù)本身的值,而是只產(chǎn)生一個中間量,這個中間量被引用后即不再存在。

(6)按位異或運算符“^”以上6種單目運算不影響數(shù)據(jù)本身的值626.逗號運算符與逗號表達式用逗號連接起來的表達式稱為逗號表達式,(C++中,逗號既是分隔符,又是運算符。)格式為:表達式1,表達式2,…,表達式n

逗號表達式中的每一個表達式都會被運算,整個逗號表達式的值為最后一個表達式的值。例如:a=(x=3,x+=6,5+6);//a=11x=96.逗號運算符與逗號表達式用逗號連接起來的表達式稱為逗號表達637.sizeof()運算符

用于計算一個操作數(shù)類型或一個變量的字節(jié)數(shù)。一般格式為:sizeof(數(shù)據(jù)類型)或sizeof(變量名)

例如:sizeof(int)值為4

sizeof(float)值為4

doublex;

sizeof(x)值為87.sizeof()運算符用于計算一個操作數(shù)641.6.3語句1表達式語句:表達式;2空語句:;3復合語句:{//若干語句}流程控制語句:流程控制語句用來控制或改變程序的執(zhí)行方向;結(jié)束1.6.3語句1表達式語句:表達式;結(jié)束651.6.4算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換(選讀)1混合運算的類型轉(zhuǎn)換規(guī)則

2賦值類型轉(zhuǎn)換

ok運算過程中,當某個二元運算符兩邊的操作數(shù)類型不同但屬于類型相容時,系統(tǒng)先將精度低的操作數(shù)變換到與另一操作數(shù)精度相同,而后再進行運算。

類型相容:類型不同但系統(tǒng)可以自動進行轉(zhuǎn)換。當賦值號的左值和右值類型不一致但屬于類型相容時,由系統(tǒng)自動進行類型轉(zhuǎn)換。3強制類型轉(zhuǎn)換

1.6.4算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換(選讀)1混合運算的661.混合運算的類型轉(zhuǎn)換規(guī)則charshortintlongunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble數(shù)據(jù)類型轉(zhuǎn)換方向ok1.混合運算的類型轉(zhuǎn)換規(guī)則charshortintlong67具體規(guī)則:(1)字符可以作為整數(shù)參與數(shù)值運算,整數(shù)值為其ASCII碼。(2)操作數(shù)為字符或短整型時,系統(tǒng)自動變換成整型。(3)操作數(shù)為實型時,系統(tǒng)自動變換成雙精度型。(4)其余情況,當兩操作數(shù)類型不同時,將精度低(或表示范圍?。┑牟僮鲾?shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進行運算例:charc1,c2;inti1,i2;floatx1,x2;則表達式x2=c1*i1+c1*x1+c1*c2的求值過程為:將c1轉(zhuǎn)換成整型,完成c1*i1,結(jié)果表示為t1;將c1和x1均轉(zhuǎn)換成雙精度型,完成c1*x1,結(jié)果表示為t2;將c1和c2均轉(zhuǎn)換成整型,完成c1*c2,結(jié)果表示為t3;然后t1轉(zhuǎn)換成雙精度型,完成t1+t2,結(jié)果表示為t4;將t3轉(zhuǎn)換成雙精度型,完成t4+t3,最后結(jié)果轉(zhuǎn)為單精度型賦給x2。

具體規(guī)則:例:682.賦值類型轉(zhuǎn)換結(jié)束系統(tǒng)自動進行類型轉(zhuǎn)換規(guī)則:1、實型數(shù)賦給整型變量:取整;注意溢出;2、整型數(shù)賦給實型變量:先轉(zhuǎn)換為實型數(shù);3、字符型數(shù)賦給整型變量:ASCII碼為依據(jù);分為兩種情況:符號位是0或1時不同;若符號位為1,則低位字節(jié)不變,高位字節(jié)全部置1再賦值。4、絕對值較大的數(shù)賦給表達范圍較小的數(shù)據(jù)類型時,注意溢出;2.賦值類型轉(zhuǎn)換結(jié)束系統(tǒng)自動進行類型轉(zhuǎn)換規(guī)則:69

賦值運算中,當左值與右值類型不一致時,系統(tǒng)將按照左值的類型,自動進行強制轉(zhuǎn)換。例如: 設(shè)有以下定義doublex=2.3,y;inti=2,j;(1)jx……22(1)j=x; (2)y=i;由系統(tǒng)按左值j、y類型自動完成強制轉(zhuǎn)換功能(2)y2i2……賦值運算中,當左值與右值類型不一致時,例如: 703強制類型轉(zhuǎn)換ok強制類型轉(zhuǎn)換運算符格式為:

(type)表達式 //形式一或type (表達式)

//形式二作用:將表達式強制轉(zhuǎn)換為type類型, 但表達式的值及其類型不變。設(shè)有變量說明:inta=7,b=5;floatx;表達式x=a/b的值將為。如果希望表達式求出這兩個整數(shù)相除的實數(shù)商賦給x,就需要將兩個操作數(shù)或其中一個操作數(shù)進行強制類型轉(zhuǎn)換??杀硎緸椋簒=(float)a/(float)b或x=(float)a/b3強制類型轉(zhuǎn)換ok強制類型轉(zhuǎn)換運算符格式為:作用:將表達71說明:(1)強制類型轉(zhuǎn)換不改變表達式本身的值類型,而是產(chǎn)生一個臨時變量,用來暫存轉(zhuǎn)換后的值,該臨時變量引用后即自動釋放。如上例,執(zhí)行強制類型轉(zhuǎn)換后變量a和b的值及類型都不變,而是各自產(chǎn)生一個臨時變量,用這兩個臨時變量的值進行運算。(2)強制類型轉(zhuǎn)換符優(yōu)先級較高,只對緊隨其后的表達式起作用,而對其他部分不起作用。如表達式(float)a/b的含義是先將變量a強制轉(zhuǎn)換為浮點數(shù),然后與整數(shù)b運算。新的C++標準中,強制類型轉(zhuǎn)換采用static_cast,const_cast,dynamic_cast,reinterpret_cast等4個關(guān)鍵字,形式為static_cast<type>,語法上更加嚴謹。說明:721.6.5求值次序與副作用(選讀)

ok在符合優(yōu)先級和結(jié)合性的前提下,C語言的標準對表達式中各操作數(shù)的求值次序沒有做統(tǒng)一規(guī)定。編譯器為提高代碼質(zhì)量,在不影響優(yōu)先級和結(jié)合性的前提下也要對操作數(shù)的訪問次序作調(diào)整。在安排順序時,如果某個操作數(shù)經(jīng)歷了求值運算,那么這個求值可能影響到其他操作數(shù)的值,這時就會產(chǎn)生副作用。例如:設(shè)inta=2,b=5,c;對表達式c=a*b+(++a)+(b=10)三個同級運算中,是先算a*b,還是++a,還是b=10,其次再算哪個?顯然求值次序不同將導致結(jié)果不同。雖然C++規(guī)定該表達式的結(jié)合性是從左到右,不會導致副作用,但建議不要在表達式中改變操作數(shù)的值。上式改為:c=a*b;++a;b=10;c+=a+b;1.6.5求值次序與副作用(選讀)ok在符731.7數(shù)組與字符數(shù)組1.7.1數(shù)組1.7.2字符數(shù)組本節(jié)介紹一種用戶自定義的導出數(shù)據(jù)類型——數(shù)組類型ok1.7數(shù)組與字符數(shù)組1.7.1數(shù)741.7.1數(shù)組數(shù)組定義:數(shù)組是有限個同類型元素的有序集合,這些元素有一個共同的名字,每個元素以其在數(shù)組中的位置區(qū)分,位置用下標表示。例如數(shù)列或向量就可以看作一個數(shù)組,其中的元素用一個下標即可確定。矩陣也可看作一個數(shù)組,其中的元素需要用“行”、“列”兩個下標確定。數(shù)組下標的個數(shù)稱作維數(shù),上述代表數(shù)列的數(shù)組和代表矩陣的數(shù)組分別稱為一維數(shù)組和二維數(shù)組。本節(jié)只介紹一維數(shù)組。ok1.7.1數(shù)組數(shù)組定義:ok75一維數(shù)組一維數(shù)組的定義格式:

《存儲類型》數(shù)據(jù)類型數(shù)組名[常量];數(shù)據(jù)類型指的是數(shù)組中元素的數(shù)據(jù)類型,可以是C++中定義的任何一種數(shù)據(jù)類型。寫在方括號中的常量用來定義數(shù)組大小,即數(shù)組中元素的個數(shù)。例如:intm[5];

//定義數(shù)組m,其中有5個整數(shù) constintN=3;

floatx[N]; //數(shù)組x中有3個實數(shù)ok一維數(shù)組一維數(shù)組的定義格式:ok76一維數(shù)組數(shù)組的存儲:數(shù)組在存儲單元中是按下標的順序連續(xù)存放的,數(shù)組名代表數(shù)組存儲區(qū)域的首地址。數(shù)組的元素:標識方法是用數(shù)組名和下標:數(shù)組名[表達式]表達式用來計算下標值。C++中規(guī)定數(shù)組第一個元素的下標為0。okm[4]m[3]m[2]m[1]m[0]x[2]x[1]x[0]一維數(shù)組數(shù)組的存儲:okm[4]m[377一維數(shù)組注意:C++中數(shù)組大小在編譯時確定,編譯系統(tǒng)按照定義為數(shù)組分配一段連續(xù)的存儲單元,這段單元的大小也是不能改變的,因此數(shù)組大小不能用變量定義,而只能是一個正整數(shù)常量。為避免使用時數(shù)組出界,通?!按蜷_小用”。下列定義是非法的:intcount;floats[count];

//數(shù)組個數(shù)不能是變量,且必

//須在定義時指明;constfloatNum=3;intn[Num];

//數(shù)組個數(shù)不能是實數(shù);對數(shù)組的訪問指的是對數(shù)組元素的訪問,不能直接將數(shù)組名作為訪問對象,對數(shù)組賦值也必須對每一個元素逐個賦值。ok一維數(shù)組注意:ok78一維數(shù)組數(shù)組的初始化

數(shù)組初始化的方法是在定義時用大括號列出元素的值。例如:intscore[5]={88,92,90,85,78};初始化值的個數(shù)可以少于定義的元素個數(shù),這時從第0個元素開始逐個取得初始化值,剩余的元素初始化為0。例如:floaty[5]={3.4,4.2,7};

//5個元素的取值分別為3.4,4.2,7,0,0對于定義時初始化的情況,可以不指明元素個數(shù),編譯器會按照初始化值的個數(shù)確定數(shù)組大小。例如:intn[]={1,2,3,4};

//數(shù)組n有4個元素intnn[];

//非法定義,必須指明數(shù)組元素個數(shù)ok一維數(shù)組數(shù)組的初始化ok79int_arr[3]=int_arr[2]=int_arr[1]=int_arr[0]=1123輸出:結(jié)束31+2=3【例1.2】使用數(shù)組的簡單例子。#include<iostream>usingnamespacestd;intmain(){intint_arr[4];int_arr[0]=1;int_arr[1]=1;int_arr[2]=2;int_arr[3]=int_arr[1]+int_arr[2];cout<<int_arr[0]<<'\n';return0;}1123輸出:結(jié)束31+2=3【例1.2】使用數(shù)組的簡單例子801.7.2字符數(shù)組字符數(shù)組定義:如果數(shù)組中的元素為字符,就稱為字符數(shù)組。例如:charstring1[10];

//可用來保存10個字符的字符數(shù)組charcity_name1[]={'N',

'a',

'n',

'j',

'i',

'n',

'g'};

//可用來保存7個字符的字符數(shù)組;字符串與字符數(shù)組:C++中用字符數(shù)組保存字符串。允許直接用字符串常量給字符數(shù)組初始化。例如:charcity_name2[]=”Nanjing”;用字符串初始化,字符數(shù)組會自動加上一個串結(jié)束符'\0'。串結(jié)束符在字符串操作中具有十分重要的意義,因此在定義字符數(shù)組大小時,要注意留出足夠的空間保存串結(jié)束符。ok1.7.2字符數(shù)組字符數(shù)組定義:ok811.7.2字符數(shù)組字符串處理函數(shù):字符串處理函數(shù)定義在頭文件<cstring>中,其中包括:strlen(s)//返回字符串s的實際長度(不包括'\0

')strcpy(s1,s2)//將字符串s2中'\0

'之前的所有字符//依次賦值到字符串s1中,最后再加上一個'\0

'。由于不能直接對字符數(shù)組名賦值,所以將一個字符串的值賦給另一個字符串必須用字符串復制函數(shù)完成。例如:charstring2[20];string2=”VC++”;

//非法strcpy(string2,”VC++”);

//合法1.7.2字符數(shù)組字符串處理函數(shù):821.7.2字符數(shù)組【例1.3】字符數(shù)組和字符串處理函數(shù)的應用。#include<iostream>#include<cstring>usingnamespacestd;intmain(){chars1[]="HelloC++";//初始化決定數(shù)組s1[]有10個元素chars2[10],s3[20];s2[0]='B';s2[1]=

'e';s2[2]=

'g';s2[3]=

'i';s2[4]=

'n';s2[5]=

'\0

';//對字符串結(jié)束處理非常重要strcpy(s3,s2);cout<<"Thelengthof\""<<s1<<"\"

is:"

<<strlen(s1)<<

'\n';cout<<s2<<

'\t'<<s3<<

'\n';return0}//只有字符數(shù)組可整體輸出,因為有結(jié)束符運行結(jié)果:Thelengthof"

HelloC++"is:9BeginBegin結(jié)束1.7.2字符數(shù)組【例1.3】字符數(shù)組和字符串處理函831.8簡單的輸入輸出1.8.1C++的輸入輸出簡介1.8.2數(shù)據(jù)的輸入輸出ok1.8.3輸入輸出的格式控制1.8簡單的輸入輸出1.8.1C++的輸入輸出簡介1.84輸入流對象cin:cin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù),一般格式為:cin>>變量名1《>>變量名2>>…>>變量名n》;

輸出流對象cout:cout實現(xiàn)將數(shù)據(jù)輸出到顯示器的操作,一般格式為:cout<<表達式1《<<表達式2<<…<<表達式n》;

使用時必須在程序開頭增加兩行:#include

<iostream>usingnamespace

std;ok1.8.1C++輸入輸出簡介輸入流對象cin:ok1.8.1C++輸入輸出簡介851.8.2數(shù)據(jù)的輸入輸出(1)cin例如: charc1,c2,c3; cin>>c1; //A

cin>>c2>>c3;

程序執(zhí)行到A行時,等待用戶輸入數(shù)據(jù)。若輸入:Abc<CR>則cin分別將字符A、b、c賦給變量c1、c2、c3。cin自動跳過輸入的空白字符(包括空格,制表和回車等)。

ok1.字符的輸入輸出1.8.2數(shù)據(jù)的輸入輸出(1)cinok1.字符的輸入輸861.8.2數(shù)據(jù)的輸入輸出(2)cinget()例如: charc1,c2,c3,c4; (c1); //B (c2); (c3);程序執(zhí)行到B行時,若輸入:Ab<CR>則執(zhí)行結(jié)果是:字符‘A’、空格、字符‘b’分別賦給變量c1、c2、c3;輸入行中仍保留回車符。

cin與cinget()的區(qū)別:

()把從鍵盤上輸入的所有字符,包括空白字符,都作為輸入字符賦給字符變量

ok1.8.2數(shù)據(jù)的輸入輸出(2)cinget()ok87字符的輸出:使用cout。假定字符c1、c2、c3的值分別為字符'a'、'b'和'c',執(zhí)行以下語句序列:cout<<c1<<'\t'<<c2<<'\n';cout<<c3<<endl;cout<<'O'<<'k'<<endl;屏幕上將輸出:a bcOk輸出時字符之間是無間隔的,如果想讓字符間有間隔,必須輸出間隔符

,如′\t′(制表符,自動跳過若干字符位置)、′\n′或endl(基本含意一樣,表示回車換行,并清空緩沖區(qū))。

1.8.2數(shù)據(jù)的輸入輸出字符的輸出:1.8.2數(shù)據(jù)的輸入輸出882.字符串輸入輸出輸入:常用函數(shù)getline():(char[],int)其中第一個參數(shù)是已經(jīng)定義的字符數(shù)組名,第二個參數(shù)是讀入字符的最多個數(shù)n(包括字符串結(jié)束符'/0')。getline()輸入以用戶按下回車鍵作為結(jié)束。ok輸出:常用cout輸出字符串。雙引號中的字符串常量照原樣輸出,程序中通常通過輸出字符串常量來輸出一些提示信息。字符數(shù)組將輸出串結(jié)束符前所有字符。2.字符串輸入輸出輸入:常用函數(shù)getline():ok輸891.8.2數(shù)據(jù)的輸入輸出說明:函數(shù)getline()保證在執(zhí)行時總會為字符串的結(jié)束符保留一個字節(jié)。當鍵盤的輸入字符(字節(jié))數(shù)多于(n-1)時,后面的字符不會進入字符數(shù)組,字符串結(jié)束符自動加在字符數(shù)組的最后一個字節(jié)中。當輸入字符數(shù)少于該值時,字符串結(jié)束符自動加在輸入到字符數(shù)組中的最后一個字符的后面。例:charcity[11];cin.getline(city,10);

//將從輸入行中提取最多//9個字符,再加上一個‘\0’字符輸入到city中

cout<<“城市名:“<<city<<endl;ok1.8.2數(shù)據(jù)的輸入輸出說明:ok90例:inti,j;floatx,y;cout<<”Inputi,j,x,y:”<<endl;cin>>i>>j; //Dcin>>x>>y; cout<<”i=”<<i<<'\t'<<”j=”<<j<<endl;cout<<”x+y=”<<x+y<<endl;若輸入:10204.58.6<CR>則程序輸出:i=10 j=20x+y輸出時各數(shù)據(jù)間是無間隔的,因此應當有意輸出一些間隔符ok3.十進制數(shù)據(jù)的輸入輸出例:ok3.十進制數(shù)據(jù)的輸入輸出91如果要求按八進制或十六進制輸入輸出,在cin或cout中必須指明相應的數(shù)據(jù)形式,oct為八進制,hex為十六進制,dec為十進制。進制控制只適用于整數(shù)。例如:inti,j,k,l;cout<<"

Inputi(oct),j(hex),k(hex),l(dec):"

<<endl;cin>>oct>>i; //輸入為八進制數(shù)cin>>hex>>j; //輸入為十六進制數(shù)cin>>k; //輸入仍為十六進制數(shù)cin>>dec>>l; //輸入為十進制數(shù)cout<<"hex:"

<<"i="

<<hex<<i<<endl;cout<<"

dec:"

<<"j="

<<dec<<j<<'\t';cout<<"k="

<<k<<endl;cout<<"

oct:"

<<"l="

<<oct<<l;cout<<dec<<endl; //恢復十進制輸出狀態(tài)ok1.8.3輸入輸出的格式控制(1)各種進制數(shù)據(jù)的輸入輸出如果要求按八進制或十六進制輸入輸出,在cin或cout中必須92執(zhí)行時輸出提示:Inputi(oct),j(hex),k(hex),l(dec):此時從鍵盤輸入:0320x3f0xa017<CR>則輸出結(jié)果為:hex:i=1adec:j=63 k=160oct:l=21注意:使用不帶.h的頭文件<iostream>時,必須在cin中指明數(shù)制,否則從鍵盤輸入時,不認八進制和十六進制數(shù)開頭的0和0x標志。指明后可省略0和0x標志。注意:在cin或cout中指明數(shù)制后,該數(shù)制將一直有效,直到重新指明用其他數(shù)制。特別注意:輸入數(shù)據(jù)的格式、個數(shù)和類型必須與cin中的變量一一對應,否則不僅使輸入數(shù)據(jù)錯誤,而且影響后面其他數(shù)據(jù)的正確輸入。執(zhí)行時輸出提示:931.8.3輸入輸出的格式控制為了使數(shù)據(jù)間隔開,還可以用C++提供的函數(shù)setw()指定輸出數(shù)據(jù)項的寬度。例如:inti=2,j=3;floatx=2.6,y=1.8;cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(10)<<i*j<<endl;cout<<setw(8)<<x<<setw(8)<<y<<endl;輸出結(jié)果為:

2362.61.8使用setw()必須在程序的開始處增加:#include

<iomanip>ok(2)設(shè)置數(shù)據(jù)間隔1.8.3輸入輸出的格式控制為了使數(shù)據(jù)間隔開,還可以用C94第一章C++基礎(chǔ)知識完謝謝!第一章C++基礎(chǔ)知識完95C++程序設(shè)計C++程序設(shè)計96計算機語言的基本體系結(jié)構(gòu)語言的基本體系結(jié)構(gòu)程序設(shè)計語言計算機語言的基本體系結(jié)構(gòu)語言的基本體系結(jié)構(gòu)程序設(shè)計語言97本章將簡要介紹C++中的數(shù)據(jù)類型及相關(guān)運算,以及常量、變量、表達式、語句等,最后介紹簡單的輸入輸出方法。第一章C++基礎(chǔ)知識本章將簡要介紹C++中的數(shù)據(jù)類型及相關(guān)運算,以及常量、變量、98第一章C++基礎(chǔ)知識

C++的詞法單位

運算符和表達式

簡單的輸入輸出

數(shù)組與字符數(shù)組

常量和變量

C++中的數(shù)據(jù)類型ok1.1

C++語言概述

1.2一個C++程序?qū)嵗谝徽翪++基礎(chǔ)知識C++的詞法單位991.1C++語言概述

歷史:C++是由C語言為基礎(chǔ)發(fā)展起來的。C語言是作為UNIX操作系統(tǒng)的開發(fā)語言為人們所認識。七十年代末,C語言開始移植到非UNIX環(huán)境中,并逐步脫離UNIX系統(tǒng)成為一種獨立的程序設(shè)計語言。1988年美國國家標準協(xié)會ANSI對C語言進行了標準化,產(chǎn)生了ANSIC。1.1C++語言概述歷史:1001.1C++語言概述

(1)C語言既具備高級語言的結(jié)構(gòu)和編程環(huán)境,又提供類似于匯編語言那樣的系統(tǒng)資源操縱能力及程序執(zhí)行效率。適合解決有實時要求的問題。C語言的主要特點:(2)有豐富的運算符和數(shù)據(jù)類型,表達式類型多樣化,可以方便地實現(xiàn)在其他語言中較難實現(xiàn)的運算,對各種不同類型的程序設(shè)計都有良好的適應性。(3)以函數(shù)為基礎(chǔ)實現(xiàn)程序的結(jié)構(gòu)化設(shè)計,支持大型程序的多文件構(gòu)成及單個文件獨立編譯,適合大型復雜程序的設(shè)計。(4)語言簡潔、緊湊,使用方便、靈活。(5)可移植性好。1.1C++語言概述(1)C語言既具備高級語言的結(jié)構(gòu)和1011.1C++語言概述

C++是由C發(fā)展成為的以面向?qū)ο鬄橹饕卣鞯恼Z言。作為C語言的超集,C++繼承了C的所有優(yōu)點,又對數(shù)據(jù)類型做了擴充,使得編譯系統(tǒng)可以檢查出更多類型錯誤。C++支持面向?qū)ο蟪绦蛟O(shè)計,通過類和對象的概念把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,通過派生、繼承、重載和多態(tài)性等特征實現(xiàn)了軟件重用和程序自動生成,使得大型復雜軟件的構(gòu)造和維護變得更加有效和容易。C++語言的主要特點:1.1C++語言概述C++是由C發(fā)展成為的以面向?qū)ο鬄?021.1C++語言概述

C++與C完全兼容,很多用C編寫的庫函數(shù)和應用程序都可以為C++所用。但正是由于與C兼容,使得C++不是純正的面向?qū)ο蟮恼Z言,它既支持面向?qū)ο蟪绦蛟O(shè)計,也支持面向過程設(shè)計。但我們應當注意用面向?qū)ο蟮乃枷脒M行設(shè)計,以發(fā)揮出C++的優(yōu)勢。C++語言的兼容性:1.1C++語言概述C++與C完全兼容,很多用C編寫的1031.2一個C++程序?qū)嵗?include<iostream>usingnamespacestd;intmax(inti,intj){ //A

if(i>=j)returni;

else

returnj;}intmain(void){//Bcout<<″輸入i,j:″;//顯示提示信息

inti,j; //說明變量cin>>i>>j;//從鍵盤上輸入變量值

cout<<″maxnumberis:″<<max(i,j)<<′\n′; //輸出提示和結(jié)果

return0;}【例1.1】

一個簡單的C++程序。程序組成:注釋編譯預處理指令程序體由若干函數(shù)組成,其中有且僅有一個主函數(shù)main(),這是程序的執(zhí)行入口。在Windows編程中定義為winmain()。下面進入VC++運行1.2一個C++程序?qū)嵗?include<iostre1041.3C++的詞法單位1.3.1C++的字符集

1.3.2關(guān)鍵字

1.3.3標識符(ID,identifier)1.3.4標點符號

ok1.3C++的詞法單位1.3.1C++的字1051.3.1C++的字符集ASCII碼字符集是計算機中的常用字符集。它包括英文字母及阿拉伯數(shù)字等128個字符,存儲一個ASCII碼占用一個字節(jié)單元。漢字國標碼用于漢字處理。國標碼的存儲占用兩個字節(jié)單元。Unicode字符集對各類字符進行統(tǒng)一的雙字節(jié)編碼。它包括了世界上多種語言的基本字符,最多可容納65536個字符。ASCII碼字符集,國標碼字符集都是它的子集。ok常用字符集:1.3.1C++的字符集ASCII碼字符集是計算機中106C++的字符集26個小寫字母

abcdefghijklmnopqrstuvwxyz26個大寫字母

ABCDEFGHIJKLMNOPQRSTUVWXYZ10個阿拉伯數(shù)字

0123456789

其他符號

+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++語言基本字符:C++的字符集26個abcdefghijklmnopqrs1071.3.2關(guān)鍵字關(guān)鍵字(keyword):又稱保留字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作它用。C++區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標準C++(ISO14882)定義了74個關(guān)鍵字,具體的C++編譯器會做一些增刪。常用關(guān)鍵字及分類見表。ok1.3.2關(guān)鍵字關(guān)鍵字(keyword):C108關(guān)鍵字數(shù)據(jù)類型說明符與修飾符boolcharwchar_tclassconstdoubleenumfloatintlongshortsignedstructunionunsignedvoidvolatile存儲類型說明符autoexterninlineregisterstatic訪問說明符friendprivateprotectedpublic其它說明符asmexplicitnamespaceoperatortemplatethistypedeftypenameusingvirtual

語句與標號breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtrywhile

運算符及邏輯值deletefalsenewsizeoftrue表2-1C++常用關(guān)鍵字及分類

ok關(guān)鍵字數(shù)據(jù)類型說明符與修飾符boo109關(guān)鍵字

還有一些關(guān)鍵字本書未介紹:

const_castdynamic_castreinterpret_caststatic_castexportmutabletypeid下面可用一些關(guān)鍵字代替邏輯運算符:and

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論