欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1542|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C語(yǔ)言學(xué)習(xí)方法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-5 04:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
 C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛。主要有以下特點(diǎn):
  C語(yǔ)言在很多方面都可以用,不僅僅是在軟件開發(fā)上,各類科研都是需要用到C語(yǔ)言的。具體應(yīng)用比如我是學(xué)硬件的,單片機(jī)以及嵌入式系統(tǒng)都可以用C來開發(fā)。
  C 語(yǔ)言發(fā)展如此迅速, 而且成為最受歡迎的語(yǔ)言之一, 主要因?yàn)樗哂袕?qiáng)大的功能。許多著名的系統(tǒng)軟件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語(yǔ)言編寫的。用C 語(yǔ)言加上一些匯編語(yǔ)言子程序, 就更能顯示C 語(yǔ)言的優(yōu)勢(shì)了, 像PC- DOS 、WORDSTAR等就是用這種方法編寫的。歸納起來C 語(yǔ)言具有下列特點(diǎn):1. C是中級(jí)語(yǔ)言,它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來。C 語(yǔ)言可以象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。
  2. C是結(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)用, 并具有多種循環(huán)、條件語(yǔ)句控制程序流向, 從而使程序完全結(jié)構(gòu)化。
  3. C語(yǔ)言功能齊全C 語(yǔ)言具有各種各樣的數(shù)據(jù)類型, 并引入了指針概念, 可使程序效率更高。另外C 語(yǔ)言也具有強(qiáng)大的圖形功能, 支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大, 可以實(shí)現(xiàn)決策目的編游戲,編3D游戲,做數(shù)據(jù)庫(kù),做聯(lián)眾世界,做聊天室,做PHOTOSHOP做FLASH,做3DMAX。
  4. C語(yǔ)言適用范圍大C 語(yǔ)言還有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng), 如DOS、UNIX,也適用于多種機(jī)型。
  C語(yǔ)言對(duì)操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用C語(yǔ)言明顯優(yōu)于其它解釋型高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用C語(yǔ)言編寫的。
  C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫。它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。
  常用的C語(yǔ)言IDE(集成開發(fā)環(huán)境)有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C,Dev-C++,C-Free, win-tc 等等......
  對(duì)于一個(gè)初學(xué)者,Turboc2.01是一個(gè)比較好的軟件。Turboc2.01是為了照顧不熟悉DOS環(huán)境軟件操作的廣大初學(xué)者,讓大家能在Windows環(huán)境下方便地安裝TurboC。下載該改良版后就像普通軟件一樣安裝既可使用,十分方便。
  近年來,大多數(shù)人用Windows操作系統(tǒng)的圖形界面,用鼠標(biāo)進(jìn)行操作,感到用TurboC2.0不太方便,建議用TurboC++3.0作為編譯工具!
[編輯本段]
C語(yǔ)言的發(fā)展歷史
  

  C語(yǔ)言的原型ALGOL 60語(yǔ)言。(也稱為A語(yǔ)言)
  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)行了修改,并為它起了一個(gè)有趣的名字“B語(yǔ)言”。意思是將CPL語(yǔ)言煮干,提煉出它的精華。并且他用B語(yǔ)言寫了第一個(gè)UNIX操作系統(tǒng)。
  而在1973年,B語(yǔ)言也給人“煮”了一下,美國(guó)貝爾實(shí)驗(yàn)室的D.M.RITCHIE在B語(yǔ)言的基礎(chǔ)上最終設(shè)計(jì)出了一種新的語(yǔ)言,他取了BCPL的第二個(gè)字母作為這種語(yǔ)言的名字,這就是C語(yǔ)言。
  為了使UNIX操作系統(tǒng)推廣,1977年Dennis M.Ritchie 發(fā)表了不依賴于具體機(jī)器系統(tǒng)的C語(yǔ)言編譯文本《可移植的C語(yǔ)言編譯程序》。
  1978年由美國(guó)電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了C語(yǔ)言。同時(shí)由 B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡(jiǎn)稱為《K&R》,也有人稱之為《K&R》標(biāo)準(zhǔn)。但是,在《K&R》中并沒有定義一個(gè)完整的標(biāo)準(zhǔn)C 語(yǔ)言,后來由美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(American National Standards Institute)在此基礎(chǔ)上制定了一個(gè)C 語(yǔ)言標(biāo)準(zhǔn),于一九八三年發(fā)表。通常稱之為ANSI C。
  1987年,隨著微型計(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), 成為現(xiàn)行的C語(yǔ)言標(biāo)準(zhǔn) 3.C語(yǔ)言的主要特點(diǎn) 。C語(yǔ)言發(fā)展迅速, 而且成為最受歡迎的語(yǔ)言之一,主要因?yàn)樗哂袕?qiáng)大的功能。許多著名的系統(tǒng)軟件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C語(yǔ)言編寫的。用C語(yǔ)言加上一些匯編語(yǔ)言子程序, 就更能顯示C語(yǔ)言的優(yōu)勢(shì)了,象PC- DOS 、WORDSTAR等就是用這種方法編寫的。
  1990年,國(guó)際化標(biāo)準(zhǔn)組織ISO(Intrernational StandardOrganization)接受了87 ANSI C為ISO C的標(biāo)準(zhǔn)(ISO9899-1990)。1994年,ISO修訂了C語(yǔ)言的標(biāo)準(zhǔn)。目前流行的C語(yǔ)言編譯系統(tǒng)大多是以ANSI C為基礎(chǔ)進(jìn)行開發(fā)的,但不同版本的C編譯系統(tǒng)所實(shí)現(xiàn)的語(yǔ)言功能和語(yǔ)法規(guī)則有略有差別。
[編輯本段]
C語(yǔ)言的優(yōu)點(diǎn)
  1. 簡(jiǎn)潔緊湊、靈活方便
  C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫自由,主要用小寫字母表示。它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來。 C 語(yǔ)言可以象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。
  2. 運(yùn)算符豐富
  C的運(yùn)算符包含的范圍很廣泛,共有34個(gè)運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。
  3. 數(shù)據(jù)結(jié)構(gòu)豐富
  C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語(yǔ)言具有強(qiáng)大的圖形功能, 支持多種顯示器和驅(qū)動(dòng)器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。
  4. C是結(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)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。
  5. C語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大
  雖然C語(yǔ)言也是強(qiáng)類型語(yǔ)言,但它的語(yǔ)法比較靈活,允許程序編寫者有較大的自由度。
  6. C語(yǔ)言允許直接訪問物理地址,可以直接對(duì)硬件進(jìn)行操作
  因此既具有高級(jí)語(yǔ)言的功能,又具有低級(jí)語(yǔ)言的許多功能,能夠象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可以用來寫系統(tǒng)軟件。
  7. C語(yǔ)言程序生成代碼質(zhì)量高,程序執(zhí)行效率高
  一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%。
  8. C語(yǔ)言適用范圍大,可移植性好
  C語(yǔ)言有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng), 如DOS、UNIX,也適用于多種機(jī)型。
  c語(yǔ)言-順序結(jié)構(gòu)
  順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語(yǔ)句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。
  例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個(gè)問題就好像交換兩個(gè)杯子水,這當(dāng)然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序?yàn)椋?c = a; a = b; b = c; 執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯(cuò)誤。順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑 r,計(jì)算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語(yǔ)句、循環(huán)結(jié)構(gòu)中的循環(huán)體等
  C語(yǔ)言的適用范圍
  C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。
[編輯本段]
C語(yǔ)言的缺點(diǎn)
  1. C語(yǔ)言的缺點(diǎn)主要是表現(xiàn)在數(shù)據(jù)的封裝性上,這一點(diǎn)使得C在數(shù)據(jù)的安全性上做的有很大缺陷,這也是C和C++的一大區(qū)別。
  2. C語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語(yǔ)言比其他高級(jí)語(yǔ)言較難掌握。
  [C語(yǔ)言指針]
  指針就是C語(yǔ)言的一大特色,可以說C語(yǔ)言優(yōu)于其它高級(jí)語(yǔ)言的一個(gè)重要原因就是因?yàn)樗兄羔槻僮骺梢灾苯舆M(jìn)行靠近硬件的操作,但是C的指針操作也給它帶來了很多不安全的因素。C++在這方面做了很好的改進(jìn),在保留了指針操作的同時(shí)又增強(qiáng)了安全性。Java取消了指針操作,提高了安全性,適合初學(xué)者使用。
