東華理工學(xué)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系本科生課程面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第1頁(yè)
東華理工學(xué)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系本科生課程面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第2頁(yè)
東華理工學(xué)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系本科生課程面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第3頁(yè)
東華理工學(xué)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系本科生課程面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第4頁(yè)
東華理工學(xué)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系本科生課程面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩113頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、東華理工學(xué)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系本科生課程面向?qū)ο蟪绦蛟O(shè)計(jì)主講教師 蔣年德 wypjnd輔導(dǎo)教師 艾菊梅2006年2月5月教學(xué)大綱教學(xué)大綱中央電大大綱1C+程序設(shè)計(jì)語(yǔ)言教程 錢能 編著 清華大學(xué)出版社2C程序設(shè)計(jì) 譚浩強(qiáng) 編著 清華大學(xué)出版社3C語(yǔ)言程序設(shè)計(jì) 鄭莉 董淵 傅仕星 編 清華大學(xué)出版社4Visual C+6技術(shù)內(nèi)幕 美David J.Kruglinski 等著 希望圖書(shū)創(chuàng)作室譯 北京希望電子出版社參考書(shū) 與面向?qū)ο罄碚摰南嚓P(guān)參考書(shū)目1. 邵維忠, 楊芙清. 面向?qū)ο蟮南到y(tǒng)分析. 北京: 清華大學(xué)出版社, 1998年12月2.馮玉林,黃濤,倪彬. 對(duì)象技術(shù)導(dǎo)論. 北京: 科學(xué)出版社,

2、1998年3月*3. 邵維忠, 廖鋼城, 蘇渭珍(譯). 面向?qū)ο蟮脑O(shè)計(jì). 北京: 北京大學(xué)出版社,1994年11月4. 汪成為, 鄭小軍, 彭木昌. 面向?qū)ο蟮姆治?、設(shè)計(jì)及應(yīng)用. 北京: 國(guó)防工業(yè)出版社, 1992年9月5. 殷人昆, 田金蘭, 馬曉勤(譯). 實(shí)用面向?qū)ο筌浖こ探坛? 北京: 電子工業(yè)出版社, 1998年6月6. 蔡希堯, 陳平. 面向?qū)ο蠹夹g(shù). 西安: 西安電子科技大學(xué)出版社, 1993年11月7. 徐家福, 王志堅(jiān), 翟成祥. 對(duì)象式程序設(shè)計(jì)語(yǔ)言. 南京: 南京大學(xué)出版社, 1992年12月8. 邵維忠, 廖鋼城, 李力(譯). 面向?qū)ο蟮姆治? 北京: 北京大學(xué)出版

3、社,1992年2月1. 邵維忠, 楊芙清. 面向?qū)ο蟮南到y(tǒng)分析. 北京: 清華大學(xué)出版社, 1998年12月(建議購(gòu)買,本系)3. 邵維忠, 廖鋼城, 蘇渭珍(譯). 面向?qū)ο蟮脑O(shè)計(jì). 北京: 北京大學(xué)出版社,1994年11月(可到系圖書(shū)室借閱,教材科有售)6. 蔡希堯, 陳平. 面向?qū)ο蠹夹g(shù). 西安: 西安電子科技大學(xué)出版社, 1993年11月(提供印頁(yè))2.馮玉林,黃濤,倪彬. 對(duì)象技術(shù)導(dǎo)論. 北京: 科學(xué)出版社, 1998年3月(建議購(gòu)買)相關(guān)參考書(shū)與面向?qū)ο髢?nèi)容的關(guān)系1、基本知識(shí)2、面向?qū)ο蟮姆治?、面向?qū)ο蟮脑O(shè)計(jì)4、面向?qū)ο蟮某绦蛟O(shè)計(jì)6、面向?qū)ο蟮臄?shù)據(jù)庫(kù)系統(tǒng)7、分布對(duì)象技術(shù)課程安排總

