C語(yǔ)言學(xué)習(xí)教程_第1頁(yè)
C語(yǔ)言學(xué)習(xí)教程_第2頁(yè)
C語(yǔ)言學(xué)習(xí)教程_第3頁(yè)
C語(yǔ)言學(xué)習(xí)教程_第4頁(yè)
C語(yǔ)言學(xué)習(xí)教程_第5頁(yè)
已閱讀5頁(yè),還剩93頁(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、C語(yǔ)言學(xué)習(xí)教程.txt43風(fēng)帆,不掛在桅桿上,是一塊無(wú)用的布;桅桿,不掛上風(fēng)帆,是一根平常的柱;理想,不付諸行動(dòng)是虛無(wú)縹緲的霧;行動(dòng),而沒有理想,是徒走沒有盡頭的路。44成功的門往往虛掩著,只要你勇敢去推,它就會(huì)豁然洞開。C語(yǔ)言學(xué)習(xí)教程 多數(shù)情況下,現(xiàn)在的編程高手都是從學(xué)習(xí)C 語(yǔ)言入門的,在學(xué)校里,計(jì)算機(jī)相關(guān)專業(yè)中最基礎(chǔ)的課程也包括C 語(yǔ)言,因此,掌握好這門課程對(duì)每一位立志成為優(yōu)秀程序員的初學(xué)者來(lái)說(shuō)是大有裨益的!另外,對(duì)想通過(guò)參加全國(guó)計(jì)算機(jī)等級(jí)考試獲得證書的同學(xué)來(lái)說(shuō),學(xué)好C 語(yǔ)言也非常關(guān)鍵。 下面,是我整理出來(lái)的若干文章,總體上按照三個(gè)大的方向進(jìn)行分類,希望能好好閱讀,相信對(duì)你是很有幫助的!一

2、、基礎(chǔ)性問(wèn)題(點(diǎn)擊下面文字鏈接即可打開頁(yè)面) 1、C語(yǔ)言學(xué)習(xí):如何由dos向windows轉(zhuǎn)變 2、二級(jí)C語(yǔ)言實(shí)例解答 3、等級(jí)考試:C 程序設(shè)計(jì) 4、備戰(zhàn)C語(yǔ)言上機(jī)考試 5、C語(yǔ)言程序設(shè)計(jì)技巧 6、C語(yǔ)言初級(jí)講座 7、寫好C程序的10條秘籍 8、強(qiáng)大的語(yǔ)言C入門之一 9、強(qiáng)大的語(yǔ)言C入門之二 二、實(shí)例開發(fā)(點(diǎn)擊下面文字鏈接即可打開頁(yè)面) 1、用C語(yǔ)言解決鬼谷算題 2、用C語(yǔ)言實(shí)現(xiàn)的鬧鐘程序 3、C 程序開發(fā)經(jīng)典實(shí)例之一 4、C 程序開發(fā)經(jīng)典實(shí)例之二 5、C 程序開發(fā)經(jīng)典實(shí)例之三 6、C 程序開發(fā)經(jīng)典實(shí)例之四 7、C 程序開發(fā)經(jīng)典實(shí)例之五 8、C 程序開發(fā)經(jīng)典實(shí)例之六 9、C 程序開發(fā)經(jīng)典實(shí)例

3、之七 10、C 程序開發(fā)經(jīng)典實(shí)例之八 三、綜合提升(點(diǎn)擊下面文字鏈接即可打開頁(yè)面) 1、C語(yǔ)言:黑客學(xué)員必修課之一 2、C語(yǔ)言:黑客學(xué)員必修課之二 3、C 程序設(shè)計(jì)基礎(chǔ)之一 4、C 程序設(shè)計(jì)基礎(chǔ)之二 5、C 程序設(shè)計(jì)基礎(chǔ)之三 6、C 程序設(shè)計(jì)基礎(chǔ)之四 7、C 程序設(shè)計(jì)基礎(chǔ)之五 8、C 程序設(shè)計(jì)基礎(chǔ)之六 9、C語(yǔ)言高效編程的的四大絕招(1) 10、C語(yǔ)言高效編程的的四大絕招(2)C語(yǔ)言學(xué)習(xí):如何由dos向windows轉(zhuǎn)變很多人學(xué)C語(yǔ)言很長(zhǎng)一段時(shí)間了,還不知C究竟能干什么,以為學(xué)習(xí)c語(yǔ)言沒什么用,純粹是為了應(yīng)付學(xué)校的考試.更有人說(shuō)學(xué)C語(yǔ)言?別做如此愚蠢的行為了!趕快學(xué)C+吧!這種看法是不對(duì)的,不

4、應(yīng)該把c跟c+之間劃起絕對(duì)的界限,過(guò)分看重c+而把c貶得一無(wú)是處,這是很片面的.C+功能雖然強(qiáng)大,但它畢竟是c的超集,在c+里有哪一處找不到c的影子呢?沒有c的支持,c+只能是無(wú)本之木。 一般情況下,c+編程方式編寫的程序源代碼量小,但編譯后的代碼量較大,運(yùn)行的速度略低,不過(guò)開發(fā)時(shí)的工作量和工作難度較小;而c編程方式編寫的源代碼量較大,但可執(zhí)行的效率高.如果一些對(duì)速度要求高,尤其是對(duì)硬件操作較多的程序,大多數(shù)還是用c編程方式開發(fā)的(用C又比用匯編簡(jiǎn)單,易于實(shí)現(xiàn)).另外,學(xué)Win32 C程序設(shè)計(jì)還有助于更深入地了解Windows 的內(nèi)幕和Win32 API。任何的編程語(yǔ)言都是一種工具,學(xué)習(xí)語(yǔ)言的

5、目是要使用它來(lái)編寫出實(shí)際需要的軟件來(lái),而軟件作為一個(gè)用戶程序,運(yùn)行時(shí)要依賴操作系統(tǒng),大多數(shù)人使用什么操作系統(tǒng),我們就要編寫出基于哪一種平臺(tái)上的程序來(lái).這樣,軟件才會(huì)有更大的市場(chǎng)。現(xiàn)在市面上出現(xiàn)的有關(guān)c語(yǔ)言方面的書大多是教授DOS下的c,上機(jī)實(shí)習(xí)也是在Turbo C 2.0(簡(jiǎn)稱Tc)環(huán)境下轉(zhuǎn)來(lái)轉(zhuǎn)去.編程環(huán)境的單調(diào)總使人感到不爽.這也沒辦法,dos 下的c是最簡(jiǎn)單的,初學(xué)者當(dāng)然要從最簡(jiǎn)單的入門啦.連比較有名的計(jì)算機(jī)專家譚浩強(qiáng)編的書也都是贊成從dos下的c學(xué)起的.再說(shuō),一個(gè)剛剛?cè)腴T的人想在windows 這樣的多進(jìn)程,多線程的操作系統(tǒng)下用c編程,那似乎又不太現(xiàn)實(shí).(那要了解在windows下,一個(gè)

6、win32程序大體上是怎樣執(zhí)行的.要對(duì)系統(tǒng)有比較多的了解才行,一個(gè)初學(xué)者暫時(shí)還不具備那么多的知識(shí))但我們的腳步又不能夠只停留在dos里,應(yīng)該積極地從dos向windows轉(zhuǎn)變.在dos的時(shí)代,我們可以對(duì)dos下的編程迷戀,但現(xiàn)在都是windows橫行霸道的時(shí)代了,我們就應(yīng)用c語(yǔ)言編寫windows平臺(tái)上的程序,因時(shí)而變,學(xué)以致用.是時(shí)代使然!如果現(xiàn)在還是dos雄霸天下的話,那我就不會(huì)寫這篇狗屁不通的文章來(lái)遺笑大方了,不被臭雞蛋扔死才怪呢! 變法是大勢(shì)所趨的了,關(guān)鍵是怎么變,不單單是學(xué)習(xí)c語(yǔ)言的人如此,就連學(xué)c+的人都這樣,筆者曾經(jīng)在QQ上碰到一個(gè)學(xué)了c+將近一年的小伙,居然問(wèn)我,他想編一個(gè)wi