[編輯本段]
C源程序的結(jié)構(gòu)特點(diǎn)
  1.一個(gè)C語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成。
  2.每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成。
  3.一個(gè)源程序不論由多少個(gè)文件組成,都有一個(gè)且只能有一個(gè)main函數(shù),即主函數(shù)。
  4.源程序中可以有預(yù)處理命令(include 命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。
  5.每一個(gè)說明,每一個(gè)語(yǔ)句都必須以分號(hào)結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號(hào)“}”之后不能加分號(hào)。
  6.標(biāo)識(shí)符,關(guān)鍵字之間必須至少加一個(gè)空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
[編輯本段]
學(xué)習(xí)C語(yǔ)言
  在初學(xué)C語(yǔ)言時(shí),可能會(huì)遇到有些問題理解不透,或者表達(dá)方式與以往數(shù)學(xué)學(xué)習(xí)中不同(如運(yùn)算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進(jìn)行學(xué)習(xí),待學(xué)完后面的章節(jié)知識(shí),前面的問題也就迎刃而解了,這一方面我感覺是我們同學(xué)最欠缺,大多學(xué)不好的就是因?yàn)橐婚_始遇到困難就放棄,曾經(jīng)和好多同學(xué)談他的問題,回答是聽不懂、不想聽、放棄這樣三個(gè)過程,我反問,這節(jié)課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應(yīng)的根本就沒學(xué)習(xí),又談何學(xué)的好?
  學(xué)習(xí)C語(yǔ)言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學(xué)習(xí)知識(shí)的重要方法,就是說,學(xué)習(xí)后面的知識(shí),不要忘了回頭弄清遺留下的問題和加深理解前面的知識(shí),這是我們學(xué)生最不易做到的,然而卻又是最重要的。學(xué)習(xí)C語(yǔ)言就是要經(jīng)過幾個(gè)反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識(shí)。
  那么,我們?nèi)绾螌W(xué)好《C程序設(shè)計(jì)》呢?
  一.學(xué)好C語(yǔ)言的運(yùn)算符和運(yùn)算順序
  這是學(xué)好《C程序設(shè)計(jì)》的基礎(chǔ),C語(yǔ)言的運(yùn)算非常靈活,功能十分豐富,運(yùn)算種類遠(yuǎn)多于其它程序設(shè)計(jì)語(yǔ)言。在表達(dá)式方面較其它程序語(yǔ)言更為簡(jiǎn)潔,如自加、自減、逗號(hào)運(yùn)算和三目運(yùn)算使表達(dá)式更為簡(jiǎn)單,但初學(xué)者往往會(huì)覺的這種表達(dá)式難讀,關(guān)鍵原因就是對(duì)運(yùn)算符和運(yùn)算順序理解不透不全。當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。在學(xué)習(xí)中,只要我們對(duì)此合理進(jìn)行分類,找出它們與我們?cè)跀?shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會(huì)牢記心中,將來用起來得心應(yīng)手,而有些可暫時(shí)放棄不記,等用到時(shí)再記不遲。
  先要明確運(yùn)算符按優(yōu)先級(jí)不同分類,《C程序設(shè)計(jì)》運(yùn)算符可分為15種優(yōu)先級(jí),從高到低,優(yōu)先級(jí)為1 ~ 15,除第2、13級(jí)和第14級(jí)為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級(jí)運(yùn)算符的運(yùn)算順序.
  二.學(xué)好C語(yǔ)言的四種程序結(jié)構(gòu)
  (1)順序結(jié)構(gòu)
  順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語(yǔ)句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。
  例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個(gè)問題就好像交換兩個(gè)杯子水,這當(dāng)然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序?yàn)椋?c = a; a = b; b = c; 執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯(cuò)誤。順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑 r,計(jì)算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語(yǔ)句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。
  (2) 分支結(jié)構(gòu)
  順序結(jié)構(gòu)的程序雖然能解決計(jì)算、輸出等問題,但不能做判斷再選擇。對(duì)于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語(yǔ)句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ(yǔ)句。分支結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計(jì)分析與語(yǔ)言分開,使得問題簡(jiǎn)單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。
  學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執(zhí)行的功能,嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支中又包括分支語(yǔ)句而已,不是新知識(shí),只要對(duì)雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結(jié)構(gòu)。
  ①if(條件)
  {分支體}
  這種分支結(jié)構(gòu)中的分支體可以是一條語(yǔ)句,此時(shí)“{ }”可以省略,也可以是多條語(yǔ)句即復(fù)合語(yǔ)句。它有兩條分支路徑可選,一是當(dāng)條件為真,執(zhí)行分支體,否則跳過分支體,這時(shí)分支體就不會(huì)執(zhí)行。如:要計(jì)算x的絕對(duì)值,根據(jù)絕對(duì)值定義,我們知道,當(dāng)x>=0時(shí),其絕對(duì)值不變,而x<0時(shí)其絕對(duì)值是為x的反號(hào),因此程序段為:if(x<0) x=-x;
  ②if(條件)
  {分支1}
  else
  {分支2}
  這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語(yǔ)句構(gòu)成。如:求ax^2+bx+c=0的根
  分析:因?yàn)楫?dāng)b^2-4ac>=0時(shí),方程有兩個(gè)實(shí)根,否則(b^2-4ac<0)有兩個(gè)共軛復(fù)根。其程序段如下:
  d=b*b-4*a*c;
  if(d>=0)
  {x1=(-b+sqrt(d))/2a;
  x2=(-b-sqrt(d))/2a;
  printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);
  }
  else
  {r=-b/(2*a);
  i =sqrt(-d)/(2*a);
  printf(“x1=%8.4f+%8.4fi\n”r, i);
  printf(“x2=%8.4f-%8.4fi\n”r,i)
  }
  ③嵌套分支語(yǔ)句:其語(yǔ)句格式為:
  if(條件1) {分支1};
  else if(條件2) {分支2}
  else if(條件3) {分支3}
  ……
  else if(條件n) {分支n}
  else {分支n+1}
  嵌套分支語(yǔ)句雖可解決多個(gè)入口和出口的問題,但超過3重嵌套后,語(yǔ)句結(jié)構(gòu)變得非常復(fù)雜,對(duì)于程序的閱讀和理解都極為不便,建議嵌套在3重以內(nèi),超過3重可以用下面的語(yǔ)句。
  ④switch開關(guān)語(yǔ)句:該語(yǔ)句也是多分支選擇語(yǔ)句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路,它不同if…else 語(yǔ)句,它的所有分支都是并列的,程序執(zhí)行時(shí),由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語(yǔ)句;如果不匹配,查找下一個(gè)分支是否匹配。這個(gè)語(yǔ)句在應(yīng)用時(shí)要特別注意開關(guān)條件的合理設(shè)置以及break語(yǔ)句的合理應(yīng)用。
  (3)循環(huán)結(jié)構(gòu):
  循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語(yǔ)言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do ?Cwhile循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因?yàn)閺?qiáng)制改變程序的順序經(jīng)常會(huì)給程序的運(yùn)行帶來不可預(yù)料的錯(cuò)誤,在學(xué)習(xí)中我們主要學(xué)習(xí)while、do…while、for三種循環(huán)。常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點(diǎn)在于弄清它們相同與不同之處,以便在不同場(chǎng)合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會(huì)明白如何替換使用,如把while循環(huán)的例題,用for語(yǔ)句重新編寫一個(gè)程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語(yǔ)句(即循環(huán)變量值的改變),否則就可能成了一個(gè)死循環(huán),這是初學(xué)者的一個(gè)常見錯(cuò)誤。
  在學(xué)完這三個(gè)循環(huán)后,應(yīng)明確它們的異同點(diǎn):用while和do…while循環(huán)時(shí),循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語(yǔ)句1中進(jìn)行的;while 循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do…while的循環(huán)體最少被執(zhí)行一次,而while 循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語(yǔ)句跳出循環(huán),用continue語(yǔ)句結(jié)束本次循環(huán),而goto語(yǔ)句與 if構(gòu)成的循環(huán),是不能用break和 continue語(yǔ)句進(jìn)行控制的。
  順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實(shí)不管哪種結(jié)構(gòu),我們均可廣義的把它們看成一個(gè)語(yǔ)句。在實(shí)際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實(shí)現(xiàn)各種算法,設(shè)計(jì)出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長(zhǎng)、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個(gè)問題的方法是將C程序設(shè)計(jì)成模塊化結(jié)構(gòu)。
  (4)模塊化程序結(jié)構(gòu)
  C語(yǔ)言的模塊化程序結(jié)構(gòu)用函數(shù)來實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)C 函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來實(shí)現(xiàn)一大型問題的C程序編寫,因此常說:C程序=主函數(shù)+子函數(shù)。因此,對(duì)函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過上機(jī)調(diào)試加以鞏固。
  三.掌握一些簡(jiǎn)單的算法
  編程其實(shí)一大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語(yǔ)言寫出代碼。這就要求掌握算法,根據(jù)我們的《C程序設(shè)計(jì)》教學(xué)大綱中,只要求我們掌握一些簡(jiǎn)單的算法,在掌握這些基本算法后,要完成對(duì)問題的分析就容易了。如兩個(gè)數(shù)的交換、三個(gè)數(shù)的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義
  結(jié)語(yǔ):當(dāng)我們把握好上述幾方面后,只要同學(xué)們能克服畏難、厭學(xué)、上課能專心聽講,做好練習(xí)與上機(jī)調(diào)試,其實(shí)C語(yǔ)言并不難學(xué)
  C源程序的關(guān)鍵字---------------------------------------------------------------------------------------
  所謂關(guān)鍵字就是已被C語(yǔ)言本身使用, 不能作其它用途使用的字。例如關(guān)鍵字不能用作變量名、函數(shù)名等
  由ANSI標(biāo)準(zhǔn)定義的C語(yǔ)言關(guān)鍵字共32個(gè) :
  auto double int struct break else long switch
  case enum register typedef char extern return union
  const float short unsigned continue for signed void
  default goto sizeof volatile do if while static
  根據(jù)關(guān)鍵字的作用,可以將關(guān)鍵字分為數(shù)據(jù)類型關(guān)鍵字和流程控制關(guān)鍵字兩大類。
  1 數(shù)據(jù)類型關(guān)鍵字
  A基本數(shù)據(jù)類型(5個(gè))
  void :聲明函數(shù)無返回值或無參數(shù),聲明無類型指針,顯式丟棄運(yùn)算結(jié)果
  char :字符型類型數(shù)據(jù),屬于整型數(shù)據(jù)的一種
  int :整型數(shù)據(jù),通常為編譯器指定的機(jī)器字長(zhǎng)
  float :?jiǎn)尉雀↑c(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種
  double :雙精度浮點(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種
  B 類型修飾關(guān)鍵字(4個(gè))
  short :修飾int,短整型數(shù)據(jù),可省略被修飾的int。
  long :修飾int,長(zhǎng)整形數(shù)據(jù),可省略被修飾的int。
  signed :修飾整型數(shù)據(jù),有符號(hào)數(shù)據(jù)類型
  unsigned :修飾整型數(shù)據(jù),無符號(hào)數(shù)據(jù)類型
  C 復(fù)雜類型關(guān)鍵字(5個(gè))
  struct :結(jié)構(gòu)體聲明
  union :共用體聲明
  enum :枚舉聲明
  typedef :聲明類型別名
  sizeof :得到特定類型或特定類型變量的大小
  D 存儲(chǔ)級(jí)別關(guān)鍵字(6個(gè))
  auto :指定為自動(dòng)變量,由編譯器自動(dòng)分配及釋放。通常在棧上分配
  static :指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時(shí),指定函數(shù)作用域?yàn)槲募䞍?nèi)部
  register :指定為寄存器變量,建議編譯器將變量存儲(chǔ)到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過寄存器而不是堆棧傳遞參數(shù)
  extern :指定對(duì)應(yīng)變量為外部變量,即標(biāo)示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。
  const :與volatile合稱“cv特性”,指定變量不可被當(dāng)前線程/進(jìn)程改變(但有可能被系統(tǒng)或其他線程/進(jìn)程改變)
  volatile :與const合稱“cv特性”,指定變量的值有可能會(huì)被系統(tǒng)或其他進(jìn)程/線程改變,強(qiáng)制編譯器每次從內(nèi)存中取得該變量的值
  2 流程控制關(guān)鍵字
  A 跳轉(zhuǎn)結(jié)構(gòu)(4個(gè))
  return :用在函數(shù)體中,返回特定值(或者是void值,即不返回值)
  continue :結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)
  break :跳出當(dāng)前循環(huán)或switch結(jié)構(gòu)
  goto :無條件跳轉(zhuǎn)語(yǔ)句
  B 分支結(jié)構(gòu)(5個(gè))
  if :條件語(yǔ)句
  else :條件語(yǔ)句否定分支(與if連用)
  switch :開關(guān)語(yǔ)句(多重分支語(yǔ)句)
  case :開關(guān)語(yǔ)句中的分支標(biāo)記
  default :開關(guān)語(yǔ)句中的“其他”分治,可選。
  C 循環(huán)結(jié)構(gòu)(3個(gè))
  for :for循環(huán)結(jié)構(gòu),for(1;2;3)4;的執(zhí)行順序?yàn)?->2->4->3->2...循環(huán),其中2為循環(huán)條件。在整個(gè) for循環(huán)過程中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則可能計(jì)算多次,也可能一次也不計(jì)算。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。
  do :do循環(huán)結(jié)構(gòu),do 1 while(2); 的執(zhí)行順序是 1->2->1...循環(huán),2為循環(huán)條件
  while :while循環(huán)結(jié)構(gòu),while(1) 2; 的執(zhí)行順序是1->2->1...循環(huán),1為循環(huán)條件
  [4]以上循環(huán)語(yǔ)句,當(dāng)循環(huán)條件表達(dá)式為真則繼續(xù)循環(huán),為假則跳出循環(huán)。
