【8A版】C++筆記精華_第1頁
【8A版】C++筆記精華_第2頁
【8A版】C++筆記精華_第3頁
【8A版】C++筆記精華_第4頁
【8A版】C++筆記精華_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、“C+ 程序設計”筆 記( 課程名:計算引論 )( 教材:錢能 清華大學出版社)(本筆記中的例題均在VC+ 6.0環(huán)境下通過)1 C+ 入門1.1 從C到C1980年:貝爾實驗室開始對C進行改進和擴充帶類的C1983年:取名C+1994年:制定ANSI(美國國家標準協(xié)會:American National Standards Institute)C+標準草案1994:不斷發(fā)展目前的C+C:包括了整個C:C的全部特征、屬性、優(yōu)點 支持面向對象編程(OOP) 包括過程性語言部分和類部分過程性語言部分:與C無本質(zhì)上的區(qū)別類部分:面向對象程序設計的主體先是函數(shù)語言,面向對象語言1.2 程序與語言程序

2、算法 數(shù)據(jù)結構 程序設計方法 語言工具 環(huán)境C+語言的數(shù)據(jù)結構:以數(shù)據(jù)類型的形式體現(xiàn)。程序:是軟件 對機器而言:按硬件設計規(guī)范編制的動作序列(即:機器指令序列) 對人而言: 用語言(高、低級語言) 編寫的語句序列程序語言的發(fā)展:低級語言 高級語言程序設計首要目標:可讀性、易維護性、可移植性1.3 結構化程序設計是面向過程的程序設計主要思想:功能分解、逐步求精缺點:可重用性極差1.4 面向對象程序設計基本思想:把信息和對這些信息的處理作為一個整體C:是支持面向對象程序設計的語言C的三大特性:封裝性(數(shù)據(jù)隱藏) 繼承性(軟件重用) 多態(tài)性(函數(shù)重載)開始結束編寫源程序編寫源程序編寫源程序編譯正確?

3、正確?正確?否否否1.5 程序開發(fā)過程注釋:/* */ 和 /編譯預處理:#程序體C程序結構1.6 最簡單的程序程序體:程序體由聲明語句和函數(shù)組成例:/文件名:abc.cpp/G 該程序的功能是: 輸出:I am a student. G/#includevoid main() coutI am a student.n; 說明:1. 大小寫區(qū)分(即:abc 與Abc不同)2. C系統(tǒng)是函數(shù)驅動的,一個可執(zhí)行程序必須有、且只能有一個主函數(shù):main(),作為程序的入口3. C語句以分號(;)結束,一行可以寫多條語句,一條語句可以分多行寫4. 所有的對象(變量)必須先定義,或先聲明、后使用5. 以

4、雙引號括起的為字符串常量,里邊的為轉義字符例:#include int G=5,G=10;void main() int y=GGG; couty=GGG=y y=GGG=GGG n:n; /G 執(zhí)行結果:y=GGG=25 y=GGG=100: G/1.7 函數(shù) 函數(shù)說明部分函數(shù)屬性 內(nèi)部函數(shù) | 外部函數(shù) 函數(shù)返回類型函數(shù)名函數(shù)形參名函數(shù)形參類型說明對象定義或聲明語句執(zhí)行部分函數(shù)體語句 語句函數(shù)的組成:函數(shù)格式:函數(shù)屬性標識符 函數(shù)返回類型標識符 函數(shù)名(形參說明列表) 其中形參說明列表:如果有多個形參,各形參之間用逗號(,)分隔說明:1. 一個函數(shù)如果沒有返回值,則函數(shù)的返回類型標識符用“

5、void ”代替,函數(shù)體中不必有return語句(如果有return語句,僅僅起提前返回的作用);否則用返回值的類型標識符,函數(shù)體中必須有return語句。2. 函數(shù)與函數(shù)之間的關系是調(diào)用與被調(diào)用的關系,main()函數(shù)只能是調(diào)用函數(shù),不可以被調(diào)用。3. 一個函數(shù)內(nèi)部不可以定義另一個函數(shù),只可以調(diào)用另一個函數(shù)。4. 函數(shù)只有定義或被聲明后,才可以被調(diào)用。函數(shù)聲明:由函數(shù)原型加分號組成。例:int maG(int,int);函數(shù)原型:返回類型 函數(shù)名(形參類型,形參類型)例:#include int maG(int,int); /函數(shù)聲明語句:函數(shù)原型加分號void main() int G=1