7、ndows窗口,該怎么下手,如果學(xué)一門語(yǔ)言用了一年時(shí)間,只是學(xué)了一點(diǎn)語(yǔ)法知識(shí),卻沒有編過(guò)一道程序,那實(shí)在是一種悲哀.下面我談?wù)剰膁os向windows轉(zhuǎn)變的一些個(gè)人見解,(這純屬個(gè)人觀點(diǎn),僅供參考,如果您已是高手,完全不必要在此浪費(fèi)時(shí)間):一.拓寬視野,改變偏見別老以為c只是dos特有的東西,一提到c語(yǔ)言就認(rèn)為c只能在dos下編程.其實(shí),這是被tc束縛了意識(shí),我們?cè)趯W(xué)校里平時(shí)就只在dos的tc里面用c編程,很少用到圖形模式,整天面對(duì)?quot;烏黑黑的屏幕,也難怪有些人一看到一個(gè)用c語(yǔ)言描繪出來(lái)的像windows的窗口便以為是c+的手筆.其實(shí),作為一種語(yǔ)言,可以在任何一種平臺(tái)上編程,只是接口不

8、同而已,只要找到適合該平臺(tái)的編程工具即可,c語(yǔ)言當(dāng)然也能在windows下大放異彩.眼界放寬點(diǎn),改變偏見,必有精彩發(fā)現(xiàn). 二.選擇優(yōu)秀的編程工具.“有好的工具,做起事來(lái)就事半功倍”.在dos下我們常用tc或bc(borland c).在windows下可以用c+builder 或者visual c+ 來(lái)編程,最好用visual c+ 畢竟是微軟的東西嘛!微軟一天不垮臺(tái),編程者的飯碗就不會(huì)掉的啦 _ .再說(shuō),windows操作系統(tǒng)是微軟出的,其內(nèi)幕微軟是最清楚不過(guò)的了,在應(yīng)用程序接口上,相信vc也是做得最好的.不過(guò)用vc+6來(lái)編c程序會(huì)恨煩的,大家要有心理準(zhǔn)備.同時(shí)可以選擇多種編程工具,例如匯編