[編輯本段]
新標(biāo)準(zhǔn)
  在ANSI標(biāo)準(zhǔn)化后,C語(yǔ)言的標(biāo)準(zhǔn)在一段相當(dāng)?shù)臅r(shí)間內(nèi)都保持不變,盡管C++繼續(xù)在改進(jìn)。(實(shí)際上,Normative Amendment1在1995年已經(jīng)開發(fā)了一個(gè)新的C語(yǔ)言版本。但是這個(gè)版本很少為人所知。)標(biāo)準(zhǔn)在90年代才經(jīng)歷了改進(jìn),這就是 ISO9899:1999(1999年出版)。這個(gè)版本就是通常提及的C99。它被ANSI于2000年三月采用。
  在C99中包括的特性有:
  對(duì)編譯器限制增加了,比如源程序每行要求至少支持到 4095 字節(jié),變量名函數(shù)名的要求支持到 63 字節(jié) (extern 要求支持到 31)
  預(yù)處理增強(qiáng)了。例如:
  宏支持取參數(shù) #define Macro(...) __VA_ARGS__
  使用宏的時(shí)候,參數(shù)如果不寫,宏里用 #,## 這樣的東西會(huì)擴(kuò)展成空串。(以前會(huì)出錯(cuò)的)
  支持 // 行注釋(這個(gè)特性實(shí)際上在C89的很多編譯器上已經(jīng)被支持了)
  增加了新關(guān)鍵字 restrict, inline, _Complex, _Imaginary, _Bool
  支持 long long, long double _Complex, float _Complex 這樣的類型
  支持 <: :> <% %> %: %:%: ,等等奇怪的符號(hào)替代
  支持了不定長(zhǎng)的數(shù)組。數(shù)組的長(zhǎng)度就可以用變量了。聲明類型的時(shí)候呢,就用 int a 這樣的寫法。不過考慮到效率和實(shí)現(xiàn),這玩意并不是一個(gè)新類型。所以就不能用在全局里,或者 struct union 里面,如果你用了這樣的東西,goto 語(yǔ)句就受限制了。
  變量聲明不必放在語(yǔ)句塊的開頭,for 語(yǔ)句提倡這么寫 for(int i=0;i<100;++i) 就是說,int i 的聲明放在里面,i 只在 for 里面有效。(VC沒有遵守這條標(biāo)準(zhǔn),i 在 for 外也有效)
  當(dāng)一個(gè)類似結(jié)構(gòu)的東西需要臨時(shí)構(gòu)造的時(shí)候,可以用 (type_name){xx,xx,xx} 這有點(diǎn)像 C++ 的構(gòu)造函數(shù)
  初始化結(jié)構(gòu)的時(shí)候現(xiàn)在可以這樣寫:
  struct {int a[3], b;} hehe[] = { [0].a = , [1].a = 2 };
  struct {int a, b, c, d;} hehe = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是對(duì) .c,.d 賦值的
  字符串里面,\u 支持 unicode 的字符
  支持 16 進(jìn)制的浮點(diǎn)數(shù)的描述
  所以 printf scanf 的格式化串多支持了 ll / LL (VC6 里用的 I64) 對(duì)應(yīng)新的 long long 類型。
  浮點(diǎn)數(shù)的內(nèi)部數(shù)據(jù)描述支持了新標(biāo)準(zhǔn),這個(gè)可以用 #pragma 編譯器指定
  除了已經(jīng)有的 __line__ __file__ 以外,又支持了一個(gè) __func__ 可以得到當(dāng)前的函數(shù)名
  對(duì)于非常數(shù)的表達(dá)式,也允許編譯器做化簡(jiǎn)
  修改了對(duì)于 / % 處理負(fù)數(shù)上的定義,比如老的標(biāo)準(zhǔn)里 -22 / 7 = -3, -22 % 7 = -1 而現(xiàn)在 -22 / 7 = -4, -22 % 7 = 6
  取消了不寫函數(shù)返回類型默認(rèn)就是 int 的規(guī)定
  允許 struct 定義的最后一個(gè)數(shù)組寫做 [] 不指定其長(zhǎng)度描述
  const const int i; 將被當(dāng)作 const int i; 處理
  增加和修改了一些標(biāo)準(zhǔn)頭文件, 比如定義 bool 的 <stdbool.h> 定義一些標(biāo)準(zhǔn)長(zhǎng)度的 int 的 <inttypes.h> 定義復(fù)數(shù)的 <complex.h> 定義寬字符的 <wctype.h> 有點(diǎn)泛型味道的數(shù)學(xué)函數(shù) <tgmath.h> 跟浮點(diǎn)數(shù)有關(guān)的 <fenv.h>。<stdarg.h> 里多了一個(gè) va_copy 可以復(fù)制 ... 的參數(shù)。<time.h> 里多了個(gè) struct tmx 對(duì) struct tm 做了擴(kuò)展
  輸入輸出對(duì)寬字符還有長(zhǎng)整數(shù)等做了相應(yīng)的支持
  相對(duì)于c89的變化還有
  1、增加restrict指針
  C99中增加了公適用于指針的restrict類型修飾符,它是初始訪問指針?biāo)笇?duì)象的惟一途徑,因此只有借助restrict指針表達(dá)式才能訪問對(duì)象。restrict指針指針主要用做函數(shù)變?cè)蛘咧赶蛴蒻alloc()函數(shù)所分配的內(nèi)存變量。restrict數(shù)據(jù)類型不改變程序的語(yǔ)義。
  如果某個(gè)函數(shù)定義了兩個(gè)restrict指針變?cè)幾g程序就假定它們指向兩個(gè)不同的對(duì)象,memcpy()函數(shù)就是restrict指針的一個(gè)典型應(yīng)用示例。C89中memcpy()函數(shù)原型如下:
  代碼: void *memcpy (void *s1, const void *s2, size_t size);
  如果s1和s2所指向的對(duì)象重疊,其操作就是未定義的。memcpy()函數(shù)只能用于不重疊的對(duì)象。C99中memcpy()函數(shù)原型如下:代碼: void *memcpy(void *restrict s1, const void *restrict s2,size_t size);
  通過使用restrict修飾s1和s2 變?cè)纱_保它們?cè)谠撛椭兄赶虿煌膶?duì)象。
  2、inline(內(nèi)聯(lián))關(guān)鍵字
  內(nèi)聯(lián)函數(shù)除了保持結(jié)構(gòu)化和函數(shù)式的定義方式外,還能使程序員寫出高效率的代碼.函數(shù)的每次調(diào)用與返回都會(huì)消耗相當(dāng)大的系統(tǒng)資源,尤其是當(dāng)函數(shù)調(diào)用發(fā)生在重復(fù)次數(shù)很多的循環(huán)語(yǔ)句中時(shí).一般情況下,當(dāng)發(fā)生一次函數(shù)調(diào)用時(shí),變?cè)枰M(jìn)棧,各種寄存器內(nèi)存需要保存.當(dāng)函數(shù)返回時(shí),寄存器的內(nèi)容需要恢復(fù)。如果該函數(shù)在代碼內(nèi)進(jìn)行聯(lián)機(jī)擴(kuò)展,當(dāng)代碼執(zhí)行時(shí),這些保存和恢復(fù)操作旅游活動(dòng)會(huì)再發(fā)生,而且函數(shù)調(diào)用的執(zhí)行速度也會(huì)大大加快。函數(shù)的聯(lián)機(jī)擴(kuò)展會(huì)產(chǎn)生較長(zhǎng)的代碼,所以只應(yīng)該內(nèi)聯(lián)對(duì)應(yīng)用程序性能有顯著影響的函數(shù)以及長(zhǎng)度較短的函數(shù)
  3、新增數(shù)據(jù)類型
  _Bool
  值是0或1。C99中增加了用來定義bool、true以及false宏的頭文件夾<stdbool.h>,以便程序員能夠編寫同時(shí)兼容于C與C++的應(yīng)用程序。在編寫新的應(yīng)用程序時(shí),應(yīng)該使用
  <stdbool.h>頭文件中的bool宏。
  _Complex and _Imaginary
  C99標(biāo)準(zhǔn)中定義的復(fù)數(shù)類型如下:float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary.
  <complex.h>頭文件中定義了complex和imaginary宏,并將它們擴(kuò)展為_Complex和_Imaginary,因此在編寫新的應(yīng)用程序時(shí),應(yīng)該使用<stdbool.h>頭文件中的complex 和imaginary宏。
  long long int
  C99標(biāo)準(zhǔn)中引進(jìn)了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64 - 1)。long long int能夠支持的整數(shù)長(zhǎng)度為64位。
  4、對(duì)數(shù)組的增強(qiáng)
  可變長(zhǎng)數(shù)組
  C99中,程序員聲明數(shù)組時(shí),數(shù)組的維數(shù)可以由任一有效的整型表達(dá)式確定,包括只在運(yùn)行時(shí)才能確定其值的表達(dá)式,這類數(shù)組就叫做可變長(zhǎng)數(shù)組,但是只有局部數(shù)組才可以是變長(zhǎng)的.
  可變長(zhǎng)數(shù)組的維數(shù)在數(shù)組生存期內(nèi)是不變的,也就是說,可變長(zhǎng)數(shù)組不是動(dòng)態(tài)的.可以變化的只是數(shù)組的大小.可以使用*來定義不確定長(zhǎng)的可變長(zhǎng)數(shù)組。
  數(shù)組聲明中的類型修飾符
  在C99中,如果需要使用數(shù)組作為函數(shù)變?cè)梢栽跀?shù)組聲明的方括號(hào)內(nèi)使用static關(guān)鍵字,這相當(dāng)于告訴編譯程序,變?cè)赶虻臄?shù)組將至少包含指定的元素個(gè)數(shù)。也可以在數(shù)組聲明的方括號(hào)內(nèi)使用restrict,volatile,const 關(guān)鍵字,但只用于函數(shù)變?cè)H绻褂胷estrict,指針是初始訪問該對(duì)象的惟一途徑。如果使用const,指針始終指向同一個(gè)數(shù)組。使用 volatile沒有任何意義。
  5、單行注釋
  引入了單行注釋標(biāo)記 "//" , 可以象C++一樣使用這種注釋了。
  6、分散代碼與聲明
  7、預(yù)處理程序的修改
  a、變?cè)斜?br />   宏可以帶變?cè)诤甓x中用省略號(hào)(...)表示。內(nèi)部預(yù)處理標(biāo)識(shí)符__VA_ARGS__決定變?cè)獙⒃诤翁幍玫教鎿Q。例:#define MySum(...) sum(__VA_ARGS__) 語(yǔ)句MySum(k,m,n);
  將被轉(zhuǎn)換成:sum(k, m, n); 變?cè)可以包含變?cè)@?#define compare(compf, ...) compf(__VA_ARGS__) 其中的compare(strcmp,"small", "large"); 將替換成:strcmp("small","large");
  b、_Pragma運(yùn)算符
  C99引入了在程序中定義編譯指令的另外一種方法:_Pragma運(yùn)算符。格式如下:
  _Pragma("directive")
  其中directive是要滿打滿算的編譯指令。_Pragma運(yùn)算符允許編譯指令參與宏替換。
  c、內(nèi)部編譯指令
  STDCFP_CONTRACT ON/OFF/DEFAULT 若為ON,浮點(diǎn)表達(dá)式被當(dāng)做基于硬件方式處理的獨(dú)立單元。默認(rèn)值是定義的工具。
  STDCFEVN_ACCESS ON/OFF/DEFAULT 告訴編譯程序可以訪問浮點(diǎn)環(huán)境。默認(rèn)值是定義的工具。
  STDC CX_LIMITED_RANGE ON/OFF/DEFAULT 若值為ON,相當(dāng)于告訴編譯程序某程序某些含有復(fù)數(shù)的公式是可靠的。默認(rèn)是OFF。
  d、新增的內(nèi)部宏
  __STDC_HOSTED__ 若操作系統(tǒng)存在,則為1
  __STDC_VERSION__ 199991L或更高。代表C的版本
  __STDC_IEC_599__ 若支持IEC 60559浮點(diǎn)運(yùn)算,則為1
  __STDC_IEC_599_COMPLEX__ 若支持IEC 60599復(fù)數(shù)運(yùn)算,則為1
  __STDC_ISO_10646__ 由編譯程序支持,用于說明ISO/IEC 10646標(biāo)準(zhǔn)的年和月格式:yyymmmL
  9、復(fù)合賦值
  C99中,復(fù)合賦值中,可以指定對(duì)象類型的數(shù)組、結(jié)構(gòu)或聯(lián)合表達(dá)式。當(dāng)使用復(fù)合賦值時(shí),應(yīng)在括弧內(nèi)指定類型,后跟由花括號(hào)圍起來的初始化列表;若類型為數(shù)組,則不能指定數(shù)組的大小。建成的對(duì)象是未命名的。
  例: double *fp = (double[]) {1.1, 2.2, 3.3};
  該語(yǔ)句用于建立一個(gè)指向double的指針fp,且該指針指向這個(gè)3元素?cái)?shù)組的第一個(gè)元素。 在文件域內(nèi)建立的復(fù)合賦值只在程序的整個(gè)生存期內(nèi)有效。在模塊內(nèi)建立的復(fù)合賦值是局部對(duì)象,在退出模塊后不再存在。
  10、柔性數(shù)組結(jié)構(gòu)成員
  C99中,結(jié)構(gòu)中的最后一個(gè)元素允許是未知大小的數(shù)組,這就叫做柔性數(shù)組成員,但結(jié)構(gòu)中的柔性數(shù)組成員前面必須至少一個(gè)其他成員。柔性數(shù)組成員允許結(jié)構(gòu)中包含一個(gè)大小可變的數(shù)組。sizeof返回的這種結(jié)構(gòu)大小不包括柔性數(shù)組的內(nèi)存。包含柔性數(shù)組成員的結(jié)構(gòu)用malloc()函數(shù)進(jìn)行內(nèi)存的動(dòng)態(tài)分配,并且分配的內(nèi)存應(yīng)該大于結(jié)構(gòu)的大小,以適應(yīng)柔性數(shù)組的預(yù)期大小。
  11、指定的初始化符
  C99中,該特性對(duì)經(jīng)常使用稀疏數(shù)組的程序員十分有用。指定的初始化符通常有兩種用法:用于數(shù)組,以及用于結(jié)構(gòu)和聯(lián)合。用于數(shù)組的格式:[index] = vol; 其中,index表示數(shù)組的下標(biāo),vol表示本數(shù)組元素的初始化值。
  例如: int x[10] = {[0] = 10, [5] = 30}; 其中只有x[0]和x[5]得到了初始化.用于結(jié)構(gòu)或聯(lián)合的格式如下:
  member-name(成員名稱)
  對(duì)結(jié)構(gòu)進(jìn)行指定的初始化時(shí),允許采用簡(jiǎn)單的方法對(duì)結(jié)構(gòu)中的指定成員進(jìn)行初始化。
  例如: struct example{ int k, m, n; } object = {m = 10,n = 200};
  其中,沒有初始化k。對(duì)結(jié)構(gòu)成員進(jìn)行初始化的順序沒有限制。
  12、printf()和scanf()函數(shù)系列的增強(qiáng)
  C99中printf()和scanf()函數(shù)系列引進(jìn)了處理long long int和unsigned long long int數(shù)據(jù)類型的特性。long long int 類型的格式修飾符是ll。在printf()和scanf()函數(shù)中,ll適用于d, i, o, u 和x格式說明符。另外,C99還引進(jìn)了hh修飾符。當(dāng)使用d, i, o, u和x格式說明符時(shí),hh用于指定char型變?cè)l和hh修飾符均可以用于n說明符。
  格式修飾符a和A用在printf()函數(shù)中時(shí),結(jié)果將會(huì)輸出十六進(jìn)制的浮點(diǎn)數(shù)。格式如下: [-]0xh, hhhhp + d 使用A格式修飾符時(shí),x和p必須是大寫。A和a格式修飾符也可以用在scanf()函數(shù)中,用于讀取浮點(diǎn)數(shù)。調(diào)用printf()函數(shù)時(shí),允許在%f說明符前加上l修飾符,即%lf,但不起作用。
  13、C99新增的庫(kù)
  C89中標(biāo)準(zhǔn)的頭文件
  <assert.h> 定義宏assert()
  <ctype.h> 字符處理
  <errno.h> 錯(cuò)誤報(bào)告
  <float.h> 定義與實(shí)現(xiàn)相關(guān)的浮點(diǎn)值勤
  <limits.h> 定義與實(shí)現(xiàn)相關(guān)的各種極限值
  <locale.h> 支持函數(shù)setlocale()
  <math.h> 數(shù)學(xué)函數(shù)庫(kù)使用的各種定義
  <setjmp.h> 支持非局部跳轉(zhuǎn)
  <signal.h> 定義信號(hào)值
  <stdarg.h> 支持可變長(zhǎng)度的變?cè)斜?br />   <stddef.h> 定義常用常數(shù)
  <stdio.h> 支持文件輸入和輸出
  <stdlib.h> 其他各種聲明
  <string.h> 支持串函數(shù)
  <time.h> 支持系統(tǒng)時(shí)間函數(shù)
  C99新增的頭文件和庫(kù)
  <complex.h> 支持復(fù)數(shù)算法
  <fenv.h> 給出對(duì)浮點(diǎn)狀態(tài)標(biāo)記和浮點(diǎn)環(huán)境的其他方面的訪問
  <inttypes.h> 定義標(biāo)準(zhǔn)的、可移植的整型類型集合。也支持處理最大寬度整數(shù)的函數(shù)
  <iso646.h> 首先在此1995年第一次修訂時(shí)引進(jìn),用于定義對(duì)應(yīng)各種運(yùn)算符的宏
  <stdbool.h> 支持布爾數(shù)據(jù)類型類型。定義宏bool,以便兼容于C++
  <stdint.h> 定義標(biāo)準(zhǔn)的、可移植的整型類型集合。該文件包含在<inttypes.h>中
  <tgmath.h> 定義一般類型的浮點(diǎn)宏
  <wchar.h> 首先在1995年第一次修訂時(shí)引進(jìn),用于支持多字節(jié)和寬字節(jié)函數(shù)
  <wctype.h> 首先在1995年第一次修訂時(shí)引進(jìn),用于支持多字節(jié)和寬字節(jié)分類函數(shù)
  14、__func__預(yù)定義標(biāo)識(shí)符
  用于指出__func__所存放的函數(shù)名,類似于字符串賦值。
  15、其它特性的改動(dòng)
  放寬的轉(zhuǎn)換限制
  限制 C89標(biāo)準(zhǔn) C99標(biāo)準(zhǔn)
  數(shù)據(jù)塊的嵌套層數(shù) 15 127
  條件語(yǔ)句的嵌套層數(shù) 8 63
  內(nèi)部標(biāo)識(shí)符中的有效字符個(gè)數(shù) 31 63
  外部標(biāo)識(shí)符中的有效字符個(gè)數(shù) 6 31
  結(jié)構(gòu)或聯(lián)合中的成員個(gè)數(shù) 127 1023
  函數(shù)調(diào)用中的參數(shù)個(gè)數(shù) 31 127
  不再支持隱含式的int規(guī)則
  刪除了隱含式函數(shù)聲明
  對(duì)返回值的約束
  C99中,非空類型函數(shù)必須使用帶返回值的return語(yǔ)句.
  擴(kuò)展的整數(shù)類型
  擴(kuò)展類型 含義
  int16_t 整數(shù)長(zhǎng)度為精確16位
  int_least16_t 整數(shù)長(zhǎng)度為至少16位
  int_fast32_t 最穩(wěn)固的整數(shù)類型,其長(zhǎng)度為至少32位
  intmax_t 最大整數(shù)類型
  uintmax_t 最大無符號(hào)整數(shù)類型
  對(duì)整數(shù)類型提升規(guī)則的改進(jìn)
  C89中,表達(dá)式中類型為char,short int或int的值可以提升為int或unsigned int類型.
  C99中,每種整數(shù)類型都有一個(gè)級(jí)別.例如:long long int 的級(jí)別高于int, int的級(jí)別高于char等.在表達(dá)式中,其級(jí)別低于int或unsigned int的任何整數(shù)類型均可被替換成int或unsigned int類型.
  有必要說明的是,c99的main()函數(shù)要求必須返回一個(gè)int值給程序的激活者(通常是操作系統(tǒng))0表示正常推出,非0表示異常。
  但是各個(gè)公司對(duì)C99的支持所表現(xiàn)出來的興趣不同。當(dāng)GCC和其它一些商業(yè)編譯器支持C99的大部分特性的時(shí)候,微軟和Borland卻似乎對(duì)此不感興趣。
  