4、學(xué)時(shí):60學(xué)時(shí)其中上課40學(xué)時(shí),實(shí)驗(yàn)20學(xué)時(shí)鼓勵(lì)提問(wèn)、討論作業(yè):每布置后的下周一交作業(yè)最后成績(jī)比例: 考試:70% 平時(shí):30%(其中考勤占15%,作 業(yè)和實(shí)驗(yàn)占15%)如何學(xué)習(xí)面向?qū)ο蠹夹g(shù)(1)面向?qū)ο笤O(shè)計(jì)方法追求的是現(xiàn)實(shí)問(wèn)題空間與軟件系統(tǒng)解空間的近似和直接模擬?,F(xiàn)實(shí)世界空間中的基本問(wèn)題是物質(zhì)和意識(shí),映射到面向?qū)ο笙到y(tǒng)解空間就是具體事物(對(duì)象)和抽象類概念(類)。面向?qū)ο蠹夹g(shù)的封裝、繼承、多態(tài)性等不僅支持軟件利用,而且使軟件維護(hù)可靠有效,可實(shí)現(xiàn)軟件系統(tǒng)的柔性制造。如何學(xué)習(xí)面向?qū)ο蠹夹g(shù)(1)面向?qū)ο笳Z(yǔ)言對(duì)程序設(shè)計(jì)的主要影響并不在于它的語(yǔ)法特征,而在于它所提供的自然問(wèn)題求解的機(jī)制和結(jié)構(gòu)。面向?qū)ο?/p>

5、編程(OOP)將計(jì)算過(guò)程看做是分類過(guò)程加狀態(tài)變換過(guò)程,即將系統(tǒng)逐步劃分為相互聯(lián)系的多個(gè)對(duì)象并建立這些對(duì)象的聯(lián)系,以引發(fā)狀態(tài)轉(zhuǎn)換,實(shí)現(xiàn)系統(tǒng)計(jì)算任務(wù)。因此,要理解面向?qū)ο笳Z(yǔ)言,應(yīng)首先理解面向?qū)ο蠹夹g(shù)的基本原理和基本概念,然后再學(xué)習(xí)此類語(yǔ)言。第一章 C+編程基礎(chǔ)計(jì)算機(jī)語(yǔ)言的發(fā)展第一階段:低級(jí)語(yǔ)言(計(jì)算機(jī)誕生開(kāi)始)機(jī)器語(yǔ)言機(jī)器指令二進(jìn)制表示匯編語(yǔ)言指令使用符號(hào)化的助記符舉例:匯編語(yǔ)言機(jī)器語(yǔ)言mov eax, DWORD PTR a_$ebp8b 45 fcmov ecx, DWORD PTR b_$ebp8b 4d f8add ecx, ecx03 c9sub eax, ecx2b c1inc eax

6、40mov DWORD PTR a_$ebp, eax89 45 fc以上指令實(shí)現(xiàn)運(yùn)算 a=a-2b+1特點(diǎn):1.適用于計(jì)算機(jī)專業(yè)人員,追求編制技巧和代碼短?。?.實(shí)現(xiàn)簡(jiǎn)單計(jì)算和設(shè)備驅(qū)動(dòng)。3.依賴于計(jì)算機(jī)硬件,程序的可讀性和可移植性差匯編語(yǔ)言與機(jī)器語(yǔ)言的特點(diǎn)第二階段 高級(jí)語(yǔ)言出現(xiàn)了諸如FORTRAN、BASIC等高級(jí)語(yǔ)言,但一般高級(jí)語(yǔ)言難以實(shí)現(xiàn)匯編語(yǔ)言的某些功能,C語(yǔ)言的出現(xiàn)解決了這一問(wèn)題,它集高級(jí)語(yǔ)言和低級(jí)語(yǔ)言的特性于一身。但是C是一種過(guò)程化語(yǔ)言,已經(jīng)不適合現(xiàn)代軟件開(kāi)發(fā)的需要,后來(lái),在C的基礎(chǔ)上出現(xiàn)了面向?qū)ο蟮腃+。C+語(yǔ)言的發(fā)展過(guò)程原型ALGO60,劍橋大學(xué)ALGOL語(yǔ)言是一種嵌套結(jié)構(gòu)的面

