大學(xué)C語言第1章_第1頁
大學(xué)C語言第1章_第2頁
大學(xué)C語言第1章_第3頁
大學(xué)C語言第1章_第4頁
大學(xué)C語言第1章_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計1.教材《計算機(jī)程序設(shè)計基礎(chǔ) C語言程序設(shè)計第二版》 科學(xué)出版社參考書《C程序設(shè)計》清華大學(xué)出版社譚浩強(qiáng)《寫給大家看的C語言書》人民郵電出版社美:GregPerry著《C程序設(shè)計語言》(TheCProgrammingLanguage)機(jī)械工業(yè)出版社美:

BrianW.Kernighan等著

2.課程設(shè)置目的及要求有關(guān)計算機(jī)應(yīng)用的主要技術(shù)基礎(chǔ)課之一。從計算機(jī)語言中數(shù)據(jù)存儲方式、操作符(運(yùn)算符)、輸入/輸出三個方面著手,掌握C語言中的數(shù)據(jù)類型、運(yùn)算符、輸入、輸出、選、循環(huán)、數(shù)組、函數(shù)等重要組成部分的概念及基本編程方法?;菊莆誄語言程序設(shè)計的基本過程,較熟練地利用集成開發(fā)環(huán)境進(jìn)行簡單編程。

學(xué)習(xí)方法理論課注重概念的形成。實(shí)驗(yàn)上機(jī)注重編程技能的培養(yǎng)。Thetrickoflearningprogrammingispractice,practice,andpractice.3.第一章(1)C語言概述主要內(nèi)容1.1C語言簡介1.2簡單的C程序介紹1.3C語言的詞法1.4C程序的上機(jī)方法重點(diǎn)C程序的最基本的語句掌握C程序的上機(jī)方法

4.ALGOL

1960年出現(xiàn),面向問題的高級語言,遠(yuǎn)離硬件,不適合開發(fā)系統(tǒng)軟件。CPL1963年,劍橋大學(xué)推出,比ALGOL接近硬件,但規(guī)模較大。BCPL

(BasicCombinedProgrammingLanguage)1967年,劍橋大學(xué)的M.Richards對CPL進(jìn)行的簡化。B語言1970年,貝爾實(shí)驗(yàn)室的K.Thompson為DEC公司PDP7計算機(jī)上運(yùn)行的一種早期UNIX操作系統(tǒng)設(shè)計了一種類BCPL語言,稱為B語言。規(guī)模小,接近硬件,1971年在PDP-11計算機(jī)上實(shí)現(xiàn),并寫了UNIX操作系統(tǒng)。1.1C語言簡介1.1.1發(fā)展簡史5.C語言1972~1973年M.D.Ritchie設(shè)計出了C語言。貝爾實(shí)驗(yàn)室開發(fā)UNIX操作系統(tǒng)時,M.D.Ritchie和K.Thompson希望有一種既有高級語言特性,又有低級語言特點(diǎn)的語言來描述系統(tǒng)軟件。開始只是作為工作語言在貝爾實(shí)驗(yàn)室內(nèi)部使用,直到1975年UNIX第六版,才引起人們注意。B.W.Kernighan和D.M.Ritchie(K&R

)以UNIX第七版的C編譯程序?yàn)榛A(chǔ),出版了影響深遠(yuǎn)的名著《C程序設(shè)計語言》。

1982年,該書被編譯成中文教材,對當(dāng)時諸如passcal等高級語言產(chǎn)生沖擊。C++語言是C語言發(fā)展的新階段,是一種應(yīng)用廣泛的面向?qū)ο蟮某绦蛟O(shè)計語言。C#語言6.C語言的起源C–DennisRitchie(1972-1973年)

B–KenThompson

(1970年)BCPL–MartinRichards(1967年)