C語(yǔ)言圖形編程

   Turbo C 提供了非常豐富的圖形函數(shù),所有圖形函數(shù)的原型均在graphics. h 中,本節(jié)主要介紹圖形模式的初始化、獨(dú)立圖形程序的建立、基本圖形功能、圖形窗口以及圖形模式下的文本輸出等函數(shù)。另外,使用圖形函數(shù)時(shí)要確保有顯示器圖形驅(qū)動(dòng)程序*BGI,同時(shí)將集成開發(fā)環(huán)境Options/Linker中的Graphics lib選為on,只有這樣才能保證正確使用圖形函數(shù)。圖形模式的初始化不同的顯示器適配器有不同的圖形分辨率。即是同一顯示器適配器,在不同模式下也有不同分辨率。因此,在屏幕作圖之前,必須根據(jù)顯示器適配器種類將顯示器設(shè)置成為某種圖形模式,在未設(shè)置圖形模式之前,微機(jī)系統(tǒng)默認(rèn)屏幕為文本模式(80 列,25行字符模式),此時(shí)所有圖形函數(shù)均不能工作。設(shè)置屏幕為圖形模式,可用下列圖形初始化函數(shù):
  void far initgraph(int far *gdriver, int far *gmode,char *path);
  其中g(shù)driver和gmode分別表示圖形驅(qū)動(dòng)器和模式,path是指圖形驅(qū)動(dòng)程序所在的目錄路徑。有關(guān)圖形驅(qū)動(dòng)器、圖形模式的符號(hào)常數(shù)及對(duì)應(yīng)的分辨率見下表。
  圖形驅(qū)動(dòng)程序由Turbo C出版商提供,文件擴(kuò)展名為.BGI。 根據(jù)不同的圖形適配器有不同的圖形驅(qū)動(dòng)程序。例如對(duì)于EGA、 VGA 圖形適配器就調(diào)用驅(qū)動(dòng)程序EGAVGA.BGI。
  圖形驅(qū)動(dòng)器、模式的符號(hào)常數(shù)及數(shù)值
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  圖形驅(qū)動(dòng)器(gdriver) 圖形模式(gmode)
  ───────────────────── 色調(diào) 分辨率
  符號(hào)常數(shù) 數(shù)值 符號(hào)常數(shù) 數(shù)值
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  CGA 1 CGAC0 0 C0 320*200
  CGAC1 1 C1 320*200
  CGAC2 2 C2 320*200
  CGAC3 3 C3 320*200
  CGAHI 4 2色 640*200
  ──────────────────────────────
  MCGA 2 MCGAC0 0 C0 320*200
  MCGAC1 1 C1 320*200
  MCGAC2 2 C2 320*200
  MCGAC3 3 C3 320*200
  MCGAMED 4 2色 640*200
  MCGAHI 5 2色 640*480
  ──────────────────────────────
  EGA 3 EGALO 0 16色 640*200
  EGAHI 1 16色 640*350
  ──────────────────────────────
  EGA64 4 EGA64LO 0 16色 640*200
  EGA64HI 1 4色 640*350
  ──────────────────────────────
  EGAMON 5 EGAMONHI 0 2色 640*350
  ──────────────────────────────
  IBM8514 6 IBM8514LO 0 256色 640*480
  IBM8514HI 1 256色 1024*768
  ──────────────────────────────
  HERC 7 HERCMONOHI 0 2色 720*348
  ──────────────────────────────
  ATT400 8 ATT400C0 0 C0 320*200
  ATT400C1 1 C1 320*200
  ATT400C2 2 C2 320*200
  ATT400C3 3 C3 320*200
  ATT400MED 4 2色 320*200
  ATT400HI 5 2色 320*200
  ──────────────────────────────
  VGA 9 VGALO 0 16色 640*200
  VGAMED 1 16色 640*350
  VGAHI 2 16色 640*480
  ──────────────────────────────
  PC3270 10 PC3270HI 0 2色 720*350
  ──────────────────────────────
  DETECT 0 用于硬件測(cè)試
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  使用圖形初始化函數(shù)設(shè)置VGA高分辨率圖形模式#include
  int main()
  {
  int gdriver, gmode;
  gdriver=VGA;
  gmode=VGAHI;
  initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
  bar3d(100, 100, 300, 250, 50, 1); /*畫一長(zhǎng)方體*/
  getch();
  closegraph();
  return 0;
  }
  有時(shí)編程者并不知道所用的圖形顯示器適配器種類,或者需要將編寫的程序用于不同圖形驅(qū)動(dòng)器,Turbo C 提供了一個(gè)自動(dòng)檢測(cè)顯示器硬件的函數(shù),其調(diào)用格式為: void far detectgraph(int *gdriver, *gmode); 其中g(shù)driver和gmode的意義與上面相同。 自動(dòng)進(jìn)行硬件測(cè)試后進(jìn)行圖形初始化#include
  int main()
  {
  int gdriver, gmode;
  detectgraph(&gdriver, &gmode); /*自動(dòng)測(cè)試硬件*/
  printf("the graphics driver is %d, mode is %d\n",
  gdriver,gmode); /*輸出測(cè)試結(jié)果*/
  getch();
  initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
  /* 根據(jù)測(cè)試結(jié)果初始化圖形*/
  bar3d(10, 10, 130, 250, 20, 1);
  getch();
  closegraph();
  return 0;
  }
  上例程序中先對(duì)圖形顯示器自動(dòng)檢測(cè),然后再用圖形初始化函數(shù)進(jìn)行初始化設(shè)置,但Turbo C提供了一種更簡(jiǎn)單的方法, 即用driver=DETECT 語(yǔ)句后再跟initgraph()函數(shù)就行了。采用這種方法后,上例可改為:
  #include
  int main()
  {
  int gdriver=DETECT, gmode;
  initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
  bar3d(50, 50, 150, 30, 50, 1);
  getch();
  closegraph();
  return 0;
  }
  另外,Turbo C 提供了退出圖形狀態(tài)的函數(shù)closegraph(),其調(diào)用格式為: void far closegraph(void); 調(diào)用該函數(shù)后可退出圖形狀態(tài)而進(jìn)入文本方式( Turbo C 默認(rèn)方式),并釋放用于保存圖形驅(qū)動(dòng)程序和字體的系統(tǒng)內(nèi)存。
  