9、,可以加強(qiáng)對(duì)windows的了解,是成為高手的好方法。三.加強(qiáng)對(duì)windows的了解.可以說(shuō)編一個(gè)程序,就是用一種語(yǔ)言的語(yǔ)法形式將數(shù)據(jù)結(jié)構(gòu)和表面的執(zhí)行過(guò)程描述出來(lái).在不同的操作系統(tǒng)下,其程序的執(zhí)行過(guò)程是不同的.我們應(yīng)該對(duì)windows的系統(tǒng)機(jī)制最起碼有個(gè)大體的了解,才有可能編寫windows的程序.dos是單進(jìn)程單線程的系統(tǒng),進(jìn)程從頭到尾的順序執(zhí)行,而windows是多進(jìn)程、多線程的操作系統(tǒng),是基于事件的,消息驅(qū)動(dòng)的操作系統(tǒng).明白這些是在windows下編程必不可少的,多學(xué)學(xué)它,你會(huì)發(fā)現(xiàn)windows 和 dos有很多的不同之處。 四.采取靈活多變的學(xué)習(xí)方法.在不同的時(shí)期,學(xué)習(xí)不同的東西?可是

10、有些人學(xué)習(xí)像word,excel這類操作性極強(qiáng)的辦公軟件時(shí),總是先看書,看到尾巴忘了頭,到上機(jī)時(shí)卻不知所措.這種學(xué)習(xí)方式是被動(dòng)的,看這些軟件操作的書,里面說(shuō)的都是具體的操作,不親手又怎能接受新知識(shí)?五.多進(jìn)行比較.dos和windows有許多共同和不同的地方,如果是從dos學(xué)過(guò)來(lái)的話,在學(xué)習(xí)過(guò)程中不妨多進(jìn)行比較,把不同的地方記下,相同的地方可以跳過(guò),這可以快速地了解系統(tǒng)的不同之處,迅速地學(xué)到東西! 學(xué)習(xí)程序設(shè)計(jì),我主張實(shí)踐-理論-再實(shí)踐的方式,在編程的初期,不管你會(huì)不會(huì)寫程序,都應(yīng)先實(shí)踐,(這里的實(shí)踐是指編程工具操作方面的實(shí)踐),學(xué)會(huì)操作編程工具.也許有些人會(huì)說(shuō):廢話!沒有理論,又怎么實(shí)踐?不

11、錯(cuò),當(dāng)你坐在一臺(tái)電腦面前不知所措時(shí),你就會(huì)想方設(shè)法使自己學(xué)會(huì)操作它,主動(dòng)看書,看聯(lián)機(jī)幫助,請(qǐng)教別人,忙得個(gè)不亦樂乎,這不是變被動(dòng)為主動(dòng)了嗎? 邊學(xué)習(xí)邊操作,以實(shí)踐來(lái)帶動(dòng)理論的學(xué)習(xí),接著達(dá)到理論與實(shí)踐同步,就可闖過(guò)第一關(guān),學(xué)會(huì)了編程工具的基本操作,可以為以后上機(jī)實(shí)踐打下鋪墊.光學(xué)會(huì)操作像vc這類的工具還不行,工具是死的,人才是活的,不會(huì)編程只能是空操作,你還會(huì)說(shuō):廢話!沒有理論,怎么實(shí)踐?的,這時(shí)就要學(xué)習(xí)編程的真功夫了,也就是我說(shuō)的第二階段-學(xué)理論階段,深入研究前輩們的著作,吸取前人的智慧精華為我所用,扎扎實(shí)實(shí)打好編程內(nèi)功,功夫到家了就應(yīng)該再實(shí)踐,將學(xué)到的東西運(yùn)用于實(shí)際,編寫出我們需要的軟件來(lái).

12、學(xué)以致用嘛,呵呵這種方式總比先學(xué)好語(yǔ)法的條條框框,再上機(jī)實(shí)踐的效果好得多啦.關(guān)于向windows轉(zhuǎn)變的個(gè)人觀點(diǎn)就只談這些,希望初學(xué)者早日踏上windows的光明大道!由于我也是一個(gè)菜鳥,水平有限,寫得不好,還請(qǐng)各位多多包涵!二級(jí)C語(yǔ)言實(shí)例解答 C語(yǔ)言牽涉的概念比較復(fù)雜,規(guī)范繁多,使用靈活,容易出錯(cuò),不少初學(xué)者感到困難,下面通過(guò)幾個(gè)實(shí)例的分析來(lái)說(shuō)明c語(yǔ)言學(xué)習(xí)中容易混淆的幾個(gè)問(wèn)題,以期拋磚引玉,對(duì)初學(xué)者有所幫助。 問(wèn)題1:下面的程序 int a=3,b=4;char str=c;printf(“%d,%d”,a,b,str); 執(zhí)行后, 輸出結(jié)果為:(A)3,4,c (B)3 4 c (C)3,4

13、 (D)程序出錯(cuò) 分析:在格式輸出時(shí)一般要求格式說(shuō)明符與輸出項(xiàng)相一致,當(dāng)輸出項(xiàng)多余格式說(shuō)明符時(shí)多余的輸出項(xiàng)不輸出,所以答案為C。 問(wèn)題2:有下面的程序段 char a3,b=“china”;a=b;printf(“%s”,a); 則輸出結(jié)果為:(A)運(yùn)行后輸出china (B)運(yùn)行后輸出ch (C) 運(yùn)行后輸出chi (D)編譯出錯(cuò) 分析:這個(gè)題容易錯(cuò)選a?實(shí)際答案為d,由于定義了字符數(shù)組后,數(shù)組名作為數(shù)組的首地址,是一個(gè)常量,給一個(gè)常量賦值的語(yǔ)句是錯(cuò)誤的,換句話說(shuō),不能用賦值語(yǔ)句將一個(gè)字符常量或字符數(shù)組直接賦值給一個(gè)字符數(shù)組,以答案選D。 問(wèn)題3:下列說(shuō)明不正確的是: (A)char a10