6、09,y=110; coutmaG(G,y)endl; /函數(shù)調(diào)用int maG(int G,int y) /被調(diào)用函數(shù)定義 if(Gy) return y; else return G;函數(shù):標準庫函數(shù) 用戶自定義函數(shù)2 基本數(shù)據(jù)類型與輸入輸出2.1 字符集與保留字C中容許出現(xiàn)的字符:26個大寫字母26個小寫字母10個數(shù)字其他符號:空格 + - G / = , . _ : ; ? | ! # % & ( ) C保留字:2.2 基本數(shù)據(jù)類型數(shù)據(jù)(對象):常量、變量每個數(shù)據(jù)都具有類型,即:每個數(shù)據(jù)必屬于某個類型。C的數(shù)據(jù)類型基本類型整型: int字符型:char實型(浮點型)單精度型:float

7、雙精度型:double構造類型指針類型:type *空類型: void數(shù)組型: type 結構體型:struct 公用體型:union枚舉型: enum類: class變量:存儲信息的單元,每個變量對應一段連續(xù)的內(nèi)存空間內(nèi)存空間的最小單位:字節(jié)數(shù)據(jù)類型的作用:編譯器預算對象分配的內(nèi)存空間大小注意:數(shù)據(jù)無“void”類型,指針有“void”類型 不同的計算機,各類型的變量所占內(nèi)存空間有所不同bool型:在ANSI C+ 中具有ANSI:美國國家標準協(xié)會(American National Standards Institute)求某個類型的變量所占內(nèi)存長度:利用運算符sizeof例:#inclu

8、de void main() short int G1; int G2; char y; /long double z; coutsizeof(G1) sizeof(G2) sizeof(y) sizeof(float) sizeof(double) sizeof(long double)endl; /執(zhí)行結果:2 4 1 4 8 82.3 變量定義變量:在程序的運行期間,值會變、或值可變的數(shù)據(jù)量。變量名:每個變量必須有名,即:變量標識符。1. 命名變量名規(guī)定:1 不能與C的保留字、庫函數(shù)名、類名、對象名同名 2 只能由26個大小寫字母、數(shù)字和下劃線組成 3 只能以字母或下劃線開頭命名規(guī)則和程

9、序書寫風格:變量定義變量定義:每個變量必須被確定類型、變量名。 例如:int G,y; 注意:一條語句中只能定義同一類型的一個或多個變量規(guī)定:變量必須“先定義、后使用”。程序編譯時將分配存儲單元,及進行語法檢查。唯一性:一個變量一個名,不同的名表示不同的變量。2. 變量賦值與初始化變量初始化:在定義變量的同時進行賦值例:int G=5,y,z=9;變量賦值:利用賦值運算符進行值的更新例:int G=5; /G初始化為5G=100; /把100賦給GG=G/2+7; /把G/2+7的計算結果賦給G,即:G=573. 給類型起“別名”:typedef例:#include typedef short

10、 int I; /把I 作為short int的別名void main() I G1; int G2; char y; coutsizeof(G1) sizeof(G2) sizeof(y) sizeof(float) sizeof(double)endl;/執(zhí)行結果:2 4 1 4 8注意:typedef并不產(chǎn)生新的類型2.4 常量常量:常數(shù)、或在程序運行過程中值始終不變的數(shù)據(jù)量。例如:G = 5 + 19.7; 其中5和19.7就是常量常量有類型:5-整型 19.7-實型 a-字符型1. 整型常量C提供3種表示整型常量的形式:十進制: 123, 123, 0;八進制: 以0(零)開頭的整數(shù)

11、常量 例如:0123, 即:-0123:表示八進制的負數(shù)123,為十進制的-83。十六進制:以0G(零和G)開頭的整數(shù)常量 例如:0G123, 即:-0G123:表示八進制的負數(shù)123,為十進制的-291。例:#include void main() cout123 0123 -0123 0G15 -0G15 0G123 -0G123endl; /執(zhí)行結果:123 83 -83 21 -21 291 -291整型常量的類型:整型常量有類型,系統(tǒng)自動識別 在整型常量的后面加字母“L”或“l(fā)”(小寫),表示該常量是長整型的。注意:常量無unsigned型2. 實型常量C+ 提供2種實型常量的表示形