7、向過(guò)程的程序設(shè)計(jì)語(yǔ)言, 它是ALGORITHMIC LANGUAGE(算法語(yǔ)言)的縮寫。故適合于描述數(shù)值計(jì)算的過(guò)程,與習(xí)慣的數(shù)學(xué)表達(dá)形式較接近。 ALGOL語(yǔ)言是國(guó)內(nèi)廣泛流行的一種程序設(shè)計(jì)語(yǔ)言。 ALGOL語(yǔ)言的源程序結(jié)構(gòu)可分為四個(gè)部分:開(kāi)始部分、說(shuō)明部分、語(yǔ)句部分和結(jié)束部分。 C+語(yǔ)言的發(fā)展過(guò)程1963年,劍橋大學(xué)將ALGOL 60語(yǔ)言發(fā)展成為CPL(Combined Programming Language)語(yǔ)言。1967年,劍橋大學(xué)的Matin Richards 對(duì)CPL語(yǔ)言進(jìn)行了簡(jiǎn)化,于是產(chǎn)生了BCPL語(yǔ)言。1970年,美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson將BCPL進(jìn)行了修改,并為

8、它起了一個(gè)有趣的名字“B語(yǔ)言”。意思是將CPL語(yǔ)言煮干,提煉出它的精華。并且他用B語(yǔ)言寫了第一個(gè)UNIX操作系統(tǒng)。C+語(yǔ)言的發(fā)展過(guò)程1988年,隨著微型計(jì)算機(jī)的日益普及,出現(xiàn)了許多C語(yǔ)言版本。由于沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),使得這些C語(yǔ)言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國(guó)國(guó)家標(biāo)準(zhǔn)研究所(ANSI)為C語(yǔ)言制定了一套ANSI標(biāo)準(zhǔn),成為現(xiàn)行的C語(yǔ)言標(biāo)準(zhǔn) 3.C語(yǔ)言的主要特點(diǎn) C+語(yǔ)言的發(fā)展過(guò)程C+是一種面向?qū)ο蟮木幊陶Z(yǔ)言.C#是Microsoft公司設(shè)計(jì)的一種編程語(yǔ)言。它松散地基于C/C+,并且有很多方面和Java類似。Microsoft是這樣描述C#的:“C#是從C和C+派生來(lái)的一種簡(jiǎn)單、現(xiàn)

9、代、面向?qū)ο蠛皖愋桶踩木幊陶Z(yǔ)言。 程序的開(kāi)發(fā)過(guò)程開(kāi)始程序設(shè)計(jì)程序編輯程序編譯通過(guò)程序連接通過(guò)程序運(yùn)行正確結(jié)束重新修改原程序產(chǎn)生*.cpp的源文件產(chǎn)生*.obj的目標(biāo)文件產(chǎn)生*.exe的可執(zhí)行程序NNNYYYC+語(yǔ)言概述討論C+語(yǔ)言的基本程序結(jié)構(gòu)、學(xué)習(xí)方法與編程規(guī)范等進(jìn)入開(kāi)發(fā)環(huán)境簡(jiǎn)介主要向同學(xué)們介紹Visual C+的使用環(huán)境這部分希望大家認(rèn)真學(xué)習(xí),這是我們后面做實(shí)驗(yàn)的基礎(chǔ)。進(jìn)入C+的基本數(shù)據(jù)類型C+數(shù)據(jù)類型概述整型數(shù)據(jù)實(shí)型數(shù)據(jù)字符型數(shù)據(jù)枚舉常量常量與變量定義定義類型C+數(shù)據(jù)類型概述數(shù)據(jù)類型基本數(shù)據(jù)類型非基本數(shù)據(jù)類型整型 int字符型實(shí)型邏輯型 bool單字符型 char寬字符型 w_char

10、單精度型 float雙精度型 double數(shù)組 type 指針 type *空類型 void結(jié)構(gòu) struct聯(lián)合 union枚舉 enum類 class整型數(shù)據(jù)整型常量整型變量整形常量C+中的整型常量可用三種形式表示:1、十進(jìn)制整數(shù)。如56,378,0等。2、八進(jìn)制整數(shù)。表示時(shí)在整數(shù)前加0。如0452,056。 八進(jìn)制數(shù)與十進(jìn)制數(shù)之間的換算關(guān)系(635) 8=682 + 38 + 5 = 5413、 十六進(jìn)制整數(shù)。表示時(shí)在整數(shù)前加0 x。如0 x254,0 xAC32,0 x64B46 等。十六進(jìn)制數(shù)用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F表示。 十六進(jìn)制數(shù)與十進(jìn)制數(shù)