14、=“china” (B)char a10,?p=a;p=“china” (C)char ?p;p=“china”(D)char a10,?p;p=a=“china”; 分析:此題易知A是正確的,D是錯(cuò)誤的,對(duì)于B、C就很難選擇了。有人認(rèn)為p是一個(gè)字符變量,以為把”china”賦給該字符變量是不對(duì)的,實(shí)際上它是一個(gè)指針變量,只能指向一個(gè)字符變量或其他字符類型數(shù)據(jù),不是把”china”存放到p中(指針變量只存放地址),只是把“china”的首地址賦給指針變量 p,所以B,C也是正確的。 問(wèn)題4:下面的程序執(zhí)行結(jié)果是: main()int x5=2,4,6,8,10,?p?pp;p=x;pp=&p;

15、printf(“%d”,?(p+);printf(“%dn”,?pp); (A)4 4 (B)2 4 (C)2 2 (D)4 6 分析:在此題中p是后加方式,先輸出?p的值,p再自加,pp是二級(jí)指針,指向一級(jí)指針p,執(zhí)行第一條輸出語(yǔ)句前后,存在下列指向關(guān)系: 所以本題應(yīng)選b 問(wèn)題5:下列輸出語(yǔ)句執(zhí)行后結(jié)果為: int i=3;printf(“%d”,-i+); (A)3 (B)4 (C)-3 (D)-4 分析:此題考查運(yùn)算符的優(yōu)先級(jí),負(fù)號(hào)運(yùn)算符和運(yùn)算符同優(yōu)先級(jí),而結(jié)合方向?yàn)椤白宰笾劣摇?,即i相當(dāng)于?i?,所以先取出i的值3,輸出i的值3,然后i增值為4,而不是i先增值為4,然后輸出4,所以答案

16、選擇C。 問(wèn)題6:設(shè)有以下語(yǔ)句, struct stint n;struct st ?next;static struct st a3=5,&a1,7,&a2,9,0,?p; 則以下表達(dá)式的值為6的是:(A)p+n (B)pn+ (C)(?p).n+ (D)+pn 分析:此題也是考查運(yùn)算符的優(yōu)先級(jí),優(yōu)先級(jí)高于,結(jié)合方向?yàn)樽宰笾劣?,而后者結(jié)合方向?yàn)樽杂抑磷螅珹答案相當(dāng)于?p?n?B答案相當(dāng)于?pn?所以A、B、C表達(dá)式值均為5,D答案相當(dāng)于?pn?自加方式為前加方式,所以其值為6。 上面是我在教學(xué)過(guò)程中學(xué)生一些比較集中的問(wèn)題,只要認(rèn)真的體會(huì)和總結(jié),加強(qiáng)上機(jī)實(shí)踐,對(duì)自己C語(yǔ)言的學(xué)習(xí)會(huì)大有裨益。等級(jí)

17、考試:C 程序設(shè)計(jì)計(jì)算機(jī)等級(jí)考試改革后,三級(jí)考試由A、B兩類改為PC技術(shù)、數(shù)據(jù)庫(kù)技術(shù)、網(wǎng)絡(luò)技術(shù)、信息管理技術(shù)四類。其后三類的上機(jī)考試內(nèi)容均為C語(yǔ)言程序設(shè)計(jì)。三級(jí)上機(jī)不同于二級(jí),它只有一道編程題,風(fēng)險(xiǎn)更大。但只要能達(dá)到題目的要求,一般都能拿到3分。 參加過(guò)考試的人都應(yīng)該知道一本書南開大學(xué)出版的全國(guó)計(jì)算機(jī)等級(jí)考試?上機(jī)考試習(xí)題集,這本書基本上包含了所有的上機(jī)考試題目類型。這本書里一共有100道題,都很經(jīng)典。但也許有人會(huì)覺得太多了,沒時(shí)間看完所有的題目。下面我給大家介紹一個(gè)復(fù)習(xí)技巧。簡(jiǎn)化問(wèn)題每道試題的程序都很長(zhǎng),而且涉及的知識(shí)點(diǎn)很多。實(shí)際上,在考試時(shí)看完全部程序并沒有必要。每次只用把主要精力放在子程

18、序的編制上,認(rèn)真思考其“功能要求”。所以平時(shí)我們只用關(guān)注需要編制的子程序。試題歸類要學(xué)會(huì)找出題目之間的規(guī)律,復(fù)習(xí)起來(lái)就會(huì)事半功倍。在一百道題目中,實(shí)際上只需要仔細(xì)分析其中的二十多道題就足夠了,其他的只用看一下就行。因?yàn)榇蟛糠值念}目都是類似的,總結(jié)出規(guī)律來(lái)之后,我們可以舉一反三。例如下面兩類題目:例1. (占題庫(kù)10%)已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱mc(字符型10位)、單價(jià)dj(整型)、數(shù)量sl(整型)、金額je(長(zhǎng)整型)幾部分組成。其中:金額單價(jià)數(shù)量可計(jì)算得出。函數(shù)ReadDat()的功能是讀取這100個(gè)銷售記錄并存入

19、結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從大到小進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT10.DAT中。程序:void SortDat( )int I,J;PRO xy;for (I=0;I100;I+)if (strcmp(sellI.dm,sellJ.dm)sellJ.je)改為:else if (sellI.je= =sellJ.je)改為:if (strcmp(sellI.mc,sellJ.mc)130|*pf*11%256=A&*pf=Z)|*pf*