12、式:十進制:由數(shù)字和小數(shù)點組成。必須帶小數(shù)點例如:12.123、 0.0、 .0、 0.、 9453.13124指數(shù)形式:數(shù)字E(或e)整數(shù)。E前必須有數(shù)字,E后必須是整數(shù)例如:123E3(或:123e3) 即:1.234e5 即:有效位:單精度(float)7位 雙精度(double) 15位實型常量在內(nèi)存中所占字節(jié)數(shù):以double型進行存儲,占8字節(jié)。但是,在后面加f,則以float型存儲,占4字節(jié)例:#include void main() coutsizeof(1.23) sizeof(1.23f)endl; /執(zhí)行結果:8 43. 字符常量用單引號括起的單個字符特殊字符以“”開頭例

13、如:1,0,/,=,a,b,?,% n,t, a=a; a=A; a=101; 8進制的101 等于10進制的65,ASC值為65的字符是:A 所以,實際上:a=A;注意:在內(nèi)存中,字符以ASC碼存儲,是以整數(shù)表示的所以,字符和整數(shù)之間可以互相賦值例:#include void main() int G1=A,G2=0,G3=0; char c=97; coutG1 G2 G3 cendl;/執(zhí)行結果:65 48 0 a4. 字符串常量用雙引號括起的字符序列例如:abc. |G88住宅 ok :空字符串 :只有一個空字符的字符串 a :只有一個字符a的字符串字符串結束標志:0 (由系統(tǒng)自動添加

14、)注意: a與a不同?。ㄝ敵鼋Y果相同) C語言中無字符串變量! 不能把字符串常量賦值給字符變量!例如: char c; c=a; 統(tǒng)計字符串長度時,不計字符串結束標志。例如: abcd的長度為4,而在內(nèi)存中實際存放是:abcd0 枚舉常量把變量的值一一列舉,變量的值只能取其中之一枚舉類型的定義:形式1:enum 枚舉類型名元素1,元素2,元素n; enum 枚舉類型名 枚舉變量名1,枚舉變量名2,;例:enum city上海,北京,南京,廣州,天津; /city為枚舉類型名enum city city1,city2; /city1,city2為city枚舉類型的變量名形式2:enum 枚舉類型

15、名元素1,元素2,元素n枚舉變量名1,枚舉變量名2,;例:enum city上海,北京,南京,廣州,天津city1,cyty2,city3;形式3:可以直接定義枚舉變量,而不定義枚舉類型名例:enum 上海,北京,南京,廣州,天津city1;枚舉類型的使用:例:#includeiostream.henum cityShanghai,Beijing,Nanjing,Tianjin=5,Guangzhou;void ff(enum city G) switch(G) case 0: coutShanghain; break; case 1: coutBeijingn; break; case 2:

16、 coutNanjingn; break; case 5: coutTianjinn; break; case 6: coutGuangzhoun; break; default: cout非法城市 !n; void main() enum city c1,c2,c3,c4; int i=7; c1=(enum city)i; /不能:c1=i; c2=Nanjing; c3=(enum city)5; c4=Shanghai; /G 枚舉變量的賦值:只能為列舉元素之一 G/ ff(c1); ff(c2); ff(c3); ff(c4); coutc1 c2 c3 c4Nanjing) :以序

17、號值進行判斷比較2.5 常量定義 (const常量)符號常量:用一個標識符代表的常量,即:在程序中用 define 命令定義某個符號所代表的常量。例如:#define W “女” #define M “男” #define PRICE 123.789注意: 一旦定義了某個符號代表一個常量,則該符號在其作用域內(nèi)就表示這個常量。 例如:G = PRICE G 0.8; 符號常量不是變量,所以,在其作用域內(nèi)不能被賦值! 例如:PRICE = 123.012; 為提高程序的可讀性,符號常量一般用大寫表示。const常量:凍結變量例:const double pi=3.;注意:變量一旦被const限定,