[編輯本段]
C程序?qū)嵗?br />   1.功能:求三個(gè)整數(shù)的平均值。程序如下:
  #include <stdio.h> /*載入頭文件stdio.h*/
  int main() /*主函數(shù)main*/
  {
  int a,b,c,d; /*定義a,b,c,d為整型變量*/
  a=105;
  b=75;
  c=85;
  d=(a+b+c)/3;
  printf("d=%d\n",d); /*顯示"d=某數(shù)"并換行,某數(shù)是d的值*/
  getchar(); /*等待用戶,按任意鍵退出*/
  return 0;
  }
  2.功能:由鍵盤輸入多邊形的邊數(shù),求其內(nèi)角和。程序如下:
  #include <stdio.h>
  int main()
  {
  /*辨別多邊形是否成立,不成立重新執(zhí)行do-while語(yǔ)句間的命令*/
  do
  {
  int x;
  printf("n=");
  scanf("%d",&x); /*由鍵盤輸入x的值*/
  printf("%d\n",(x-2)*180); /*顯示內(nèi)角和,公式為(x-2)*180*/
  /*辨別多邊形是否成立,不成立顯示“Error”,成立顯示“Right”*/
  if (x<=2)
  printf("Error\n");
  else
  printf("Right\n");
  }
  while (x<=2); /*do-while語(yǔ)句*/
  getchar();
  return 0;
  }
  3.功能:由鍵盤輸入兩個(gè)數(shù),顯示器上顯示較大數(shù)。程序如下:
  #include <stdio.h>
  int big(int,int); /*創(chuàng)建整型變量函數(shù)big*/
  int main()
  {
  int x,y;
  scanf("%d,%d",&x,&y);
  printf("big is %d\n",big(x,y));
  /*輸出big函數(shù)的值,因?yàn)閙ain函數(shù)與用戶自定義函數(shù)big無關(guān)系,所以printf后的輸出項(xiàng)表是big(x,y),而不是big(n1,n2)*/
  getchar();
  return 0;
  }
  int big(int n1,int n2) /*用戶自定義函數(shù)big*/
  {
  if (n1>n2)
  return n1; /*返回n1值*/
  else
  return n2; /*返回n2值*/
  }
  4.功能:由鍵盤輸入一個(gè)等腰三角形的層數(shù),畫一個(gè)這樣的三角形。程序如下:
  #include <stdio.h>
  int main()
  {
  int i,j,n;
  printf("n:");
  scanf("%d",&n);
  for (i=1;i<=n;i++) /*循環(huán)n次,每次輸出一行*/
  {
  for (j=1;j<=n-i;j++) /*輸出該行前面的空格*/
  printf(" ");
  for (j=1;j<=2*i-1;j++) /*輸出該行中的星號(hào)*/
  printf("*");
  printf("\n");
  }
  getchar();
  return 0;
  }
  注釋:不能輸入太多的行數(shù),如10000。
  5.功能:由鍵盤輸入一個(gè)最大值,求2到這個(gè)最大值中的所有質(zhì)數(shù)(素?cái)?shù))。程序如下:
  #include <stdio.h>
  #include <math.h> /*數(shù)學(xué)文件*/
  int main()
  {
  int n,m,flag,i,j,num=1;
  printf("n:");
  scanf("%d",&n);
  printf("2~%d:\n",n);
  for (i=2;i<=n;i++) /*循環(huán)查找質(zhì)數(shù)*/
  {
  flag=1;
  m=(int)sqrt(i);
  for (j=2;j<=m;j++)
  if (i%j==0) /*條件為真時(shí)表示不是質(zhì)數(shù),退出for循環(huán)*/
  {
  flag=0;
  break;
  }
  if (flag==1) /*條件為真時(shí)表示i是質(zhì)數(shù)*/
  {
  printf("%4d",i);
  if (num++%10==0) /*每行最多輸出10個(gè)數(shù)*/
  printf("\n");
  }
  }
  printf("\n");
  getchar();
  return 0;
  }
  6.功能:顯示保護(hù)屏幕。程序如下:
  #include <stdlib.h> /*綜合庫(kù)*/
  #include <graphics.h> /*繪圖庫(kù)*/
  int main()
  {
  int gdriver=DETECT; /*定義圖象驅(qū)動(dòng)器為DETECT*/
  int gmode=DETECT; /*定義圖象模式為DETECT*/
  long n; /*定義長(zhǎng)型變量n*/
  initgraph(&gdriver,&gmode,"E:\TC\bgi");
  /*進(jìn)入圖象狀態(tài)(警告:""之間的是圖象驅(qū)動(dòng)器的路徑,建議網(wǎng)友們?cè)O(shè)置為空,即只有"",或設(shè)為編程系統(tǒng)的路徑,例路徑是C:\TC,那么就是輸入C:\TC\bgi)*/
  sleep(1); /*暫停一秒,以保證無誤差進(jìn)入圖象狀態(tài)*/
  for (n=1;n<=40000000;n++) /*畫40000000個(gè)圓*/
  {
  setcolor(rand()); /*作圖顏色隨機(jī)*/
  circle(random(639),random(639),25); /*畫圓,位置隨機(jī),半徑為25*/
  }
  getchar();
  return 0;
  }
