《程序設計與C語言》課件第2章_第1頁
《程序設計與C語言》課件第2章_第2頁
《程序設計與C語言》課件第2章_第3頁
《程序設計與C語言》課件第2章_第4頁
《程序設計與C語言》課件第2章_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章C程序簡介2.1C語言的歷史及其特點2.2C程序示例2.3printf和scanf的一般使用2.4C程序的運行習題22.1C語言的歷史及其特點

C語言是從BCPL(BasicCombinedProgrammingLanguage)語言和B(取BCPL的第一個字母)語言的基礎上演化而來的。BCPL和B語言最初都是為編寫操作系統(tǒng)軟件和編譯器而開發(fā)的語言,它們都是“數(shù)據(jù)無類型”語言,即每個數(shù)據(jù)項都占用內存中的一個字,處理具體數(shù)據(jù)項的責任是由程序員來承擔的。貝爾實驗室在B語言的基礎上開發(fā)出的C語言,最初是用來編寫Unix操作系統(tǒng)的。但由于C語言具有嚴格的設計,與具體硬件無關及其他許多優(yōu)點,使它的應用很快就超越了貝爾實驗室的范圍,迅速地在全球傳播。C語言之所以備受青睞,是和它具有的許多優(yōu)點分不開的。這些優(yōu)點主要有:

(1)豐富的數(shù)據(jù)類型。它不僅有基本類型,而且還有構造類型、指針類型等,能用來實現(xiàn)各種復雜的數(shù)據(jù)結構。

(2)豐富的運算符。C語言運算符相當多,許多操作都可以用運算符表示。由運算符和運算對象可以組成表達式,因而C語言中表達式的類型也是相當豐富的。

(3)具有結構化的控制語句。三種類型的結構化控制在C語言中都有相應的語句加以體現(xiàn),因此可以用C語言進行結構化程序設計。C語言還以函數(shù)作為程序的基本單位,便于實現(xiàn)程序的模塊化。

(4)具有位(bit)操作的功能,可以直接對硬件進行操作。這使得C語言既具有高級語言的所有優(yōu)點,又具有低級語言的許多功能,成為所謂的“中間語言”。用C語言編寫的程序質量好,目標代碼執(zhí)行的效率高。

(5)C語言簡潔緊湊。它只有32個關鍵字和9種控制語句,而且書寫形式自由,所以C語言入門比較容易。正因為C語言具有諸多優(yōu)點,它才能夠風靡全球,成為世界上應用最廣泛的幾種計算機語言之一。它不僅可用于編寫系統(tǒng)軟件,而且也可以用于編寫應用軟件。2.2C程序示例

C語言所用的表述方式對沒有編過計算機程序的人來說可能是陌生的,因此我們先通過一些簡單的例子來初識C語言。

【例2-1】打印一行文本。#include<stdio.h>main(){printf(″WelcometoC!\n″);return0;}運行輸出:WelcometoC!

C語言程序是由函數(shù)組成的,任何C程序都有且只有一個主函數(shù)main(),它是程序的入口,也是程序的出口。函數(shù)的內容(稱為函數(shù)體)由一對花括號括起來。本程序只有一條輸出語句,其中,printf是函數(shù)名,圓括號中用雙引號引起來的字符串是它的參數(shù)。該函數(shù)的功能是把這個字符串打印出來。圓括號后面的分號是語句的標志,任何語句都必須以分號結束。字符串中的“\n”是一個不可顯示的字符,輸出時看不見,它是個控制字符,控制換行。因此一個printf語句可以把一個字符串分多行輸出,而多個printf語句也可以只輸出在一行上。如語句

printf(″China\nBeijing\nTiananmen\n″);的輸出為ChinaBeijingTiananmen這就是由于\n的控制作用產(chǎn)生的結果。下列三個語句printf(″China″);printf(″Beijing″);printf(″Tiananmen″);的輸出為ChinaBeijingTiananmen因為字符串中無“\n”控制符,所以在用printf輸出一個字符串后并不換行,下一個printf語句就跟著在同一行輸出。