20、11%256=1)printf(s ,argvI);argc; 命令行參數(shù)用的最多還是在諸如DIR A:等之類帶有盤符、路徑或文件名這樣的命令行中,所以說(shuō)靈活處理這一類參數(shù)才能有效地提高程序的運(yùn)行效果。譬如DIR命令,其后可以是盤符,可以是路徑,也可以是文件名,如何區(qū)分這一參數(shù)呢?請(qǐng)看下例(此程序模擬DIR命令,程序要求在命令行輸入一個(gè)參數(shù):盤符或路徑或文件名,若無(wú)參數(shù)或參數(shù)多于一個(gè)都將取默認(rèn)的參數(shù)“*.*”)。*功能:模擬DIR命令進(jìn)行處理命令行參數(shù)*/includeincludeincludeinchludeint j,num=0;char ss20,path50,path250;void

21、 main (int argc,char *argv)struct ffblk f;int done;if(argc=2) /*取命令行參數(shù)到數(shù)組中*/ strcpy(ss,argv1);elsestrcpy(ss,*.*); /*給數(shù)組賦值缺省參數(shù)*/if (ssstrlen(ss)1=|(ssstrlen(ss)1=:)strcat(ss,*.*); /*若參數(shù)為路徑或盤符,則加上*.*/getcwd(path1,50); /*取當(dāng)前路徑*/if (chdir(ss)=0) /*判斷參數(shù)是否為路徑*/strcat(ss,*.*); /*若路徑末沒有帶,則加上*.* */ chdir(pat

22、h1); /*恢復(fù)原來(lái)路徑*/strcpy(path2,ss);for(j=strlen(path2);j0;j)/*提取參數(shù)中的路徑到path2 */if(path2j=)|(path2j=:)path2j1=0;goto senull;path20=0;senull:if(strlen(path2)=0) /* 若給出的參數(shù)中沒帶路徑,則取當(dāng)前路徑*/strcpy(path2,path1);printf(n*模擬DIR*n 命令目錄路徑s,path2);done=findfirst(ss,f,55); /*查找第一個(gè)配匹的文件*/j=1;while(!done)if (f.ff_attri

23、b!=0x10) /* 若文件屬性不是目錄 */printf(n 15s 20ld,f.ff_name,f.ff_fsize);elseprintf(n 11s ,f.ff_name);num;j;if(j=23)printf(n More (按任意鍵繼續(xù));getch();j=0;printf(n (目錄路徑s),path2);done=findnext(f); /*查找下一個(gè)配匹的文件*/printf(n 當(dāng)前目錄中總共有d個(gè)文件.n,num); C語(yǔ)言初級(jí)講座我們已經(jīng)看到程序中使用的各種變量都應(yīng)預(yù)先加以說(shuō)明,即先說(shuō)明,后使用。對(duì)變量的說(shuō)明可以包括三個(gè)方面:?數(shù)據(jù)類型?存儲(chǔ)類型?作用域在本

24、講中,我們只介紹數(shù)據(jù)類型說(shuō)明。其它說(shuō)明在以后陸續(xù)介紹。所謂數(shù)據(jù)類型是按被說(shuō)明量的性質(zhì),表示形式,占據(jù)存儲(chǔ)空間的多少,構(gòu)造特點(diǎn)來(lái)劃分的。在語(yǔ)言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類。 1.基本數(shù)據(jù)類型基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型。也就是說(shuō),基本數(shù)據(jù)類型是自我說(shuō)明的。2.構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來(lái)定義的。也就是說(shuō),一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。在C語(yǔ)言中,構(gòu)造類型有以下幾種: ?數(shù)組類型?結(jié)構(gòu)類型?聯(lián)合類型3.指針類型指針是

25、一種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類型。其值用來(lái)表示某個(gè)量在內(nèi)存儲(chǔ)器中的地址。雖然指針變量的取值類似于整型量,但這是兩個(gè)類型完全不同的量,因此不能混為一談。4.空類型在調(diào)用函數(shù)值時(shí),通常應(yīng)向調(diào)用者返回一個(gè)函數(shù)值。這個(gè)返回的函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)說(shuō)明中給以說(shuō)明,例如在例題中給出的max函數(shù)定義中,函數(shù)頭為: int max(int a,int b);其中“int ”類型說(shuō)明符即表示該函數(shù)的返回值為整型量。又如在例題中,使用了庫(kù)函數(shù) sin,由于系統(tǒng)規(guī)定其函數(shù)返回值為雙精度浮點(diǎn)型,因此在賦值語(yǔ)句s=sin (x);中,s 也必須是雙精度浮點(diǎn)型,以便與sin函數(shù)的返回值

26、一致。所以在說(shuō)明部分,把s說(shuō)明為雙精度浮點(diǎn)型。但是,也有一類函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值, 這種函數(shù)可以定義為“空類型”。其類型說(shuō)明符為void。在本講中,我們先介紹基本數(shù)據(jù)類型中的整型、浮點(diǎn)型和字符型。其余類型在以后各講中陸續(xù)介紹。對(duì)于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量?jī)煞N。在程序執(zhí)行過(guò)程中,其值不發(fā)生改變的量稱為常量,取值可變的量稱為變量。它們可與數(shù)據(jù)類型結(jié)合起來(lái)分類。例如,可分為整型常量、整型變量、浮點(diǎn)常量、浮點(diǎn)變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經(jīng)說(shuō)明而直接引用的,而變量則必須先說(shuō)明后使用。整型量整型量包括整型常量、整型變量。整