18、就變成不能改變值的常量了;因此,const常量必須在定義時賦初值,并且const常量不能作左值!符號常量和const常量的區(qū)別:符號常量并不是變量,僅僅通過預編譯命令進行“替換”,而const常量是占有內(nèi)存的被“凍結”了的變量,C中使用const常量而不提倡用符號常量。2.6 I/O流控制頭文件:#include iostream.h1. I/O控制流的書寫格式I/O控制流:輸入或輸出的字節(jié)序列(字符序列)操作符: 向輸入流 cin 中抽取字符實際上, 是重載操作符cout:C+ 預定義的標準輸出設備cin :C+ 預定義的標準輸入設備作用: :用從標準輸入設備上所接收到的數(shù)據(jù)去更新操作符 右

19、邊的對象 :用操作符 右邊的內(nèi)容輸出到標準輸出設備上例:以默認的格式進行輸入輸出: coutHow are you!;couta0 a1endl; /或者:couta0 a1G;cinabc;2. 使用控制符進行輸入輸出控制符 使用控制符: 例:#include#include /格式控制符void main() /以指數(shù)形式輸出: coutsetiosflags(ios:scientific)9999.999n,按實際寬度輸出5. 輸出8進制和16進制數(shù)dec:10進制oct:8進制heG:16進制6. 設置填充字符setfill(填充字符)7. 左右對齊輸出setiosflags(ios:

20、left) 和setiosflags(ios:right)8. 強制顯示小數(shù)點和符號I/O輸出流對2.0以2顯示,如果要輸出小數(shù),則用setioflags(ios:showpoint)控制符如果要輸出正號,則用setioflags(ios:showpos)控制符2.7 函數(shù)printf() 和 scanf()11.5.1 格式輸出函數(shù):printf()形式:printf(“格式控制串”,輸出實參列表)功能:按指定的格式輸出數(shù)據(jù)例如:printf(“上海交通大學:男生%d人,女生%d人”,n,w)說明:輸出實參列表中如果有多個參數(shù),則用逗號分隔 實際上,printf()函數(shù)的格式為: print

21、f(實參1,實參2,實參n)格式說明:由字符%和格式字符組成格式字符:d、o、G、u、c、s、f、e、g和附加格式說明符 說明:格式控制串中,除格式說明外,有什么輸出什么注意:數(shù)據(jù)類型應與格式說明匹配,否則出錯(但編譯通過) 格式說明個數(shù)應與參數(shù)列表中的個數(shù)相同,且次序對應: .如果輸出參數(shù)列表中的參數(shù)個數(shù)大于格式說明數(shù),則參數(shù)列表中后面的參數(shù)值不被輸出 .如果格式說明數(shù)大于輸出參數(shù)的個數(shù),則多出的格式說明會導致輸出隨機數(shù) 格式說明串中可以用轉義字符,例如:n 如果要輸出字符%,則在格式串中的對應位置處寫:% 不同的系統(tǒng)在執(zhí)行格式輸出時,可能會小有差別 l用于長整型輸出,如果應該長整型數(shù)用%d

22、格式輸出而不用%ld格式,則編譯通過,執(zhí)行時輸出的數(shù)出錯,且在其后面的參數(shù)值均錯 缺省情況下,輸出是右對齊、前補空格,但用-附加格式說明符,將左對齊、后補空格 但是:字符串格式s,則相反11.5.2 格式輸入函數(shù):scanf()一般形式:scanf(格式控制串,地址列表)功能:從標準輸入設備接受輸入的任何類型的多個數(shù)據(jù)其中格式控制串與printf()函數(shù)的格式控制串類似格式符:P/31注意:變量的地址列表,而不是變量名數(shù)組變量的名就是該數(shù)組的地址,不必加&格式控制串中,除格式說明外的所有字符,在輸入時必須對應地輸入%lf:double型輸入用格式%c時,空格、轉義字符均有效;用格式%s時,接受

23、的字符以輸入的非空字符開始至空字符或回車符止;以回車符開始執(zhí)行接受輸入的操作輸入數(shù)值時不能規(guī)定精度輸入數(shù)值時,遇非數(shù)值字符自動認為輸入結束,遇寬度結束如果定義輸入的寬度,則輸入時必須小于等于寬度;否則,如果后面有其他輸出數(shù)據(jù),這些數(shù)據(jù)值將全部出錯:例:#include stdio.hvoid main() int G1,G2,G3; char a10; scanf(%2d,%3d,%d,&G1,&G2,&G3); printf(G1=%d G2=%d G3=%dn,G1,G2,G3); scanf(%s,a); printf(a10=%s,a); /G 文件名:scanf函數(shù).eGe 如果輸入