【例2-2】求兩個整數(shù)的和。#include<stdio.h>main(){intint1,int2,sum;printf(″Inputaninteger\n″);scanf(″%d″,&int1);printf(″Inputanotherinteger\n″);scanf(″%d″,&int2);sum=int1+int2;printf(″sum=%d\n″,sum);return0;}在main函數(shù)體中的第一行

intint1,int2,sum;是一條聲明語句,其作用是定義變量。變量是內存中的存儲單元,它能夠存儲供程序使用的值。所有的變量在使用之前都必須先定義,定義的方法是在一個類型名后面寫上變量名。這里的“int”是類型名,代表整數(shù)類型,它規(guī)定后面的變量都是整數(shù)類型,因此int1,int2和sum是三個整型變量。語句

printf(″Inputaninteger\n″);執(zhí)行后會在屏幕上打印出“Inputaninteger”并把光標定位在下一行的開始位置。這條語句的作用是提示用戶采取指定的動作。語句

scanf(″%d″,&int1);是用函數(shù)scanf讀取用戶輸入的值。scanf函數(shù)用于讀取來自標準輸入設備(通常是鍵盤)的內容。上述scanf函數(shù)有兩個參數(shù):″%d″和&int1。第一個參數(shù)稱為格式控制串(formatcontolstring),指示用戶應該輸入的數(shù)據(jù)類型,其中的轉換說明符(conversionspecifier)“%d”說明輸入的數(shù)據(jù)應該是一個整數(shù)。第二個參數(shù)以“&”開頭,在C語言中,&稱為地址運算符。&和int1連用是把存儲int1的地址告訴scanf函數(shù),則計算機就把int1的值存儲到這個地址單元。初學者和使用慣其他不需要這種表示方法的程序設計語言的程序員經(jīng)常把&用錯(最常見的錯誤是丟掉&)?,F(xiàn)在只要記住scanf語句中每個變量名的前面都加上一個&即可(指針變量等例外情況以后會提到)。執(zhí)行這兩個語句時,屏幕上會提示你輸入一個整數(shù),且光標在閃動,當你輸入一個整數(shù)并按回車之后,輸入的整數(shù)就被存到變量int1之中。語句

sum=int1+int2;是一個賦值語句,它的作用是首先計算“=”右邊的表達式,再把計算結果賦給左邊的變量?!?”是個賦值號,不是等號,C語言中等號有另外的表示形式。C語言中大多數(shù)計算都是用賦值語句完成的。語句

printf(″sum=%d\n″,sum);在屏幕上打印出“sum=”和變量sum的內容。這里printf函數(shù)有兩個參數(shù):第一個參數(shù)“sum=%d\n”是格式控制串,其中包含直接顯示的字符“sum=”和指示打印整數(shù)的轉換說明符“%d”;第二個參數(shù)sum代表要打印的值。語句

return0;是一個返回語句。這里是把整數(shù)0傳送給運行該程序的操作系統(tǒng)環(huán)境,其作用是把程序成功執(zhí)行完畢這一消息通知給操作系統(tǒng),標志著程序的終止。該程序的運行結果:

Inputaninteger 8↙ Inputanotherinteger 7↙ sum=15

【例2-3】求半徑為r的圓的面積。/*calculatingtheareaofacircle*/#include<stdio.h>#definePI3.14main(){floatr,area;printf(″Inputr=?\n″);scanf(″%f″,&r);area=PI*r*r;printf(″Thearea=%f\n″,area);return0;}運行輸出:

Inputr=? 7.1↙ Thearea=158.2874在這個程序中出現(xiàn)了一些新的東西。