7.各機(jī)構(gòu)推出的C語言編譯系統(tǒng)種類繁多。如TurboC,MicrosoftC,QuickC等,基本部分相同,略有差異。某些執(zhí)行過程的微小差別引起C程序之間的不兼容。美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)從1983年開始,經(jīng)過長達(dá)五年的努力,制定了C語言的新標(biāo)準(zhǔn)ANSIC?,F(xiàn)在提及C語言的標(biāo)準(zhǔn)即該新標(biāo)準(zhǔn)。比原標(biāo)準(zhǔn)C有很大的發(fā)展,解決了經(jīng)典定義中的二義性,給出了C語言的新特點(diǎn)。K&R也以新標(biāo)準(zhǔn)改寫了他們的經(jīng)典著作。任何C程序都必須遵循ANSIC標(biāo)準(zhǔn)。

1.1.2C語言的標(biāo)準(zhǔn)與方言8.語言簡潔、緊湊,壓縮了不必要的成份。運(yùn)算豐富。將括號、賦值、強(qiáng)制類型轉(zhuǎn)換、取變量地址等都以運(yùn)算實(shí)現(xiàn)。數(shù)據(jù)類型豐富。具有現(xiàn)代語言的各種數(shù)據(jù)類型;用戶能擴(kuò)充數(shù)據(jù)類型,能夠?qū)崿F(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu),完成各種問題的數(shù)據(jù)描述。是一種結(jié)構(gòu)化程序設(shè)計語言,具有結(jié)構(gòu)化語言所要求的三種基本結(jié)構(gòu)。

1.1.3C語言的特點(diǎn)9.編譯系統(tǒng)小,生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。輸入/輸出功能用庫函數(shù)實(shí)現(xiàn),編寫的程序移植性好。允許直接訪問物理地址,能進(jìn)行位運(yùn)算,能實(shí)現(xiàn)匯編語言的大部分功能,能直接對硬件進(jìn)行操作。高級語言中的低級語言。(中級語言)語法限制不太嚴(yán)格,程序設(shè)計自由度大,初學(xué)者易犯錯誤。

高級語言C語言匯編語言10.1.2簡單的C程序介紹例1.1Hello程序main(){ printf("Hello,C!\n");}運(yùn)行結(jié)果:Hello,C!主函數(shù)一對大括號是函數(shù)的開始與結(jié)束,所括起來的部分稱為函數(shù)體。本函數(shù)體內(nèi)只有一個語句,即輸出語句printf()。

printf()是C的輸出庫函數(shù),雙引號括起來的字符串按原樣輸出。 其中以“\”開始的字符稱“轉(zhuǎn)義字符”,“n”是換行符,即在輸出“Hello,C!”后回車換行。如果再運(yùn)行一次該程序,兩次的輸出會分別在兩行上顯示出來。 每條語句后面都有一個分號。11.將程序修改為:main(){ printf("Hello,C!");}運(yùn)行兩次結(jié)果是什么?