27、型常量就是整常數(shù)。在C語(yǔ)言中,使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。整型常量1.八進(jìn)制整常數(shù)八進(jìn)制整常數(shù)必須以0開頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為07。八進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù)。以下各數(shù)是合法的八進(jìn)制數(shù): 015(十進(jìn)制為13)0101(十進(jìn)制為65)(十進(jìn)制為65535)以下各數(shù)不是合法的八進(jìn)制數(shù): 256(無(wú)前綴0) 03A2(包含了非八進(jìn)制數(shù)碼)-0127(出現(xiàn)了負(fù)號(hào))2.十六進(jìn)制整常數(shù)十六進(jìn)制整常數(shù)的前綴為0X或0x。其數(shù)碼取值為09,AF或af。以下各數(shù)是合法的十六進(jìn)制整常數(shù):0X2A(十進(jìn)制為42)0XA0 (十進(jìn)制為160)0XFFFF (十進(jìn)制為65535)以下各數(shù)

28、不是合法的十六進(jìn)制整常數(shù): 5A (無(wú)前綴0X)0X3H (含有非十六進(jìn)制數(shù)碼)3.十進(jìn)制整常數(shù)十進(jìn)制整常數(shù)沒有前綴。其數(shù)碼為09。以下各數(shù)是合法的十進(jìn)制整常數(shù):237 -568 65535 1627以下各數(shù)不是合法的十進(jìn)制整常數(shù):023 (不能有前導(dǎo)0)23D (含有非十進(jìn)制數(shù)碼)在程序中是根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)的。因此在書寫常數(shù)時(shí)不要把前綴弄錯(cuò)造成結(jié)果不正確。4.整型常數(shù)的后綴在16位字長(zhǎng)的機(jī)器上,基本整型的長(zhǎng)度也為16位,因此表示的數(shù)的范圍也是有限定的。十進(jìn)制無(wú)符號(hào)整常數(shù)的范圍為065535,有符號(hào)數(shù)為-32768+32767。八進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為0。十六進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為

29、0X00XFFFF或0x00xFFFF。如果使用的數(shù)超過(guò)了上述范圍,就必須用長(zhǎng)整型數(shù)來(lái)表示。長(zhǎng)整型數(shù)是用后綴“L”或“l(fā)”來(lái)表示的。例如:十進(jìn)制長(zhǎng)整常數(shù) 158L (十進(jìn)制為158) L (十進(jìn)制為-)八進(jìn)制長(zhǎng)整常數(shù) 012L (十進(jìn)制為10) 077L (十進(jìn)制為63)L (十進(jìn)制為65536)十六進(jìn)制長(zhǎng)整常數(shù) 0X15L (十進(jìn)制為21) 0XA5L (十進(jìn)制為165)0X10000L (十進(jìn)制為65536)長(zhǎng)整數(shù)158L和基本整常數(shù)158 在數(shù)值上并無(wú)區(qū)別。但對(duì)158L,因?yàn)槭情L(zhǎng)整型量,編譯系統(tǒng)將為它分配4個(gè)字節(jié)存儲(chǔ)空間。而對(duì)158,因?yàn)槭腔菊?,只分? 個(gè)字節(jié)的存儲(chǔ)空間。因此在運(yùn)算

30、和輸出格式上要予以注意,避免出錯(cuò)。無(wú)符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為“U”或“u”。例如: 358u,0x38Au,235Lu 均為無(wú)符號(hào)數(shù)。前綴,后綴可同時(shí)使用以表示各種類型的數(shù)。如0XA5Lu表示十六進(jìn)制無(wú)符號(hào)長(zhǎng)整數(shù)A5,其十進(jìn)制為165。寫好C程序的10條秘籍神乎其技,惟C程序,功到自成,十大建議! 1、汝應(yīng)頻繁催動(dòng)lint工具,據(jù)其語(yǔ)法聲明修習(xí)內(nèi)力,此事皆因lint之思慮決斷實(shí)遠(yuǎn)在君上。 2、不可依隨NULL指針,如若不然,混沌癡顛必俟君于彼岸。 3、縱有天賦大智慧,知曉其事無(wú)礙,汝亦當(dāng)盡數(shù)強(qiáng)制挪移函數(shù)參數(shù)為原型所期之?dāng)?shù)據(jù)類型,以免一時(shí)疏忽,致使數(shù)據(jù)類型向汝討還血債。

31、4、若頭文件未于函數(shù)原型之中聲明返回值類型,汝當(dāng)親為此事,更須謹(jǐn)慎再三,以防不測(cè)降臨汝身。 5、汝須親核字符串、數(shù)組操作之越界與否。古之圣人有言: 嘗祈門人對(duì)答“然也”,不意門人答曰“吾了然于胸?zé)o須多慮盡請(qǐng)寬心他日趨庭必當(dāng)重謝”所期者短,所獲者長(zhǎng),此于數(shù)組,實(shí)最險(xiǎn)要處也。 6、若函數(shù)聲明內(nèi)提及,于異常時(shí)將返回錯(cuò)誤代碼云云,汝當(dāng)謹(jǐn)慎校核該返回值?;蛴行:苏Z(yǔ)句使汝之代碼增大數(shù)倍,令汝之手指因敲鍵而痛楚莫名之事,汝亦當(dāng)如此。不然,汝固以為此異常之事難得一見,上蒼亦必借此懲戒汝之傲慢。 7、汝應(yīng)研習(xí)庫(kù)函數(shù),不當(dāng)親筆重寫之。如是,汝之代碼必短小易讀,汝之心境必清爽恬淡。 8、縱汝不愿,汝亦應(yīng)借括號(hào)、縮進(jìn)