11、的換算關(guān)系(7A6)16 7162 + A16 + 6 = 1958 整型變量: 整數(shù)在存儲(chǔ)單元中的存儲(chǔ)情況:(以DOS為例) 1、 int a,b /*指定a,b為整型*/可進(jìn)行如下賦值運(yùn)算:a=3;b=5;a=b+4;a=a+10; 2、 short a,b /*指定a,b為短整型*/ 3、 long a,b /*指定a,b為長(zhǎng)整型*/ 4、 unsigned int a,b /*指定a,b為無(wú)符號(hào)型*/在只能用正整數(shù)數(shù)時(shí)使用。注意不能給這種變量負(fù)數(shù) 5、 unsigned short a,b /*指定a,b為無(wú)符號(hào)短整型 */ 6、 unsigned long a,b /*指定a,b為無(wú)

12、符號(hào)長(zhǎng)整型*/ 不同種類的整型數(shù)據(jù)間可以進(jìn)行算術(shù)運(yùn)算。整型變量的分類與定義實(shí)型數(shù)據(jù)實(shí)型常量實(shí)型變量實(shí)型常量實(shí)型常量有兩種表示形式:1、 十進(jìn)制形式。如123.456,89.3等。2、 指數(shù)形式。如123104 可寫成123e4或123E4。實(shí)型變量實(shí)型變量分單精度(float,占4個(gè)字節(jié))和雙精度(double,占8個(gè)字節(jié))。1、float a,b; 可進(jìn)行如下賦值運(yùn)算:a=3.45; b=89.32; a=a+46.23;2、double a,b; 字符型數(shù)據(jù)字符常量字符變量字符串常量字符常量字符常量要用單引號(hào)括起來(lái),如:a表示字符常量a;¥表示字符常量¥;字符形式功能n換行t橫向跳格,相當(dāng)

13、一個(gè)tab鍵v豎向跳格b退格r回車f走紙換頁(yè)反斜杠字符“單引號(hào)“字符ddd1到3位八進(jìn)制數(shù)所代表的字符xhh1到3位16進(jìn)制數(shù)所代表的字符字符變量字符型變量用來(lái)存放字符常量且只能存放一個(gè)字符常量,定義形式如下:char c1,c2; /*定義a,b為字符型變量*/可進(jìn)行如下運(yùn)算:c1=d; c2=c; /*c1表示字符常量d,c2表示字符常量c*/字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式字符數(shù)據(jù)在內(nèi)存中是以整數(shù)的形式存儲(chǔ)的,所以單字符可以與整數(shù)混合運(yùn)算。例如: char c1,c2,c3; int t1,t2; c1=97; c2=c1+1; c3=c1-32; t1=c1; t2=c2;字符串常量字符串常

14、量就是用一對(duì)雙引號(hào)括起來(lái)的字符序列。如:“tsinghua university”, “a”,“china”。系統(tǒng)在每一個(gè)字符串常量最后都自動(dòng)加有一個(gè)字符串結(jié)束符號(hào)0,該字符占用一個(gè)字符的存儲(chǔ)空間,但不可見(jiàn)。例:“china” 在內(nèi)存中的存儲(chǔ)形式為china0字符串常量與字符常量的區(qū)別又如:a與“a”的不同之處在于:a的存儲(chǔ)形式為 “a”的存儲(chǔ)形式為 枚舉常量當(dāng)一個(gè)變量只有幾種可能的值,可以定義為枚舉類型。枚舉類型就是將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的內(nèi)容。如下便是一個(gè)枚舉類型的定義:enum weekday sun,mon,tue,wed,thu,fri,sat;enum we