[編輯本段]
經(jīng)典教材:
  
The C Programming Language

   本書是由C語(yǔ)言的設(shè)計(jì)者Brian W. Kernighan和Dennis M. Ritchie編寫的一部介紹標(biāo)準(zhǔn)C語(yǔ)言及其程序設(shè)計(jì)方法的權(quán)威性經(jīng)典著作。全面、系統(tǒng)地講述了C語(yǔ)言的各個(gè)特性及程序設(shè)計(jì)的基本方法,包括基本概念、類型和表達(dá)式、控制流、函數(shù)與程序結(jié)構(gòu)、指針與數(shù)組、結(jié)構(gòu)、輸入與輸出、UNIX系統(tǒng)接口、標(biāo)準(zhǔn)庫(kù)等內(nèi)容。
  本書的講述深入淺出,配合典型例證,通俗易懂,實(shí)用性強(qiáng),適合作為大專院校計(jì)算機(jī)專業(yè)或非計(jì)算機(jī)專業(yè)的C語(yǔ)言教材,也可以作為從事計(jì)算機(jī)相關(guān)軟硬件開發(fā)的技術(shù)人員的參考書。 在計(jì)算機(jī)發(fā)展的歷史上,沒有哪一種程序設(shè)計(jì)語(yǔ)言像C語(yǔ)言這樣應(yīng)用如此廣泛。
  本書原著 即為C語(yǔ)言的設(shè)計(jì)者之一Dennis M.Ritchie和著名的計(jì)算機(jī)科學(xué)家Brian W.Kernighan合著的一本介紹C語(yǔ)言的權(quán)威經(jīng)典著作。我們現(xiàn)在見到的大量論述C語(yǔ)言程序設(shè)計(jì)的教材和專著均以此書為藍(lán)本。原著第1版中介紹的C語(yǔ)言成為后來廣泛使用的C語(yǔ)言版本—— 標(biāo)準(zhǔn)C的基礎(chǔ)。人們熟知的“hell, World”程序就是由本書首次引入的,現(xiàn)在,這一程序已經(jīng)成為所有程序設(shè) 計(jì)語(yǔ)言入門的第一課。原著第2版根據(jù)1987年制定的ANSIC標(biāo)準(zhǔn)做了適當(dāng)?shù)男抻啠肓俗钚碌恼Z(yǔ)言形式,并增加了新的示例,通過簡(jiǎn)潔的描述、典型的示例,作者全面、系統(tǒng)、準(zhǔn)確地講述了C語(yǔ)言的各 個(gè)特性以及程序設(shè)計(jì)的基本方法。對(duì)于計(jì)算機(jī)從業(yè)人員來說,本書是一本必讀的程序設(shè)計(jì)語(yǔ) 言方面的參考書。 
  