思考將程序修改為:main(){ printf(“Hello,\nC!\n");}運(yùn)行結(jié)果是什么?12.[例1.2]兩個數(shù)相加main(){ inta,b; /*變量說明*/ intsum; scanf("%d,%d",&a,&b); sum=a+b; printf("sum=%d\n",sum);}運(yùn)行結(jié)果:12,34↙sum=46函數(shù)體通常由兩部分組成:變量說明部分和語句部分。變量說明部分,其后是語句部分。定義了三個int(整型)變量a、b和sum。經(jīng)定義后,程序?yàn)檫@些變量開辟該類型所需要的內(nèi)存單元,用來存入一個值。C程序中對大寫小是嚴(yán)格區(qū)分的,變量一般用小寫。如果在程序中使用變量,就必須要事先定義。變量:先定義,后使用scanf()是輸入函數(shù),其作用是將鍵盤輸入的數(shù)據(jù)存入變量a和b中。&a和&b中“&”的含義是“取地址”,即將兩個數(shù)值分別輸入到變量a和b的地址所標(biāo)志的內(nèi)存單元中。用“/*”和“*/”括起來的部分是注釋內(nèi)容。注釋只是給人看的,對編譯和運(yùn)行不起作用。注釋可以加在程序的任何位置,它的使用是為了提高程序的可讀性。以“%”開始的一個字符是輸入輸出的“格式描述字符”,用來指定輸入輸出時的數(shù)據(jù)類型和格式?!?d”表示“十進(jìn)制整型數(shù)類型”。將a的值與b的值相加,和送給sum以十進(jìn)制輸出sum的值13.

思考將例1.2修改為:

main(){inta,b,sum; /*變量說明*/scanf("a=%d,b=%d",&a,&b);sum=a+b;printf("Sum=%d\n",sum);}

要將12和34分別存入變量a和b中,從鍵盤上如何輸入數(shù)據(jù)?例1.2中,如果變量a和b輸入的數(shù)據(jù)還是12和34,但希望得到的運(yùn)行結(jié)果是“12+34=46”,應(yīng)如何修改printf()?14.1.2.1C程序的結(jié)構(gòu)

函數(shù)C程序由若干函數(shù)組成,其核心成份是函數(shù)。

必須有一個且只能有一個主函數(shù)main(),主函數(shù)的名字為main。可以是系統(tǒng)預(yù)定義的標(biāo)準(zhǔn)函數(shù),如scanf函數(shù)、printf函數(shù)等,參見附錄。大多數(shù)函數(shù)由程序員根據(jù)實(shí)際問題的需要進(jìn)行定義,函數(shù)之間是平行的關(guān)系。C語言被稱為函數(shù)式語言。

15.函數(shù)由函數(shù)首部(函數(shù)的說明部分)與函數(shù)體(函數(shù)的語句部分)兩部分組成。函數(shù)頭給出函數(shù)的特征描述,包括函數(shù)的屬性、類型、名字、參數(shù)及參數(shù)類型。

如,求最大值函數(shù)的函數(shù)首部

floatmax(x,y)

floatx,y;/*函數(shù)類型實(shí)型,函數(shù)名max,函數(shù)參數(shù)x,y,實(shí)型*/

函數(shù)體給出函數(shù)功能實(shí)現(xiàn)的數(shù)據(jù)描述和操作描述,是程序中用大括號括起的若干語句。

如例1.1中的函數(shù)體: { printf("Hello!"); }

函數(shù)體可以為空,可以沒有數(shù)據(jù)描述部分16.2.語句語句是組成程序的基本單位,函數(shù)功能的實(shí)現(xiàn)由若干條語句完成。說明性語句完成數(shù)據(jù)描述,執(zhí)行性語句完成操作描述。語句由若干關(guān)鍵字加以標(biāo)識,如if-else語句、do-while語句等。C語言語句必須以分號結(jié)束。

C語言本身沒有輸入/輸出語句,C語言的輸入/輸出操作由scanf函數(shù)和printf函數(shù)等庫函數(shù)完成。

17.

3.其它預(yù)處理命令C程序開始,以“#”開頭的命令,是預(yù)處理命令。如#include″stdio.h″,用以指明包含文件。

程序注釋程序中以“/*”開始,以“*/”結(jié)束的內(nèi)容。注釋對程序的執(zhí)行無影響,編譯時將被過濾掉。加必要的注釋只為增加程序的可讀性。18.

1.2.2C程序的書寫

一行一般寫一條語句當(dāng)然一行可以寫多條語句,一條語句也可以寫在多行上。整個程序采用緊縮格式書寫表示同一層次的語句行對齊,縮進(jìn)同樣多的字符位置。如循環(huán)體中的語句要縮進(jìn)對齊,選擇體中的語句要縮進(jìn)對齊。大括號的書寫方法本教材采用大括號對齊的書寫方式左邊大括號處于第一條語句的開始位置,右邊大括號獨(dú)占一行,與左邊大括號對齊。在程序中恰當(dāng)?shù)厥褂每招蟹指舫绦蛑械恼Z句塊。增加程序的可讀性。

建議多使用注釋信息,以增加程序的可讀性19.1.3.1字符集字符是可以區(qū)分的最小符號,構(gòu)成程序的原始基礎(chǔ)。

C語言字符集是ASCII字符集的一個子集,包括英文字母、數(shù)字及特殊字符:

·

英文字母:

a~z和A~Z

·

數(shù)字:

0~9

·

特殊字符:空格!#%^&*--+=~<>/\|.,:;?′″()[]{}由字符集中的字符可以構(gòu)成C語言進(jìn)一步的語法成份,如標(biāo)識符、關(guān)鍵字、特殊的運(yùn)算符等。1.3C語言的詞法20.1.3.2標(biāo)識符標(biāo)識符在程序中用來標(biāo)識各種程序成份,命名程序中的一些實(shí)體。如變量、常量、函數(shù)、類型、標(biāo)號等對象的名字。C語言規(guī)定,

標(biāo)識符必須以英文字母或下劃線開頭,是字母、數(shù)字、下劃線的序列。

合法的標(biāo)識符

x,c,a1,a2,op,y_1,zhou_prg,radius,prime,program,prg_1,cout,sun,day不合法的標(biāo)識符

a.1,1computer,x+y,!abc,99999,$100,π,3c21.

C語言中標(biāo)識符要區(qū)分大小寫。標(biāo)識符abc與標(biāo)識符ABC是不同的標(biāo)識符。習(xí)慣上符號常量用大寫字母表示,變量名稱用小寫字母表示。標(biāo)準(zhǔn)C中,標(biāo)識符的長度可以是任意的。

一般有效長度為8個字符,TURBOC中標(biāo)識符最大長度為32個字符。標(biāo)識符取名時不能與關(guān)鍵字同名,也不能與系統(tǒng)預(yù)先定義的標(biāo)準(zhǔn)標(biāo)識符(如標(biāo)準(zhǔn)函數(shù))同名。最好能“見名知義”,以提高程序的可讀性。一般選用相應(yīng)英文單詞或拼音的縮寫形式,盡量不要使用簡單代數(shù)符號,如a,b,c,x,y,z等。每個單詞第一個字母大寫,如StudentName。

“匈牙利”表示法22.

1.3.3關(guān)鍵字關(guān)鍵字又稱為保留字。是構(gòu)成C語言的語法基礎(chǔ)。由系統(tǒng)提供,用以表示特定的語法成份,如類型名稱int、float,語句特征if、switch、while,運(yùn)算符號sizeof等。常見關(guān)鍵字有31個,參見附錄。

關(guān)鍵字有特定的語法含義,不允許用戶重新定義。

在程序中像國家的名字一樣,絕對不能拼錯。23.1.3.4運(yùn)算符運(yùn)算符可認(rèn)為是系統(tǒng)定義的函數(shù)名字。這些函數(shù)作用于運(yùn)算對象,得到一個結(jié)果值。運(yùn)算符通常由1個或多個字符構(gòu)成。分類根據(jù)運(yùn)算對象的個數(shù)不同,運(yùn)算符可分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符,。又稱為一元運(yùn)算符、二元運(yùn)算符和三元運(yùn)算符。24.1.3.5分隔符在C語言中采用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數(shù)參數(shù)表中,分隔各個變量。空格多用于語句各單詞之間,起分隔作用。在關(guān)鍵字、標(biāo)識符之間必須要有一個或多個空格符分隔。25.1.4C程序的上機(jī)方法

計算機(jī)只能識別和執(zhí)行由0和1組成的二進(jìn)制的指令。為了使計算機(jī)能執(zhí)行高級語言源程序,必須先用“編譯程序”把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序”。然后將該目標(biāo)程序與系統(tǒng)的函數(shù)庫和其他目標(biāo)程序連接成為可執(zhí)行的目標(biāo)程序。

打開編程環(huán)境添加源文件編寫源程序編譯源程序連接目標(biāo)文件執(zhí)行可執(zhí)行文件(.exe)26.1.4C程序的上機(jī)方法編輯編譯連接運(yùn)行.c.exe.obj有錯編輯程序編譯程序連接程序源程序目標(biāo)程序可執(zhí)行程序結(jié)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論