版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章程序設(shè)計概述 面向?qū)ο蟪绦蛟O(shè)計的本質(zhì)是 把數(shù)據(jù)和數(shù)據(jù)處理的過程當(dāng)成一個整體 - 對象 。 由符號 “/*”和“*/ ”括起來的多行注釋語句(不能嵌套使用);main()函數(shù)是必須的入口函數(shù),每個C程序從main()函數(shù)開始執(zhí)行,并在main()中結(jié)束。第二章 C+ 的數(shù)據(jù)類型、運算符和表達式C+語言程序中允許出現(xiàn)的所有基本字符的集合,稱為C+語言的字符集。標(biāo)識符:是由程序員定義的命名符。用來標(biāo)識常量、變量、函數(shù)、數(shù)據(jù)類型的名字等。由字母、數(shù)字和下劃線(其他的都是非法的) 組成,且必須以字母或下劃線為第一字符。1) 保留字或關(guān)鍵字是系統(tǒng)作特殊用途的單詞,不可作用戶標(biāo)識符;2) 標(biāo)識符的大小
2、寫有區(qū)別;3) C+ 沒有規(guī)定標(biāo)識符的長度,即字符個數(shù);4) 標(biāo)識符盡可能做到見文知意,增加程序可讀性 八進制 (octal) :以 0 開頭的八進制數(shù)字串;十六進制 (hexadecimal) :以 0x 開頭 的十六進制數(shù)字串; 指數(shù)形式,也即科學(xué)記數(shù)法,用字母E或e表示,一般形式:aEb,表示a*10的b次方,b必須是整數(shù),且尾數(shù)和指數(shù)都不能缺?。+的浮點數(shù)有3種:單精度浮點型(float),雙精度浮點型(double)和長雙精度浮點型(Iong double)。不加后綴的浮 點數(shù)默認(rèn)為double型,float型數(shù)據(jù)后綴為F或f, Io ng double型數(shù)據(jù)后綴為I或L。字符常量
3、:如:65, a97;所以這些常量可以參加數(shù)值運算,如A1=65+仁66= B.(0是48)轉(zhuǎn)義字符可以組成字符常量,其長度也為1。如n 字符串:可以一行或連續(xù)幾行書寫,當(dāng)連續(xù)幾行書寫時,在每行后加續(xù)行符“”結(jié)尾即可。每個字符串都有一個串結(jié)束標(biāo)志 “0”,因此字符串在內(nèi)存中占用的字節(jié)數(shù)等于字符串的長度加1 eg.“”:占內(nèi)存 7個單元?!?101102x43x44 ”是字符串“ abCD ”字符串的長度不受限制,靠0”來判定串的結(jié)束;a”和a是兩個不同的概念;字符串常量實際上是一個字符型數(shù)組,不存在字符串型的數(shù)據(jù)類型 。#define N 100 long width = 7, length
4、= 7;double area, radius = 23;(這些是合法的)關(guān)于“/”如果兩個運算對象有一個或兩個都是實型,則運算結(jié)果是實型。 關(guān)于“%”只能用于整數(shù),取兩數(shù)相除后的余數(shù);當(dāng)運算的對象異號時,取%前的運算數(shù)的符號 作為結(jié)果符號,而值為兩數(shù) 絕對值 的余數(shù)。關(guān)于邏輯 0 表示假 1 表示真 。 邏輯運算符的操作數(shù)可以是任何基本數(shù)據(jù)類型的數(shù)據(jù)。 關(guān)于位運算符1) : 按位求反,將運算元內(nèi)所有的 1 變 0, 0 變 12) &: 按位與,處理兩個整形運算元中的每一個二進制位,如果對應(yīng)位值都為1,則結(jié)果位為 1,反之結(jié)果位值為 0。3) A:按位異或,對于每個二進制位,如果兩個運算元中
5、的對應(yīng)位有且僅有一個為1時,結(jié)果位上的值為1,反之結(jié)果為 0 。4) |: 按位或, 對于每個二進制位, 如果兩個運算元中的對應(yīng)位其中有一個為 1 時,結(jié)果位上的值為 1,反之結(jié)果為 0。5) : 右移運算符,運算元中各二進制全部右移一定位置。Sizeof:返回其后的表達式類型標(biāo)識符所表示的數(shù)在內(nèi)存所占字節(jié)的多少,實際上是求所占內(nèi)存字節(jié)數(shù),所以也叫長度 運算符。如果有多于兩個 +或兩個 -連寫的情況,則編譯首先識別前面兩個+或-為增量或減量操作符。/errorc = a + b;類型轉(zhuǎn)換的方向肆鏗劉勰黑!闘媲I!製!理口用 char |境福i:慌満i尊圖;裔i希需6纓牌贈!熾螂躍螂腸遊加!蠟1
6、!埶黑!牌慳!腳熾轉(zhuǎn)S unsigned char 高渝隔躅i;靜裔i騙海穂錨蜀撕 辭裔鬲備潦i:翩裔満口曲淳瀆浴懿晞君鍛農(nóng)鮫陰01.J.s short s於翳黑綴屋遠(yuǎn)駆詫隱遊谿帶廉SSTrt O sh賺詞請帝滿論曬舖謙漏ii觀 用 int 尊 14瞰整刪京卿卿卿!頭割蕩躺鑒溜馨鰹牌陛1粧I long int I鋸需需橋緡瀟砲噺鯛滯曙級燻!翅 劇望!型蠅騾煽L1瞌J障瀟論論溜侖緒筒踽備腳僑闋筒瀟離嗇鯊I unsigned int fi&纓卿腳唧唆m劉舉皿麵瞬迎專潮罷卿!劉翩副殆P淀尿 曲隔扇-屆崩;.總器3溫曲備禺屛目 unsigned long 童暑腐ii翻閒倚inasia踽隔8鬲闕脩隅ii
7、備腐緡i踴痛%麥関疇理劉曙疊悝媲關(guān)直弓 double 君帝尋甫鬧爾能磅訓(xùn)巒憐:癌曲e舗 卿uh擦 Iu:O 澤 椚d 0 曲g邂wvm .znuf&.e du. m第三章數(shù)據(jù)的輸入與輸出輸入:信息從計算機的外部設(shè)備流入計算機主機稱為輸入。 輸出:信息從計算機主機流入計算機外部設(shè)備稱為輸出。 ”從cin輸入流中抽取字符,” n時,m與n的最大公約數(shù)等于 n與m%n的最大公約數(shù);當(dāng)n = 0時,m與n的最大公約數(shù)等于m。m是n的k倍還多r ,那么m和n的最大公約數(shù)與n和r的最大公約數(shù)相同。若r= 0,則n就是m和n的最大公約數(shù);若r不等于0,則對n和r重復(fù)上述過程,直到r= 0為止。第五章數(shù)組及其
8、使用數(shù)組要求先定義后使用數(shù)組說明的作用是在程序運行前分配內(nèi)存空間。因此,數(shù)組類型符必須是已定義的,下標(biāo)表達式也須有確定值,不能為變量或?qū)嵭捅磉_式。如果給定的常數(shù)的個數(shù)不足,則系統(tǒng)對其余元素初始化為0或空字符C+的高維數(shù)組在內(nèi)存中以高維優(yōu)先的方式存放,二維數(shù)組中以行為優(yōu)先排放如果全部元素都賦初值,則定義數(shù)組時,對第一維的長度可以不指定,但高維的長度不能省,如:int ad3=1,2,3,4,5,6;i nt y23 = 1,2,3,4,5,6,7,8,9,10,11,12;字符數(shù)組的定義:char str10;str0= C;str1= h;str2= str3= n;str4= a;str5=
9、 0逐個字符對數(shù)組元素進行賦初始值:char str110 = s,:u:e:不會添加結(jié)束符0 用串常量初始化:char str210 = Student”char str3 = student ”char str3 =student ”;String.h頭文件包含:1)字符串長度函數(shù)strle n()2)字符串賦值函數(shù)strcpy()3)字符串連接函數(shù)strcat()4)字符串比較函數(shù)strcmp()如果兩個串相等,函數(shù)返回值為0;如果s1串大于s2串,返回值大于0;如果s1串小于s2串,返回值小于0。、,、* 、* 1注意:int strn cmp(c onstchar *s1,c ons
10、tchar *s2,i nt n);函數(shù)strcmp用于兩個串的完全比較;strncmp用于比較兩個串的前n個字符。用cin流輸入字符串時,C+把鍵盤操作的空格和回車都視為結(jié)束,因此無法輸入帶空格的字符串。 C語言的函數(shù)gets接受鍵盤輸入的空格,以回車作為結(jié)束。使用puts輸出字符串,這兩個函數(shù)在 stdio.h中聲明。#in clude #in clude void mai n()char str10; gets(str); puts(str);數(shù)組使用舉例-冒泡排序基本思想:首先,在A1-An范圍內(nèi),依次比較兩個相鄰元素的大小 Ai+1f 則交jAi?nAi+1,否則就不交換,i=1l2
11、F_.,n-1o 經(jīng)過這樣 遍處理(稱為一趟起觀).就JBA1-An中最大的元素?fù)Q到了An中:然后,在AI1bAn-1范圍內(nèi)再逬行一趟起泡,將該范圍內(nèi)最大的放在 An-1中;依次進行下去直到上險完A1 -A2;經(jīng)過以上n1趟起泡.則將這n個數(shù)按從小到大的順序fi斎。改進版:#in elude void mai n()int a10,i,j,temp, swap;for(i=0;i ai;for(i=0;i9;i+)swap = 1 ;for(j=0;jaj+1)swap = 0;temp = aj;aj = aj+1; aj+1 = temp;cout這時第i+1 趟: for(j=0;j10
12、;j+)coutaj;coute ndl;if(swap) break;數(shù)組使用舉例-約瑟夫問題設(shè)有門個人站成一圈每個人有不卮的編號i(仁i n),從編號為1的人開 始按順時針方向=2】4一循環(huán)攝數(shù)數(shù)到H1的人出列,然后從岀列者 的下一個人重新開始報數(shù),數(shù)到m的人又出列,如此重復(fù)進行直到口個 人都出列為1L約彗夫問題是:對于任意給定的門個人的原始排列II頁序和m值,求岀n個 人的出列順序.Word文檔算法:引入數(shù)組P將 n個人的編號按其原始排列順序存入數(shù)組元素POPn-1中。從編號為1的人開始循環(huán)報數(shù),數(shù)到m的人,假定其在數(shù)組中的下標(biāo)為t,就輸出Pt,并將它從數(shù)組中刪除,將Pt后面的元素依次向
13、左移動一個位置。刪除一個元素后,由于它后面的元素都左移了一個位置,因此,每次報數(shù)的起始位置就是上次報數(shù)的出列位置。假設(shè)當(dāng)前 數(shù)組元素個數(shù)為i,上次出列位置為t,則本次出列位置就是(t+m-1)%i 。代碼如下:#include const int n = 8;void main()int Pn;int m = 4;int i,j,t;for(i = 0;i=1;i-)t = (t+m-1)%i; coutPt ;for(j = t+1;j=i-1;j+)Pj-1 = Pj;coutendl;第六章函數(shù)閏年的條件 : 能被 4整除,但不能被 100整除的年份都是閏年 ;能被 400整除的年份都是
14、閏年; 代碼: if(year%4=0&year%100!=0|year%400=0)調(diào)用函數(shù)前先要聲明局部變量| 局部變量是定義在函數(shù)內(nèi)或塊內(nèi)的變量”只在本函數(shù)內(nèi)或塊內(nèi)有效 |&濟冊解冊存濟理廊加M加如加加加如f他他搟剛刖冊砂存處彩伽加處加加加專加如入局部變量在程序運行到它所在的函數(shù)或塊時建立*該函數(shù)或塊執(zhí)行完 畢,局部變量占有的空間即被輕放局部變量在走義時若未被初始化,負(fù)值為隨機數(shù)程序中使用的絕大多數(shù)變量都是局卽變量代碼區(qū):存放程序的代碼,即程序中的各個函數(shù)代碼塊全局?jǐn)?shù)據(jù)區(qū):存放程序的全局?jǐn)?shù)據(jù)和靜態(tài)數(shù)據(jù)堆區(qū):存放程序的動態(tài)數(shù)據(jù)棧區(qū):存放程序的局部數(shù)據(jù),即各個函數(shù)中的數(shù)據(jù)所有靜態(tài)變量存放在全
15、局?jǐn)?shù)據(jù)區(qū),編譯時獲得存儲空間,未初始化時自動全0,且只初始化一次。局部靜態(tài)變量的作用域為塊域,但生命期為整個文件雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其它函數(shù)不能引用。一個全局變量和一個靜態(tài)全局變量在使用上是不同的,其它文件通過外部變量聲明可使用一個全局變量,但卻無法使 用靜態(tài)全局變量,靜態(tài)全局變量只能被定義它的文件所獨享函數(shù)遞歸調(diào)用:#in elude int fact(i nt n)int fn;if(n=0) fn = 1;else fn = n *fac( n-1);return fn;用遞歸法求Fibonacci :long Fib on acci (int n)if(n =2
16、)return 1;elseretur n Fib on acc i(n-1)+Fib on acc i(n-2);定義重載函數(shù)時必須保證參數(shù)類型不同,僅僅返回值類型不同是不行的。Word文檔第七章指針數(shù)組名代表的是數(shù)組的起始地址,是一個常量,而不是指針變量,在程序中是不能改變的。隨機產(chǎn)生一百以內(nèi)的數(shù):ai = ran d()%100;對于二維數(shù)組a,雖然a和a0都是地址而且值相同,但意義不同;a是指向行(數(shù)組)的,一維數(shù)組名a0是指向列(元素)的。在指向行的指針前加一個*,就轉(zhuǎn)換成指向列的指針;反之,在指向列的指針前加一個&,就稱為指向行的指針維數(shù)組的列指針指向具體元素的捋針,又稱一級指針,
17、具定義和一股扌希變量的定義一樣。iiiuaani lignin mi inainii iiiuami iimfiiii ihi jii m inuami imtim rai mi iim inuami imriin mi urn iiiKaani imniii mi wumami lignin mi mi w innami iimnin| include ciostream.j| include Hntmainf)i int fcaP1r = a; X疑問:例:一個班有日個學(xué)生各學(xué)b門課,分另町算每個學(xué)生和毎 門課的平均成績.IH-iill mi lllb-Hli IH-i Illi nili
18、ii + illli-!llii-!illi-iil li-H Illi-rill IHsi ilil rril lii + iilli-liiiil-iillirtliilri iliiill IfrH Illi i-ril lif-r :illi-liliil-!illir4lliar-Hllli*iil IIH illi-ril lilr-iili iT I lid-sillilil e1 ilir-iill ir-i Ilil-riillirfeiilir-illli-iillir-BIIIilil-Hil li-include iastream.h? cor st int A = 3
19、+1 const int 3 = &+1void studentAverage(int b,float *p) inllj, float total;void main()static float scoreA|B=100 60 7C.81 52 6271.83 92.98 90 70.50 60.40: vad studentAveragefint a,int Afloat *p);vad cour&eAveragefint a.mt b.float (xp)6 j;total = 0fcrrj=C jbj+ p+4itotal = total+1fcp = totai/b;P+
20、;stud en tAvera ge(A-1n6-1.sc ore0). cOLit,hAYerage of students is nk for(inf i=0:iA-1;H+)匚 out Student lp isc oreiB-1 endl:coLitendivoid tourseAverage(int a int b.nciat (*p)6 (inti J;float total:for(j=0;Jb,j4-+)c ourseAverage(Ai B1 score); cout,FAverage of courses is:rT fori=0;iB-1li+)c out C ourse
21、 piore f-1 i endl:total = 0: ror(i=Ojj);T (尸iHD = tQtal/耳 wiwr.injfe 岸 ducr有關(guān)字符串判斷是否結(jié)束的語法:#in elude void strCopy(char *dest,char *source)while(*source!=0)這句話等號后面的0也可換做【0】或者【NULL】*dest = *source;source+;dest+;*dest = 0; void mai n()char a20,*strPtr = I am a stude nt.; strCopy(a,strPtr);coutae ndl;cha
22、r *name 與 char *name 20不同:char *name 20是二維字符數(shù)組,在內(nèi)存中連續(xù)存放;char *n ame是一個指向字符串的指針數(shù)組,并未定義行的長度,各行之間也不一定連續(xù)存放,只是分別在內(nèi)存 中存儲了長度不等的字符串,然后用指針數(shù)組中的指針元素分別指向它們int *pf(i nt, i nt);返回一個指向整型的指針。函數(shù)指針的定義和使用類型標(biāo)識符(*指針變量明)(函數(shù)參數(shù)表)int max(int,int); / 說明函數(shù) maxint (*fp)(int,int);/定義函數(shù)指針,指向有兩整型參數(shù)和返回值為整型的函數(shù)fp = max;/將函數(shù)max的入口地址賦
23、給 fp,fp和max都指向函數(shù)入口說明:函數(shù)指針指向程序代碼區(qū),一般數(shù)據(jù)變量指針指向數(shù)據(jù)區(qū)函數(shù)指針不能隨意指向任何一個函數(shù),只能指向與其定義一致的函數(shù)在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)fp = max(a,b)語法錯誤!函數(shù)指針不能進行+,-, +,-等運算,因為在程序執(zhí)行階段函數(shù)代碼區(qū)不會變動函數(shù)指針作函數(shù)參數(shù)也血蠱謝如爰創(chuàng)占冊磁妙盤創(chuàng)毘勁勁妾創(chuàng)爰冊雜|int maxfint x,int y)include irit main,)修 retum(xy?x:y);int maxfininQminOntJnt),sum(i nt,i nt); void process(int(7p)(irrt,int)Jnt x,inty); int a,b;f int mirHint x,int y)return(xfield structure_po in ter-field (*structure_poi nter).field對于組合結(jié)構(gòu)體:m.se nder. name(&m)-se nder. n
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 理發(fā)店聘用發(fā)型師勞動合同(3篇)
- 開發(fā)商發(fā)包合同范本
- 裝修插座合同范本
- 自來水管材料購買合同范本
- 《會計學(xué)原理》練習(xí)題及參考答案(一)
- 《環(huán)境影響評價》第一章 環(huán)境影響評價的概念課堂講義
- 合同范本 文化
- 《人力資源考證輔導(dǎo)》教案(理論)
- 年金險合同范本
- 開汽車美容店合同范本
- 藍色簡約風(fēng)中國空軍成立75周年紀(jì)念日
- 2024年全國企業(yè)員工全面質(zhì)量管理知識競賽題庫(含答案)(共132題)
- 知識創(chuàng)業(yè)思維與方法智慧樹知到答案2024年湖南師范大學(xué)
- 無人機全行業(yè)保險
- 2023年廣東省建筑設(shè)計研究院校園招聘筆試參考題庫附帶答案詳解
- 野生動物管理學(xué)智慧樹知到答案章節(jié)測試2023年東北林業(yè)大學(xué)
- 員工人事檔案目錄
- 迅達SWE30-100K自動扶梯電路分析_圖文
- 國家電網(wǎng)有限公司電網(wǎng)建設(shè)項目檔案管理辦法
- 鈑金與焊接工藝規(guī)范
- 醫(yī)療設(shè)備項目建議書【范文】
評論
0/150
提交評論