Expert C Programming

  
  《C專家編程》展示了最優(yōu)秀的C程序員所使用的編碼技巧,并專門開辟了一章對(duì)C++的基礎(chǔ)知識(shí)進(jìn)行了介紹。
  書中C的歷史、語(yǔ)言特性、聲明、數(shù)組、指針、鏈接、運(yùn)行時(shí)、內(nèi)存以及如何進(jìn)一步學(xué)習(xí)C++等問題進(jìn)行了細(xì)致的講解和深入的分析。全書擷取幾十幾個(gè)實(shí)例進(jìn)行講解,對(duì)C程序員具有非常高的實(shí)用價(jià)值。
  本書可以幫助有一定經(jīng)驗(yàn)的C程序員成為C編程方面的專家,對(duì)于具備相當(dāng)?shù)腃語(yǔ)言基礎(chǔ)的程序員,本書可以幫助他們站在C的高度了解和學(xué)習(xí)C++。
  
CTraps and Pitfalls

   作者以自己1985年在Bell實(shí)驗(yàn)室時(shí)發(fā)表的一篇論文為基礎(chǔ),結(jié)合自己的工作經(jīng)驗(yàn)擴(kuò)展成為這本對(duì)C程序員具有珍貴價(jià)值的經(jīng)典著作。寫作本書的出發(fā)點(diǎn)不是要批判C語(yǔ)言,而是要幫助C程序員繞過編程過程中的陷阱和障礙。
  全書分為 8章,分別從詞法分析、語(yǔ)法語(yǔ)義、連接、庫(kù)函數(shù)、預(yù)處理器、可移植性缺陷等幾個(gè)方面分析了C編程中可能遇到的問題。最后,作者用一章的篇幅給出了若干具有實(shí)用價(jià)值的建議。
  本書適合有一定經(jīng)驗(yàn)的C程序員閱讀學(xué)習(xí),即便你是C編程高手,本書也應(yīng)該成為你的案頭必備書籍。
  