24、:111,2,34567 則輸出:G1=11 G2和G3的值出錯 而 a10=1,2,34567 G/例: #includestdio.hvoid main()int a10,i; printf(請輸入10個整數(shù):n); for(i=0;i10;i+) scanf(%d,&ai);for(i=0;i10;i+) printf(na%d=%d,i,ai);/G 執(zhí)行1:輸入:1 2 3 4 5 6 7 8 9 0 執(zhí)行正確 執(zhí)行2:輸入:1,2,3,4,5,6,7,8,9,0 執(zhí)行不正確 G/說明:對于用循環(huán)進行輸入,之間用空格分隔例:#includestdio.hvoid main()doub

25、le a; printf(請輸入1個數(shù):); scanf(%lf,&a); printf(na=%fn,a);說明:對于double型,輸入時應用%lf;如果用%f 則出錯 對于double型,輸出時用%f即可,系統(tǒng)會自動判斷3 表達式和語句3.1 表達式1. 表達式概述表達式:操作符、操作對象組成的符號序列2. 左值和右值 左值:左值表達式簡稱左值,能出現(xiàn)在賦值運算符左邊的表達式即,表示一個對象標識(有確定地址的對象)的表達式稱為左值表達式右值:只能出現(xiàn)在賦值表達式右邊的表達式(例,常量只能作右值)說明:左值既可以出現(xiàn)在賦值運算符的右邊,又可以出現(xiàn)在左邊。3. 操作符的優(yōu)先級和結合性4. 語

26、句與塊C+語言中,除了控制語句、函數(shù)調(diào)用語句外,幾乎所有的操作都是通過表達式進行的。語句以分號( ; ) 結束聲明語句控制語句if () else (條件語句)for() (循環(huán)語句) while() (循環(huán)語句)do while() (循環(huán)語句) continue (結束本次循環(huán)的執(zhí)行)break (終止switch或循環(huán)語句的執(zhí)行)switch (多分支選擇語句)goto (無條件轉向語句)return (從函數(shù)內(nèi)返回語句)函數(shù)調(diào)用語句:函數(shù); 例:printf(“ok”);表達式語句: 表達式;例:a=3; x+3; 5+5; 7;空語句: ;復合語句:用一對花括號把若干條語句括起來成為

27、一條語句(語句塊) 說明:一對花括號后面的分號可以不寫, 但是復合語句內(nèi)的最后一條語句的分號必須!C+ 語句分成6大類:例:合法語句: 非法語句:如果a=14; 3=a+2;a; 5(7+a);a+1-7; a+6=7;a=1; a-a=0;C程序書寫規(guī)定:一行可寫多條語句,一條語句可寫多行(行尾加轉移字符:,表示連行)注意:輸入源程序時中、英文要及時切換,例如,中文的分號與英文的分號不是同一個字符說明:C+ 程序中的注釋部分不是語句,兩種注釋方法: 用 /G G/ 括起的內(nèi)容,不管是否換行,均是注釋 用/ 開頭,至本行尾的內(nèi)容是注釋3.2 算術運算和賦值1. 基本運算符:+ - G / %+

28、:加法或正號-:減法或負號G:乘法/:除法%:模(整除取余,操作符兩邊的操作數(shù)必須為整型數(shù)) 說明:兩個整數(shù)相除,結果為舍去小數(shù)部分、截取整數(shù)部分; 但是,如果有一個操作數(shù)是負數(shù),則不同的機器可能有所不同,大多數(shù)采用“向零取整”法。2. 復合運算符+= -= G= /= %=a=a+6 與:a+=6等價注意:a+=b+c 應:a= (b+c) 3. 算術表達式、運算符的優(yōu)先級和結合性1.算術表達式 由算術運算符、括號、操作數(shù)按語法規(guī)則相連接的式子 操作數(shù)即操作對象:常量、變量、函數(shù)等 例: aGb/c-25+a-(18Gc+b)+maG(a,b)2.算術運算符的優(yōu)先級和結合性 規(guī)定:優(yōu)先級先括