15、ekday workday,week_end;#include typedef enumsun,mon,tue,wed,thu,fri,sat week;/定義一個(gè)枚舉類型main()week workday;workday=(week)4; /枚舉類型值從0開(kāi)始/整數(shù)必須強(qiáng)制類型轉(zhuǎn)換printf(workday=%s,workday);printf(workday=%d,workday);return 0;常量定義在C+中,如果想讓變量的內(nèi)容自初始化后一直保持不變,可以定義一個(gè)常量:const int a=10;const float f=4.5;const char c=a;定義常量時(shí)必須

16、初始化。C+允許define定義常量,這時(shí)為了兼容C,而在C+中常量定義都用const,不用#define。常量名不能放在賦值語(yǔ)句左邊,如:const int a;a=10; /error常量定義中,初始化的值可以是一個(gè)常量表達(dá)式,如:const int a=100*3+5;但該常量表達(dá)式中不能出現(xiàn)函數(shù)調(diào)用:const int a=max(3,5); /error常量定義中應(yīng)注意的問(wèn)題變量定義變量命名規(guī)則:(1)不能是C+關(guān)鍵字,不要與C+中的庫(kù)函數(shù)名、類名和對(duì)像名相同。(2)變量名由字母、數(shù)字和下劃線組成,不能以數(shù)字開(kāi)頭,中間不能有空格。(3) C+區(qū)分大小寫。(4)采用英文單詞,不用中文拼

17、音。(5)變量用小寫字母開(kāi)頭,宏和常量用大寫。(6)類的名稱一般用C開(kāi)頭。(7)盡量使用系統(tǒng)提供的名稱。(8)盡量形成自己的一套風(fēng)格。變量定義時(shí)可以加前綴,前綴意義如下:p:指針s:字符串sz:以0終止的字符串msg:消息fn:函數(shù)c:8位的字符b:布爾量by:無(wú)符號(hào)字符u:無(wú)符號(hào)整數(shù)w:無(wú)符號(hào)整數(shù)或整數(shù)dw:無(wú)符號(hào)長(zhǎng)整數(shù)l:長(zhǎng)整數(shù)h:句柄n:整數(shù)例如:pBrush,nColor,lnumber定義類型用typedef定義新的類型名來(lái)代替已有的類型名,這樣有利于程序的維護(hù)。例如:typedef int integer; int a,b;integer a,b;變量的賦值與運(yùn)算運(yùn)算符混合運(yùn)算中的

18、類型轉(zhuǎn)換優(yōu)先級(jí)與結(jié)合性溢出求值次序與副作用運(yùn)算符算術(shù)運(yùn)算符(加法運(yùn)算符)(減法運(yùn)算符)*(乘法運(yùn)算符)d. /(除法運(yùn)算符,兩數(shù)相除取整)e. (模運(yùn)算符,兩數(shù)相除取余)在多數(shù)機(jī)器上,對(duì)于“/”運(yùn)算,若相除結(jié)果為負(fù),則向零取整(使變量加1) , (使變量減1)例如:i+ /相當(dāng)于i=i+1i- /相當(dāng)于i=i-1注意:(1).運(yùn)算符(+)和()只能用于變量,不能用于常量和表達(dá)式,如5+和(a+b)+都不合法。區(qū)別:i+,i- /*在使用i之后使i的值增或減1*/ +i,-i /*在使用i之前使i的值增或減1*/自增、自減運(yùn)算符(1).#includemain() int i,j,k; i=3;

19、 j=i+; i-; k=+i; printf(j=%d,k=%d,j,k); return 0;運(yùn)行結(jié)果為:j=3,k=4。例如賦值運(yùn)算賦值符號(hào)“”就是賦值運(yùn)算符。允許以下情況:(1). a=3;(2). a=b=c=5 /a,b,c均為5(3). a=5+(c=6) /a為11,c為6在賦值符“”前加上其它運(yùn)算符,可構(gòu)成復(fù)合的賦值運(yùn)算符:a+=3 等價(jià)于 a=a+3注意:x *= y+8 等價(jià)于x=x*(y+8),不等價(jià)于 x = x*y+8求字節(jié)數(shù)運(yùn)算符 求字節(jié)數(shù)運(yùn)算符:sizeof例如:求int型數(shù)據(jù)所占的字節(jié)數(shù):sizeofint=sizeof(int)課后練習(xí):分別求出自己機(jī)器上各