Pointers on C

   本書提供與C語(yǔ)言編程相關(guān)的全面資源和深入討論。本書通過對(duì)指針的基礎(chǔ)知識(shí)和高級(jí)特性的探討,幫助程序員把指針的強(qiáng)大功能融入到自己的程序中去。
  全書共18章,覆蓋了數(shù)據(jù)、語(yǔ)句、操作符和表達(dá)式、指針、函數(shù)、數(shù)組、字符串、結(jié)構(gòu)和聯(lián)合等幾乎所有重要的C編程話題。書中給出了很多編程技巧和提示,每章后面有針對(duì)性很強(qiáng)的練習(xí),附錄部分則給出了部分練習(xí)的解答。
  本書適合C語(yǔ)言初學(xué)者和初級(jí)C程序員閱讀,也可作為計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)C語(yǔ)言的參考。
  
C: A Reference Manual

   本書是關(guān)于C語(yǔ)言的詳盡的參考手冊(cè)。最新的第5版增加了對(duì)C99標(biāo)準(zhǔn)的介紹,更加符合當(dāng)前讀者學(xué)習(xí)C語(yǔ)言的需要。.
  全書分為兩大部分,共24章。第一部分討論了C語(yǔ)言的所有語(yǔ)言特征,包括詞法、預(yù)處理機(jī)制、聲明、類型、表達(dá)式、語(yǔ)句以及函數(shù)等基本語(yǔ)言特性。第二部分討論了C語(yǔ)言的標(biāo)準(zhǔn)庫(kù),根據(jù)它們不同的功能分別詳細(xì)介紹。為幫助讀者理解相關(guān)概念,本書在討論C 語(yǔ)言及其標(biāo)準(zhǔn)庫(kù)的各方面問題時(shí),提供了許多實(shí)例和解釋。在第一部分的各章中還提供了練習(xí)題,書后則給出了主要練習(xí)的解答。這些練習(xí)的主要目的是幫助讀者理解C語(yǔ)言的基本機(jī)制及其重要細(xì)節(jié),其中并不涉及復(fù)雜的程序設(shè)計(jì)技術(shù)與問題。..
  本書可以作為高等院校計(jì)算機(jī)專業(yè)C語(yǔ)言課程的教材和參考書,對(duì)于一般的C程序員也有重要的參考價(jià)值。
  《C語(yǔ)言參考手冊(cè)》原書自出版以來,得到C程序員和C語(yǔ)言教師的廣泛推崇,更被普林斯頓等著名大學(xué)用作教學(xué)參考書。本書是經(jīng)過更新的第5版,包括對(duì)最新的C標(biāo)準(zhǔn)(ISO/IEC 9899:1999)的全面介紹。
[編輯本段]
C的學(xué)習(xí)方法
  [1][2]1:工欲善其事,必先利其器
  這里介紹幾個(gè)學(xué)習(xí)C語(yǔ)言必備的東東:
  一個(gè)開發(fā)環(huán)境,例如turbo C 2.0,這個(gè)曾經(jīng)占據(jù)了DOS時(shí)代開發(fā)程序的大半個(gè)江山。但是現(xiàn)在windows時(shí)代,用turbo C有感覺不方便,編輯程序起來很吃力,并且拖放,更沒有函數(shù)變量自動(dòng)感應(yīng)功能,查詢參考資料也不方便。建議使用Visual C ,這個(gè)東西雖然比較大塊頭,但是一旦安裝好了,用起來很方便。
  2:葵花寶典
  學(xué)習(xí)計(jì)算機(jī)語(yǔ)言最好的方法是什么?答曰:讀程序。
  沒錯(cuò),讀程序是學(xué)習(xí)C語(yǔ)言入門最快,也是最好的方法。
  3:登峰造極
  寫程序的最高境界其實(shí)就是掌握各種解決問題的手段(數(shù)據(jù)結(jié)構(gòu))和解決問題的方法(算法)。[1]
[編輯本段]
C語(yǔ)言考試復(fù)習(xí)五要點(diǎn)
  [3]一、了解試卷,胸中有數(shù)
  二、深刻理解,強(qiáng)化概念
  三、歸納整理,適當(dāng)記憶
  四、注重實(shí)踐,融會(huì)貫通
  五、多做練習(xí),查漏補(bǔ)缺

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表