32、之屬,使汝之代碼間架清晰,可為后者借鑒。汝之大智慧施于決疑解難則可,施于敷設(shè)謎團(tuán)、淆亂文體則萬(wàn)萬(wàn)不可。 9、外部標(biāo)識(shí)符之前六字符當(dāng)與眾不同。此律法看似粗陋,和者寥寥,然其效用自能延續(xù)永遠(yuǎn)。汝若不從此言,他日,汝欲連接程序于舊作之上時(shí),必抓耳撓腮、蓬頭垢面,狼狽之相盡現(xiàn)矣。 10、或有族類,大言炎炎,云“普天之下,莫非VAX”。于此等異端,汝當(dāng)摒棄之、斷絕之、遠(yuǎn)避之。更有異人,篤信魔道,以為縱汝所用電腦頻繁換代,汝之程序亦能長(zhǎng)久適用。汝亦不可與此類惡人來(lái)往,謹(jǐn)記謹(jǐn)記。 強(qiáng)大的語(yǔ)言C入門之一一、C語(yǔ)言的特點(diǎn) C 語(yǔ)言是美國(guó)的Dennis Ritchie在1972年設(shè)計(jì)發(fā)明的。它由早期的編程語(yǔ)言BC

33、PL( Basic Combined Programming Language) 發(fā)展演變而來(lái)。C 語(yǔ)言之所以發(fā)展迅速,成為最受歡迎的語(yǔ)言之一,主要因?yàn)樗哂袕?qiáng)大的功能。歸納起來(lái),C 語(yǔ)言具有下列特點(diǎn): 1C語(yǔ)言是“中級(jí)語(yǔ)言” 它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。 2C語(yǔ)言是結(jié)構(gòu)式語(yǔ)言 所謂結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。C 語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便地調(diào)用,并

34、具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。 3C語(yǔ)言功能齊全 C 語(yǔ)言具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C 語(yǔ)言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器,而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的。 4C語(yǔ)言適用范圍廣 C 語(yǔ)言還有一個(gè)突出的優(yōu)點(diǎn)就是適合多種操作系統(tǒng),如DOS、Windows、UNIX,也適用于多種機(jī)型。 二、C語(yǔ)言基礎(chǔ)介紹 隨著微型計(jì)算機(jī)的日益普及,出現(xiàn)了許多C 語(yǔ)言版本。由于沒有統(tǒng)一的標(biāo)準(zhǔn),使得這些C 語(yǔ)言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國(guó)國(guó)家標(biāo)準(zhǔn)研究所(ANSI)為C 語(yǔ)言制定了一套ANSI標(biāo)準(zhǔn)

35、,成為現(xiàn)行的C語(yǔ)言標(biāo)準(zhǔn)。而在這里我們將主要以美國(guó)Borland 公司的產(chǎn)品Turbo C2.0作為介紹對(duì)象,簡(jiǎn)要介紹一下C語(yǔ)言的基本知識(shí)。 1.數(shù)據(jù)類型 在C語(yǔ)言中,每個(gè)變量在使用之前必須定義其數(shù)據(jù)類型。Turbo C有以下幾種類型:整型(int)、浮點(diǎn)型(float)、字符型(char)、指針型()、無(wú)值型(void)以及結(jié)構(gòu)(struct)和聯(lián)合(union)。其中前五種是C語(yǔ)言的基本數(shù)據(jù)類型、后兩種數(shù)據(jù)類型(結(jié)構(gòu)和聯(lián)合)則是C語(yǔ)言的擴(kuò)展數(shù)據(jù)類型。 2.關(guān)鍵字和標(biāo)識(shí)符、運(yùn)算符 所謂關(guān)鍵字就是已被C語(yǔ)言本身使用、不能作其它用途的字。例如關(guān)鍵字else,就再不能用作變量名、函數(shù)名等。所謂標(biāo)識(shí)符

36、是指常量、變量、語(yǔ)句標(biāo)號(hào)以及用戶自定義函數(shù)的名稱。C標(biāo)識(shí)符的定義十分靈活。 C的運(yùn)算符非常豐富,主要分為三大類:算術(shù)運(yùn)算符、關(guān)系與邏輯運(yùn)算符、按位運(yùn)算符。 3.變量 C規(guī)定所有變量在使用前都必須加以說(shuō)明。一條變量說(shuō)明語(yǔ)句由數(shù)據(jù)類型和其后的一個(gè)或多個(gè)變量名組成,例如“int x”。變量可以在程序中三個(gè)地方說(shuō)明:函數(shù)內(nèi)部、函數(shù)的參數(shù)定義中或所有的函數(shù)外部。根據(jù)所定義位置的不同,變量可分為局部變量、形式參數(shù)和全程變量。C像其它高級(jí)語(yǔ)言一樣也使用數(shù)組變量。所謂數(shù)組就是指具有相同數(shù)據(jù)類型的變量集,并擁有共同的名字。數(shù)組中的每個(gè)特定元素都使用下標(biāo)來(lái)訪問(wèn)。 4控制流程語(yǔ)句 C提供了豐富、靈活的控制流程語(yǔ)句,