20、種數(shù)據(jù)類型所占的字節(jié)數(shù)。強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換的一般形式為:(類型名)(表達(dá)式)例如:(float)a /*將a強(qiáng)制轉(zhuǎn)換為float型*/ (int)(x+y) /*將(x+y)強(qiáng)制轉(zhuǎn)換為int 型*/ (int)x+y /*將x轉(zhuǎn)換為int型后再與y相加*/強(qiáng)制類型轉(zhuǎn)換只是得到一個(gè)所需類型的中間變量,原來(lái)變量的類型并不發(fā)生變化。#includemain() float x; int xi; x=4.5; xi=(int)x; printf(x類型轉(zhuǎn)換后產(chǎn)生的中間變量值為%d,而x的值仍為%f.n,xi,x); return 0;運(yùn)行結(jié)果為:x類型轉(zhuǎn)換后產(chǎn)生的中間變量值為4,而x的值仍

21、為4.5。 例如:條件運(yùn)算符條件運(yùn)算符:? :例如:max=(ab)? a:b如果ab,把a(bǔ)的值賦給max;否則,把b的值賦給max。逗號(hào)運(yùn)算符一般形式是:表達(dá)式1,表達(dá)式2,表達(dá)式n求解順序?yàn)閺淖笾劣?,整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式n的值。如:a=(3+2,6*4,7-4),/a的值為3逗號(hào)運(yùn)算符在整個(gè)運(yùn)算符中級(jí)別最低。位運(yùn)算(位右移) (位取反) |(按位或) (按位異或) &(按位與)實(shí)例10進(jìn)制值二進(jìn)制值x0110 0 0 0 1 0 0 1y0270 0 0 1 0 1 1 1x3661 1 1 1 0 1 1 0 x & y0010 0 0 0 0 0 0 1x | y0370 0 0

22、 1 1 1 1 1x y0360 0 0 1 1 1 1 0 x 20020 0 0 0 0 0 1 0混合運(yùn)算時(shí)數(shù)據(jù)類型轉(zhuǎn)換charshortintlong intunsigned longunsigned intunsigned shortunsigned charfloatdoublelong double溢出各種數(shù)據(jù)類型都有其數(shù)據(jù)范圍,當(dāng)數(shù)據(jù)超出這個(gè)范圍時(shí)就會(huì)發(fā)生溢出,數(shù)據(jù)溢出不會(huì)引起編譯錯(cuò)誤,但是會(huì)使運(yùn)行結(jié)果發(fā)生偏差。例如以下程序:int a=9999999999;int b=9999999999;couta*b=a*bendl;在windows環(huán)境下運(yùn)行結(jié)果為:a*b=-1158

23、137855求值次序與副作用對(duì)于復(fù)合表達(dá)式來(lái)說(shuō),不同的編譯器求值的次序會(huì)不同,例如下例:int a=3,b=5;C=a*b+ +b;D=+b*(a+b);E=(a=4)+b; 當(dāng)求值順序不同時(shí),運(yùn)算的結(jié)果會(huì)有所不同。這樣的程序不提倡,在編程時(shí)最好將復(fù)合表達(dá)式寫成幾個(gè)簡(jiǎn)單表達(dá)式。C+程序設(shè)計(jì)數(shù)據(jù)的傳輸C程序結(jié)構(gòu)邏輯運(yùn)算與條件控制循環(huán)控制數(shù)據(jù)的傳輸標(biāo)準(zhǔn)C的輸出標(biāo)準(zhǔn)C的輸入C+的控制臺(tái)操作標(biāo)準(zhǔn)C的輸出C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由C的標(biāo)準(zhǔn)類庫(kù)中提供的函數(shù)來(lái)實(shí)現(xiàn)的,使用時(shí)將用戶程序與標(biāo)準(zhǔn)文件相連接。在使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),要用預(yù)編譯命令“#include”將“stdio.h”文件