29、號,再先乘除、模,后加減 結合性從左到右 結合性即結合方向:當一個運算對象二側的運算符級別相同時,規(guī)定的處理原則 例如:c-a+b 操作數(shù)a的兩邊的運算符相同,則先進行c-a操作 除1目、3目、賦值運算符外的操作符的結合性均是從左到右4. 溢出即:數(shù)值范圍 算術類型轉換5. 自動轉換1.字符型、整型、實型之間可以進行混合運算 其中字符型數(shù)據(jù)以ASC碼的十進制數(shù)參與運算2.運算時,不同類型的數(shù)據(jù)要先轉換成同一類型,然后進行運算3.轉換規(guī)則:P/38 的 圖 3-1 類型轉換由系統(tǒng)自動完成 例如:如果: int i=9,ii; long l=123; float f=9.9; double d=9

30、.9; 則:l+a+ iGf - d/5 運算結果為double型注意:char、short型數(shù)據(jù)參加運算,系統(tǒng)自動將其轉換成int型,然后進行運算 float型數(shù)據(jù)參加運算,系統(tǒng)自動將其轉換成double型,然后進行運算 如果負的int型數(shù)據(jù)與無符號數(shù)進行運算,則負數(shù)作為無符號數(shù)進行運算: #includestdio.hvoid main() int a=-1; unsigned b=0; printf(%d %un,a+b,a+b); /G 輸出:-1 G/ 說明:-1的補碼為:11111 該碼的無符號的十進制值為 6. 強制轉換強制類型轉換符:(類型)將一個表達式的值轉換成某個類型格式:

31、(類型名)(表達式)說明:括號必須,但是,如果表達式是單個操作數(shù),其括號可以省 例如:(int)G (int)(G+y) 一般,系統(tǒng)對操作數(shù)自動進行類型轉換,但如果: a%b 要求a和b都是整型,如果不是,必須先進行轉換: (int)a%b (int)a%(int)b 轉換后只得到一個中間變量,被轉換的變量的類型不變3.3 增量和減量自增自減運算符1. 自增: + +i :先加1后使用 i+ :先使用后加1 例:i=3; j1=+i; j1=4 相當于執(zhí)行:i=i+1; j1=i; j2=i+; j2=3 相當于執(zhí)行:j2=i; i=i+1;2. 自減: - -i :先減1后使用 i- :先使

32、用后減1 例:i=3; j1=-i; j1=2 相當于執(zhí)行:i=i-1; j1=i; j2=i-; j2=3 相當于執(zhí)行:j2=i; i=i-1; 注意:自增自減只能用于變量 結合方向:自右至左 例如:a=-i+; 如果i=6,則a=-6,該語句執(zhí)行完畢,i=7; 常用于循環(huán)語句中的循環(huán)變量和指針變量中有關表達式使用的說明C+ 語言的表達式使用相當靈活,所以經(jīng)常會出現(xiàn)一些問題1.表達式中含有自增自減運算符 例: 如果i=3; 表達式 (i+)+(i+)+(i+) 的值為9, 該表達式運算畢,i的值為6 所以:a=(i+)+(i+)+(i+); b=i; a的值為9, b的值為62.C中有單目運

33、算符和雙目運算符,當難以確定時,編譯時C+ 盡可能多地按自左而右地組織運算符 例:i+j; 編譯時認為:(i+)+j;3.在調(diào)用函數(shù)時,實參的求值順序視機器系統(tǒng)而定,大多數(shù)的系統(tǒng)是右左 例如:i=3; couti (i+); 左右:輸出:3,3 右左:輸出:4,33.4 關系與邏輯運算1. 關系運算符和關系表達式關系運算符和優(yōu)先級 同級(7級) 同級(8級)6種關系運算符: = = !=關系表達式:用關系運算符把操作對象按語法要求聯(lián)系起來的式子關系表達式的值1代表“真”0代表“假”被連接的對象可以是常量、變量、表達式。其中表達式可以是邏輯、賦值、關系表達式關系表達式的值為邏輯值(真 / 假),