37、主要有:條件語(yǔ)句、循環(huán)語(yǔ)句和開關(guān)語(yǔ)句。條件語(yǔ)句的一般形式為ifelse。C提供三種基本的循環(huán)語(yǔ)句:for語(yǔ)句、while語(yǔ)句和dowhile語(yǔ)句。而在編寫程序時(shí),經(jīng)常會(huì)碰到按不同情況分轉(zhuǎn)的多路問(wèn)題, 這時(shí)可用嵌套ifelseif語(yǔ)句來(lái)實(shí)現(xiàn),但ifelseif語(yǔ)句使用不方便,并且容易出錯(cuò)。對(duì)這種情況,C提供了一個(gè)switch開關(guān)語(yǔ)句。 5指針(point) 學(xué)習(xí)C語(yǔ)言,指針是較難理解的一個(gè)概念。我們知道變量在計(jì)算機(jī)內(nèi)占有一塊存貯區(qū)域(也就是有一個(gè)“地址”),變量的值就存放在這塊區(qū)域之中,在計(jì)算機(jī)內(nèi)部,通過(guò)訪問(wèn)或修改這塊區(qū)域的內(nèi)容來(lái)訪問(wèn)或修改相應(yīng)的變量。C語(yǔ)言中,對(duì)于變量的訪問(wèn)形式之一,就是先求出

38、變量的地址,然后再通過(guò)地址對(duì)它進(jìn)行訪問(wèn),這就是指針及指針變量。指針變量的一般定義為“類型標(biāo)識(shí)符標(biāo)識(shí)符”,其中標(biāo)識(shí)符是指針變量的名字,標(biāo)識(shí)符前加了“”號(hào), 表示該變量是指針變量,而最前面的“類型標(biāo)識(shí)符”表示該指針變量所指向的變量的類型。一個(gè)指針變量只能指向同一種類型的變量,也就是說(shuō),我們不能定義一個(gè)指針變量,既能指向一整型變量又能指向雙精度變量。 三、C程序設(shè)計(jì)初步 C語(yǔ)言是一種中級(jí)語(yǔ)言,用戶用C語(yǔ)言編寫的程序稱為源程序,源程序文件的后綴一般必須為“.c”。計(jì)算機(jī)硬件不能直接執(zhí)行源程序,必須將源程序翻譯成二進(jìn)制目標(biāo)程序。翻譯工作是由編譯程序完成的,翻譯的過(guò)程稱為編譯,編譯的結(jié)果稱為目標(biāo)程序,目標(biāo)

39、程序文件后綴一般為“.OBJ”。程序翻譯成目標(biāo)程序后,便可進(jìn)行連接?!斑B接”的目的是使程序變成在計(jì)算機(jī)上可以執(zhí)行的最終形式。在這一階段,系統(tǒng)程序庫(kù)中的程序要與目標(biāo)程序連接,連接的結(jié)果稱為執(zhí)行程序,執(zhí)行程序文件名字一般以“.EXE”結(jié)尾。 正如所有利用計(jì)算機(jī)語(yǔ)言所編寫的的第一個(gè)程序一樣,下面,我們也試著建立一個(gè)名為“HELLO.C”的源程序,這個(gè)程序?qū)⒃谄聊簧厦娲蛴〕觥澳愫茫娔X報(bào)軟件世界!”這個(gè)短語(yǔ)。 通過(guò)鍵盤輸入程序: include main() printf(你好,電腦報(bào)軟件世界!n); 這個(gè)最簡(jiǎn)單的程序,也包括了C語(yǔ)言的一些基本的內(nèi)容,它有一個(gè)主函數(shù)main(),使用到了標(biāo)準(zhǔn)的輸出函數(shù)

40、printf(),同時(shí)為了能夠讓程序運(yùn)行時(shí)包含這個(gè)標(biāo)準(zhǔn)函數(shù),我們首先要在程序的最開始寫上include ,“stdio.h”是C語(yǔ)言提供的標(biāo)準(zhǔn)輸入輸出函數(shù)庫(kù)頭文件,我們可以直接引用里面的一些函數(shù),來(lái)完成我們所要實(shí)現(xiàn)的功能。 現(xiàn)在,讓我們來(lái)編譯、連接并運(yùn)行一下這個(gè)最簡(jiǎn)單的程序,我們將看到,在屏幕上打印出了“你好,電腦報(bào)軟件世界!” 四、參考資料 首先是一些C語(yǔ)言相關(guān)的書籍: C語(yǔ)言譚浩強(qiáng),C語(yǔ)言編程寶典王大剛,數(shù)據(jù)結(jié)構(gòu)與算法面向?qū)ο蟮腃設(shè)計(jì)模式Bruno R. Preiss,C/C語(yǔ)言與研究開發(fā)實(shí)踐伍曉宇、辛勇,Borland C Builder 3.0/4.0類參考詳解張濟(jì)、袁野、王秀娟,Borland CBuilder 3.0/4.0高級(jí)類參考詳解王秀娟、孫悅、黎華,C語(yǔ)言命令詳解(第二版)Brian Overland,C程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)錢能。用C語(yǔ)言解決鬼谷算題在鬼谷算題中有這樣一個(gè)著名的題目:“今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問(wèn)物幾何?”這屬于高等數(shù)學(xué)中的數(shù)論。我國(guó)宋代學(xué)者對(duì)這類題目鉆研已頗為精深,總結(jié)出了“三人同行七十

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論