/*calculatingtheareaofacircle*/稱為注解,說明該程序的作用。C語言中注解用“/*”和“*/”括起來,編譯時不予處理。第二行的 #include<stdio.h>是一條預處理指令。在源程序被編譯之前,凡由“?!遍_頭的代碼都先由預處理程序進行處理。上述的代碼行是通知預處理程序把標準輸入/輸出頭文件(stdio.h)中的內容包括到程序中。頭文件stdio.h不僅包含了編譯程序在編譯標準輸入/輸出庫函數(shù)(如printf、scanf等)時要用到的信息,還包含了確定對庫函數(shù)的調用是否正確的信息。 #definePI3.14是一條宏定義指令,也是由預處理程序處理的。其作用是定義一個常量標識符“PI”,在程序中以它代替3.14,這樣做的目的是增加程序的可讀性與可移植性。語句

floatr,area;中的“float”是數(shù)據(jù)類型名,稱為浮點型或實型,規(guī)定其后的變量可以取小數(shù)值。

【例2-4】用函數(shù)計算兩個整數(shù)的最大值。#include<stdio.h>main(){inta,b,c;intmax(int,int);printf(″Input2integers\n″);scanf(″%d%d″,&a,&b);c=max(a,b);printf(″max=%d\n″,c);return0;}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;returnz;}運行輸出:Input2integers812↙max=12這個程序中除主函數(shù)main外,又定義了一個max函數(shù)。其中: intmax(intx,inty)稱為函數(shù)頭,max為函數(shù)名,前面的int為函數(shù)返回值的類型,圓括號中的x、y稱為參數(shù),它們前面的int規(guī)定了參數(shù)的類型。在max函數(shù)體中,語句

intz;定義了一個臨時工作變量,它只在這個函數(shù)中使用,其作用是接收x、y中的最大者,最后返回給調用函數(shù)。if(x>y)z=x;elsez=y;是一個完整的if語句,不要認為是兩個語句。這是一個雙分支語句,首先判斷x是否大于y,如結果為真,則把x賦給z,否則把y賦給z。函數(shù)max頭中的x、y稱為形式參數(shù),其本身并沒有值,只有在調用max函數(shù)時由調用者提供值,調用者提供的值稱為實在參數(shù)。這里調用max函數(shù)的調用者是main函數(shù),它所提供的實在參數(shù)是a,b。a和b都是在主函數(shù)中從鍵盤輸入的值。調用和返回的關系是: main函數(shù)abc↓↓↑

max函數(shù)xyz在main函數(shù)體中的第二個語句 intmax(int,int);稱為函數(shù)聲明。函數(shù)聲明指明函數(shù)名、函數(shù)返回值的類型、函數(shù)的參數(shù)個數(shù)及每個參數(shù)的類型,這里可以不出現(xiàn)參數(shù)名,只用類型名即可。因為max函數(shù)的完整定義出現(xiàn)在main函數(shù)之后,在main函數(shù)體中使用max時還不知它為何物,因此必須預先聲明max函數(shù)的性質,才能使用它。2.3printf和scanf的一般使用在前面的例子中,我們已經(jīng)用scanf函數(shù)和printf函數(shù)進行了輸入/輸出。這兩個函數(shù)是由系統(tǒng)提供的內部函數(shù),它們的聲明包含在頭文件stdio.h中,因此在使用它們之前必須在程序首部增加“#include<stdio.h>”這條預處理命令。本節(jié)先對這兩個函數(shù)作一個簡要的介紹,更詳細的內容在后面章節(jié)中討論。

1.printf函數(shù)

printf函數(shù)的功能是按照指定的格式控制把相應的參數(shù)值在標準輸出設備上(通常是終端)顯示出來。printf函數(shù)的一般使用格式是:

printf(格式控制串,參數(shù)1,參數(shù)2,…);其參數(shù)的個數(shù)是可變的,例如:

printf(″a=%d***b=%d***max=%d\n″,a,b,max);printf函數(shù)中有4個參數(shù),第一個參數(shù)為格式控制串,后三個參數(shù)a、b、max為要輸出的值。格式控制串中有兩類字符,一類是轉換說明符,另一類是非轉換說明符。對非轉換說明符均按原樣輸出,而每一個轉換說明符都要和后面的一個參數(shù)相對應,才能發(fā)揮它的作用;反之,后面每一個要輸出值的參數(shù)必須在前面的格式控制串中有一個轉換說明符對它加以限制才能輸出。因此上面語句的輸出是(設a為8,b為12,max為其最大者):

a=8***b=12***max=12轉換說明符由百分號“%”和控制字符構成。我們已見過的控制字符有“d”(代表十進制整數(shù))、“f”(代表實數(shù)),當然還有其他的控制字符,如c、o、x等,我們在后面會詳細介紹。

2.scanf函數(shù)

scanf函數(shù)的功能是接收用戶從鍵盤上輸入的數(shù)據(jù),按照格式控制符的要求進行轉換,然后送到由對應參數(shù)指示的變量單元中去。scanf函數(shù)的一般使用格式是:

scanf(格式控制串,參數(shù)1,參數(shù)2,…);其參數(shù)個數(shù)也是可變的,每一個參數(shù)都必須是一般變量的地址,也就是說其表示形式為一般變量名前面加上取地址運算符“&”。例如:

scanf(″%d%d%f″,&a,&b,&x);其中:a、b是整型變量,x是實型變量,它們分別由前面格式控制串中的“%d”、“%d”和“%f”來限定。轉換說明符和變量地址之間構成前后一一對應的關系。同樣,格式控制字符也還有其他的字符。執(zhí)行上面的輸入語句,用戶可以從鍵盤上敲入:

8123.1416↙即各數(shù)之間用空格分開,最后按回車鍵,則變量a、b、x中就有了相應的值:

a=8,b=12,x=3.14162.4C程序的運行由于C語言的優(yōu)點和其應用的普及性,因而產(chǎn)生了不少的版本和編譯系統(tǒng)。本書是按照ANSIC(美國國家標準化協(xié)會制定的C標準)來介紹C語言的。在微機上使用的C編譯系統(tǒng)有:TurboC、BorlandC、MicrosoftC、QuickC等,它們在具體實現(xiàn)上略有差別。另外,還可以使用可視化的編譯工具VisualC++。上面所列的幾種C編譯系統(tǒng)都是在DOS環(huán)境下工作的,而VC++是在Windows環(huán)境下工作的。

1.DOS環(huán)境下對于在DOS環(huán)境下運行的系統(tǒng),我們以TurboC為例來介紹如何運行一個C程序。其操作步驟如下:

(1)打開TurboC編譯器。如TurboC安裝在C盤上,則在DOS狀態(tài)下執(zhí)行以下命令:

C:\〉CDTC↙

C:\TC〉CDBIN↙ C:\TC\BIN〉TC↙于是打開C編譯器,出現(xiàn)TurboC的集成開發(fā)環(huán)境。其主菜單如下:

(2)選擇“File/New”命令打開一個新文件;或選擇“File/Open”命令,則系統(tǒng)會提示輸入一個文件名,如輸入的文件名不存在,則就相當于打開一個新文件,比如file1.c,文件的擴展名為.c。

(3)輸入源程序內容。

(4)編譯源程序。有以下兩種方法可以使用:①運行“Compile/Compile”命令。②用〈F9〉快捷鍵。如果源程序沒有錯誤,則出現(xiàn)Success(成功)提示,然后按任意鍵繼續(xù)。如果源程序中有錯誤,則出現(xiàn)Error(錯誤)提示,按任意鍵后光標會停留在出錯的地方,同時在屏幕下方的Message(信息)窗口會出現(xiàn)對該錯誤的英文解釋。你可以根據(jù)提示信息作相應的修改,然后再進行編譯,直至把所有的錯誤都排除為止。