24、包括到用戶源文件中。即 #include printf函數(shù)是向終端輸出若干個(gè)任意類型的數(shù)據(jù)。printf函數(shù)的一般格式為:printf(“格式控制”,輸出表列)格式控制由普通字符和格式說(shuō)明組成,普通字符照原樣輸出,格式說(shuō)明由“”和格式字符組成,其作用是指定輸出數(shù)據(jù)的格式。 printf函數(shù)(格式輸出函數(shù))#include main( ) int a; a=67; printf(“以數(shù)字形式輸出,a=%d;n以字符形式輸 出,a=%cn,a,a); return 0;運(yùn)行結(jié)果為:以數(shù)字形式輸出,a=67;以字符形式輸出,a=C例如:標(biāo)準(zhǔn)C的輸入scanf可以用來(lái)輸入任何類型的多個(gè)數(shù)據(jù)。例如:#i

25、nclude main( ) int a,b,c; scanf(%d%d%d,&a,&b,&c); printf(%d,%d,%d,a,b,c); return 0;運(yùn)行:輸入:1 2 3(輸入數(shù)據(jù)時(shí)兩個(gè)數(shù)據(jù)之間可以用空格、回車、tab鍵隔開(kāi))輸出:1,2,3C+的控制臺(tái)操作C除了stdio以外,還為面向?qū)ο癯绦蛟O(shè)計(jì)了一套相當(dāng)方便的I/O,其定義在iostream.h中。cout 標(biāo)準(zhǔn)輸出cin 標(biāo)準(zhǔn)輸入兩個(gè)運(yùn)算符: 輸入運(yùn)算符#include void main( ) char name20; int age; cout”please give your name:” name; cout”

26、please give you age:” age; cout”your name is :”name endl; cout”you are”age ”years old” endl;例如:C+的常用控制符控制符描述dec十進(jìn)制hex十六進(jìn)制oct八進(jìn)制setfill(c)設(shè)填充字符為csetprecision(n)設(shè)顯示小數(shù)精度為nsetw(n)設(shè)域?qū)挒閚設(shè)置值的輸出寬度#include #include void main()float amount=3.14159;coutsetw(4)amountendl;coutsetw(8)amountendl;coutsetw(12)amount

27、endl;3.14159_3.14159_ _ _ _ _3.14159運(yùn)行結(jié)果八進(jìn)制與十六進(jìn)制輸出int number=1000;coutdecimal:decnumberendl;couthexadecimal:hexnumberendl;coutoctal:octnumberendl;couthex;cout123endl;cout234endl;cout345endl;coutdec;decimal:1000hexadecimal:3e8octal:17507bea159運(yùn)行結(jié)果設(shè)置填充字符coutsetfill(*);coutsetw(2)10endl;coutsetw(10)10,

28、 =, , =, = =, !=優(yōu)先級(jí)關(guān)系:(1).,=的優(yōu)先級(jí)相同且高于=和!=,=和!=的優(yōu)先級(jí)相同。(2).關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。(3).關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值是“真”或“假”,C中以1代表真,以0代表假。例如:“53”的值為0,“50”的值為1。 邏輯運(yùn)算C中提供三種邏輯運(yùn)算符:(1).& 邏輯與。(2).| 邏輯或(3).! 邏輯非。(1).“!”的優(yōu)先級(jí)最高,其次為“&”,“|”的優(yōu)先級(jí)最低。(2).“!”的優(yōu)先級(jí)高于算術(shù)運(yùn)算符,“&”和“|”的優(yōu)先級(jí)低于關(guān)系運(yùn)算符。 優(yōu)先級(jí)關(guān)系系統(tǒng)在給出邏

29、輯運(yùn)算結(jié)果時(shí),以1代表真,以0代表假;而在參加邏輯運(yùn)算的運(yùn)算對(duì)象中,以0代表假,以非0(不一定是1)代表真。 例如:(a).若a=4,則!a=0(b).若a=3,b=0,則a|b的值為1,a&b的值為0。(c).表達(dá)式c|84-!0 c|83 c|0 表達(dá)式的值為1 (c=!0)注意:在邏輯運(yùn)算中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只有在必須執(zhí)行下一個(gè)運(yùn)算符后才能得出表達(dá)式的值時(shí),才執(zhí)行該運(yùn)算符。 例如:a&b&c,只有當(dāng)a為真時(shí),才依次判斷b和c,當(dāng)a為0時(shí)可直接得到表達(dá)式的值為0,系統(tǒng)不會(huì)再繼續(xù)判斷表達(dá)式b和c。 如以下程序:#include main( ) int a=0,b=1,c=1,