34、可以參加運算例:如果:a=1 b=2 c=3 d=ab=ca+5 d=(ab)=(c(a+5) 結果:關系表達式 (ab)=(c(a+5) 的值為“真”,所以:d=1 d=7/2+ac+1=bc-5 d=(7/2+a)(c+1)=(c(a-5) 結果:關系表達式 (7/2+a)b)=(c(a+5) 的值為“假”,所以:d=02. 邏輯運算符和邏輯表達式邏輯運算邏輯判斷3種邏輯運算符:& | !邏輯表達式:用邏輯運算符把關系表達式或邏輯量連接起來的式子邏輯判斷真非0:邏輯表達式的值為1假0: 邏輯表達式的值為0 邏輯量:常量、變量、及算術、邏輯、賦值表達式a&b: a和b都為“真”時,表達式a&

35、b的值為“真”,否則為“假”a|b: a和b都為“假”時,表達式a|b的值為“假”,否則為“真“!a: a為“真”時,表達式!a的值為“假”,否則為“真”例: a=53&2|83)&2)|(8(4-(!0) 1&2 | 83&2|8b+!0a&!b=b+ d=a=(a(b+(!0)a)&(!b)=(b+) ( 97 96 =500) G=GG0.8; /G 符合條件,執(zhí)行結果:G=400 G/ if(G=300)&(G500) G=GG0.9; /G 此時G=400,符合條件,執(zhí)行結果:G=360 G/ if(G=500) y=GG0.8; if(G=300)&(G500) y=GG0.9;

36、if(G=500.0) y=GG0.8; /對于兩個浮點數(shù),無法精確判斷是否相等 else if(G=300.0)&(G500.0) y=GG0.9; else y=GG0.95; printf(n應付金額: %fn,y); getchar(); getchar(); /G 文件名:if語句_例1 G/例1. 對任意輸入的3個數(shù),按大小順序輸出:程序:#includestdio.hvoid main() float G1,G2,G3,G; printf(請輸入3個數(shù),之間用逗號分隔:); scanf(%f,%f,%f,&G1,&G2,&G3); if(G1G2) G=G1; G1=G2; G2

37、=G; /G 從G1和G2中確定大的數(shù)G1 G/ if(G1G3) G=G1; G1=G3; G3=G; /G 比較G1是否比G3大? 確定大的數(shù)G1 G/ if(G24?4:5/2 G=(34)?4:(5/2) G=2 如果a=4: a=aG5,aG4,a=4?a/2:+a a=aG5,aG4,(a=4?a/2:+a) 執(zhí)行結果:表達式a=aG5,aG4,a=4?a/2:+a的值為:21, a的值也是21 如果:表達式是a=aG5,aG4,a=4?a/2:+a ,則執(zhí)行結果為10,a的值是10 如果 a=4:b=(aG5,aG4,a=4?a/2:+a) 執(zhí)行結果:表達式b=(aG5,aG4,

38、a=4?a/2:+a) 的值為:2, a的值是4 b的值是:23.7 逗號表達式1. 逗號運算符 , :也稱:順序求值運算符 作用:連接表達式2. 逗號表達式 格式:表達式1,表達式2,表達式n 求解過程:先求表達式1,再求表達式2,最后求表達式n 整個表達式的值為表達式n的值 例:如果a=5: 表達式 a=3G5,aG4 的值為60 即:a=3G5,aG4 注意:表達式 a=3G5,aG4 與 a=(3G5,aG4) 的區(qū)別 例:如果a=5: 表達式 3G5,aG4 的值為20逗號表達式可以嵌套: 例:如果a=5: 表達式 (a=3G5,aG4),a+5 的值為20 即:a=3G5,aG4

39、這時的a=15 所以:a+5 就等于203.8 求值次序與副作用不同的編譯器求值順序不同p/49消除副作用:將一個表達式分解成多個表達式,或加括號4 過程化語句即流程控制語句4.1 while語句(“當”型循環(huán)結構)一般形式:while(表達式) 語句 說明:1. 先判再執(zhí)行2表達式必須有;表達式可以是常量或常量表達式,但出現(xiàn)“死循環(huán)” 例: while(5) 例:求1加到100的和 #include “stdio.h”void main() int i=1,sum=0; while(i101) sum=sum+i; +i; coutsum= sumendl;4.2 do while 語句一般形式:do 語句 while(表達式);說明:先執(zhí)行、后判斷注意:該語句后面的分號必須要有!例:求1加到100的和 #include “stdio.h”void main() int i=1,sum=0; do sum=sum+i; +i; while(i101); coutsum= sumendl;4.3 for語句可理解為:一般形式:for(表達式1;表達式2;表達式3) 語句 for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語句例:求1加到100的和 #include

溫馨提示

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

評論

0/150

提交評論