(5)運行程序。這也有兩種操作可供選擇:①運行“Run/Run”命令。②用〈Ctrl〉+〈F9〉快捷鍵。如果有數(shù)據(jù)要輸入,則光標會不停地閃動,當輸入完必要的數(shù)據(jù)之后,按回車鍵,則返回程序畫面,說明程序已經(jīng)運行完畢。

(6)查看運行結果。也有兩種操作可供選擇:①運行“Window/Userscreen”命令。②用〈Alt〉+〈F5〉快捷鍵。此時程序畫面消失,出現(xiàn)運行結果畫面,當查看之后,按任意鍵即返回源程序窗口。

(7)文件的保存??捎脙煞N方法將程序以文件的形式保存起來:①執(zhí)行“File/Save”命令,此時會顯示當前目錄并提示你輸入文件名。目錄可以改變。②執(zhí)行“File/Saveas…”命令,這時會提示你輸入新文件名,但不顯示目錄。當輸入完新文件名后點擊OK按鈕或按回車鍵,文件就以新輸入的名字被保存起來。

(8)在DOS提示符下運行程序。在執(zhí)行完“Compile/Make”命令之后,即產(chǎn)生一個擴展名為.exe的可執(zhí)行文件,如file1.exe。在DOS提示符下,可以把file1作為一個命令加以執(zhí)行:

C:\TC\BIN〉file1↙

(9)在編輯狀態(tài)下按〈F10〉就可返回主菜單。執(zhí)行“File/DOSShell”命令就可進入DOS狀態(tài)。在DOS狀態(tài)下,在命令提示符后輸入exit命令可以退出DOS狀態(tài)。執(zhí)行“File/Quit”命令則退出TurboC環(huán)境。

2.VC++環(huán)境下在VisualC++環(huán)境下運行一個C程序的步驟如下:

(1)按照“開始”→“所有程序”→“MicrosoftVisualStudio6.0”→“MicrosoftVisualC++”的順序啟動VC6.0集成開發(fā)環(huán)境,關閉其中的“TipoftheDay”對話框后,出現(xiàn)如圖2-1所示的窗口。圖2-1“MicrosoftVisualC++”窗口

(2)打開“File/New”菜單,出現(xiàn)“New(新建)”對話框。其中有四個標簽:Files(文件)、Project(工程)、Workspace(工作區(qū))、OtherDocuments(其他文檔)。單擊“Files”標簽后,在左邊的列表框中選擇“C++SourceFile”,在右邊的File下面輸入文件名,比如mypro.c,則該文件所在位置自動列在“Location(目標)”框中顯示的目錄下,這個位置可以修改,見圖2-2。圖2-2“New”對話框

(3)單擊“OK”按鈕,出現(xiàn)程序區(qū),光標在程序區(qū)的左上角閃動??稍诖溯斎氤绦颍热纾海nclude<stdio.h>main(){printf(″ThisismyfirstCprogram\n″);return0;}程序輸入完后,選擇菜單“Build/Compilemypro.c”,如圖2-3所示。圖2-3程序的輸入與編譯這是對源程序的編譯,可生成.Obj目標文件。此時在屏幕下方的調試信息窗口里顯示出編譯的結果:指出有多少致命性的錯誤(error(s))和警告性的錯誤(warning(s))。同時在屏幕的右下角顯示出光標所在的行(Ln)和列(Col)。在調試程序時,可以根據(jù)這里顯示的行數(shù)和編譯后給出的錯誤信息所在的行號盡快地找到錯誤的語句。當編譯無誤后,接著執(zhí)行菜單“Build/Buildmypro.exe”可生成可執(zhí)行文件(.exe)。如圖2-4所示。圖2-4可執(zhí)行文件的生成

(4)運行可執(zhí)行程序。執(zhí)行菜單“Build/Execute

溫馨提示

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

評論

0/150

提交評論