30、d; d=a&(b=b+1)|(c=c+1); couta=aendl;coutb=bendl;coutc=cendl;coutd=dendl;運(yùn)行結(jié)果為:a=0b=1c=2d=1 單分支控制語(yǔ)句根據(jù)所給條件是否滿足的情況來(lái)決定執(zhí)行兩種不同的操作。它的實(shí)現(xiàn)語(yǔ)句用if語(yǔ)句,if語(yǔ)句的一般形式為:if(表達(dá)式)語(yǔ)句體1;else語(yǔ)句體2; #include main( ) int a=0,b=0; cout請(qǐng)輸入一個(gè)整數(shù):a; if (a=0)b+;cout0時(shí),b=b0時(shí)執(zhí)行的操作 elseb-;cout當(dāng)a0時(shí),b=bendl; /a0時(shí)執(zhí)行的操作 return 0;例如:(1).if(表達(dá)式

31、) 語(yǔ)句;(2).if(表達(dá)式)語(yǔ)句1;else 語(yǔ)句2;(3).if(表達(dá)式1) 語(yǔ)句1;else if(表達(dá)式2) 語(yǔ)句2;else if(表達(dá)式3) 語(yǔ)句3;else if(表達(dá)式n-1) 語(yǔ)句n-1;else 語(yǔ)句n;if語(yǔ)句有三種形式一般形式如下:if ( )if( ) 語(yǔ)句1else 語(yǔ)句2else if( ) 語(yǔ)句3else 語(yǔ)句4 if 語(yǔ)句可以嵌套使用下列程序的哪些改法是正確的?#include main( ) int x,y; cinx; if(x0) y=-1; else if(x=0) y=0; else y=1; cout當(dāng)x=x時(shí),y=y=0)if(x0) y=1;

32、else y=0;else y=-1; 改法2.if語(yǔ)句改為:y=-1;if (x!=0) if (x0) y=1;else y=0; 改法3.if 語(yǔ)句改為:y=0;if(x=0)if(x0) y=1;else y=-1; #include main( ) int a; cout請(qǐng)輸入一個(gè)整數(shù):a; if(a) cout該整數(shù)不為0endl; else cout該整數(shù)為0endl;return 0; 例2多分支選擇語(yǔ)句switch語(yǔ)句也是條件選擇語(yǔ)句,與if語(yǔ)句不同的是,if語(yǔ)句只提供兩個(gè)可供選擇的分支,而switch語(yǔ)句可以提供多條選擇分支。它的一般形式為:switch(表達(dá)式)case

33、常量表達(dá)式1:語(yǔ)句1case 常量表達(dá)式2:語(yǔ)句2case 常量表達(dá)式n:語(yǔ)句ndefault : 語(yǔ)句n+1;當(dāng)switch表達(dá)式和某個(gè)case常量表達(dá)式的值相同時(shí),就從該case表達(dá)式開(kāi)始向后執(zhí)行。int result=0;switch(ope)case +:result=v1+v2;case -:result=v1-v2;case *:result=v1*v2;case /:result=v1/v2;default: coutoperator is wrong!endl;當(dāng)ope=-時(shí),打印結(jié)果為operator is wrong!例如:若要使switch語(yǔ)句只執(zhí)行一個(gè)分支,可以在cas

34、e語(yǔ)句后加一個(gè)break語(yǔ)句來(lái)達(dá)到此目的。上面例子可以改為: int result=0;switch(ope)case +:result=v1+v2;break;case -:result=v1-v2;break;case *:result=v1*v2;break;case /:result=v1/v2;break;default: coutoperator is wrong!endl;循環(huán)控制在C+中可以用以下語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán):1用while語(yǔ)句;2用do-while語(yǔ)句;3用for語(yǔ)句;4. break和continue語(yǔ)句while語(yǔ)句一般形式如下:while(表達(dá)式) 語(yǔ)句例如:計(jì)算整數(shù)110的和#include mai

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論