C語言程序設(shè)計教程(完成)_第1頁
C語言程序設(shè)計教程(完成)_第2頁
C語言程序設(shè)計教程(完成)_第3頁
C語言程序設(shè)計教程(完成)_第4頁
C語言程序設(shè)計教程(完成)_第5頁
已閱讀5頁,還剩771頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、出品人:蔣東明 主 編:葉東毅 責 編:眭 蔚 制作人:洪曉婧,第一章 程序設(shè)計概述 第二章 C語言概述 第三章 數(shù)據(jù)類型、運算符與表達式 第四章 程序控制結(jié)構(gòu) 第五章 數(shù)組 第六章 指針 第七章 函數(shù),第八章 用戶自定義數(shù)據(jù)類型 第九章 文件,第一章 程序設(shè)計概述,主要內(nèi)容: 第一節(jié) 程序和程序設(shè)計語言 第二節(jié) 算法概述 第三節(jié) 結(jié)構(gòu)化程序設(shè)計方法 本章小結(jié) 習題,第一節(jié) 程序和程序 設(shè)計語言,一、程序與程序設(shè)計的概念,作為一種能自動計算的機器,計算機通過執(zhí)行一系列指令來完成給定的計算工作。因此,要讓計算機完成某項任務(wù),就必須將完成這項 任務(wù)的方法和具體步驟編寫成計算機可以直接或間接執(zhí)行的一

2、系列指令,使之執(zhí)行這些指令后,就可以完成給定的任務(wù)。這樣的一系列 指令的集合就稱為計算機程序或簡稱程序, 編寫這些指令就是程序設(shè)計。,第一章第一節(jié),二、程序設(shè)計語言,程序設(shè)計語言是一組用來定義計算機程序的 語法規(guī)則,用來向計算機發(fā)出指令。人們借助程序設(shè)計語言來編寫程序,解決不同的問題。程序設(shè)計語言按照語言級別可以分為低級語言和高級語言。,第一章第一節(jié),二、程序設(shè)計語言,低級語言有機器語言和匯編語言,主要由機器基本指令集構(gòu)成。它依賴于所使用的計算機硬件,即與特定的機器有關(guān)。它具有運行效率高的特點,但編寫復(fù)雜、費時,容易出差錯,而且程序修改維護困難。 高級語言的表示方法比較接近于自然語言,在一定程

3、度上與具體的計算機硬件無關(guān),相對來說易于學習和使用,而且也便于維護,但是運行效率不如低級語言。,第一章第一節(jié),二、程序設(shè)計語言,下面對程序設(shè)計語言做進一步的解釋。 1.第一代程序設(shè)計語言(1GL):機器語言 2.第二代程序設(shè)計語言(2GL):匯編語言 3.第三代程序設(shè)計語言(3GL):高級語言 4.第四代程序設(shè)計語言(4GL):面向問題語言,第一章第一節(jié),第二節(jié) 算法概述,一、算法的概念,一般來說,為解決一個問題而采取的方法和步驟,就稱為算法。計算機算法則是用計算機求解一個具體問題或執(zhí)行特定任務(wù)的一組有序的操作步驟(或指令),是構(gòu)成計算機程序的核心部分。著名瑞士計算機科學家 N.Wirth曾經(jīng)

4、提出一個公式: 程序=數(shù)據(jù)結(jié)構(gòu)+算法 其中,數(shù)據(jù)結(jié)構(gòu)主要是數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,是對程序中數(shù)據(jù)的描述。算法 則是對程序中操作的描述,也就是操作步驟。,第一章第二節(jié),一、算法的概念,需要注意的是,算法一般只是對處理問題 思想的一種描述,不是計算機可以直接執(zhí)行的程序代碼。因此算法本身是獨立于計算機的,算法的具體實現(xiàn)則由計算機完成。從 這個意義上說,程序設(shè)計的本質(zhì)就是要將 算法轉(zhuǎn)化為計算機程序。 處理一個問題,可以有不同的算法。 設(shè)計和選擇算法是至關(guān)重要的。不僅要保證算法正確,還要考慮算法的質(zhì)量和效率。,第一章第二節(jié),二、算法的表示方法,描述一個算法可以有不同的方式,常見的有以下三種: (1)

5、使用自然語言描述算法; (2)使用流程圖描述算法; (3)使用偽代碼描述算法。,第一章第二節(jié),二、算法的表示方法,下面仍以求1到100之間所有偶數(shù)的和(記為 sum)為例說明算法的3種描述方法。假設(shè)采用前面提到的最后一種算法,即先求出1到50的和再乘以2。,第一章第二節(jié),二、算法的表示方法,第1種:使用自然語言描述求sum的算法。 假設(shè)初始值i為1; 假設(shè)變量sum初始值為0; 如果i50時,執(zhí)行,否則轉(zhuǎn)出執(zhí)行; 計算sum加上i的值后,重新賦值給sum; 計算i加1,然后將值重新賦值給i; 轉(zhuǎn)去執(zhí)行; 計算sum乘以2的值,輸出sum的值,算法結(jié)束。 使用自然語言描述算法的方法比較容易掌握,

6、但是有些操作不易表述清楚,例如循環(huán)操作。另外,還可能造成歧義,使他人對相同的一句話產(chǎn)生不同的理解。,第一章第二節(jié),第2種:使用流程圖描述求sum的算法 傳統(tǒng)的流程圖由一些特定意義的圖形、流程線及簡要的文字說明構(gòu)成,它能明確地表示算法的 運行過程。表1-1給出流程圖中所使用的圖形的 含義。,第一章第二節(jié),表1-1 流程圖的圖形解釋,二、算法的表示方法,第2種:使用流程圖描述求sum的算法。 用流程圖描述的算法如圖1-1所示。從圖1-1中,可以比較清晰地看出算法的執(zhí)行過程。,第一章第二節(jié),圖1-1 求sun的算法流程圖,二、算法的表示方法,第2種:使用流程圖描述求sum的算法。 傳統(tǒng)流程圖的一個主

7、要不足是流程線的用法缺乏規(guī)范。由于流程線可以轉(zhuǎn)移流程的執(zhí)行方向,如果使用不當或流程控制轉(zhuǎn)移不明晰,容易導致程序的混亂和出錯。為此,人們(I.Nassi和B.Schneiderman,1973年)設(shè)計了一種新的流程圖,它沒有使用流程線,而是把整個算法寫在一個大框圖內(nèi),這個大框圖由若干個小的基本框圖構(gòu)成,算法按照從上到下、從左到右的順序執(zhí)行。這種流程圖簡稱N-S流程圖。,第一章第二節(jié),二、算法的表示方法,第2種:使用流程圖描述求sum的算法。,第一章第二節(jié),圖1-2 求sun算法的 N-S流程圖,二、算法的表示方法,二、算法的表示方法,第3種:使用偽代碼描述sum的算法 偽代碼是一種用來書寫程序或

8、描述算法時使用的 非正式表述方法,主要采用自然語言、數(shù)學公式和符號來描述算法的操作步驟,同時采用計算機高級語言(如C、Pascal、VB、C+、Java等)的基本 控制結(jié)構(gòu)來描述算法步驟的執(zhí)行順序。,第一章第二節(jié),二、算法的表示方法,第3種:使用偽代碼描述sum的算法。 下面是用偽代碼描述sum的算法,并附有注釋行。 BEGIN/*算法開始*/ i1;/*為變量i賦初值*/ sum0;/*為變量sum賦初值*/ while i=50/*當變量i=50時,執(zhí)行下 面的環(huán)體語句*/ sumsum+i; ii+1; sum2*sum; 輸出sum的值 END/*算法結(jié)束*/,第一章第二節(jié),第三節(jié) 結(jié)

9、構(gòu)化程序 設(shè)計方法,一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計方法由著名的計算機科學家 E.W.Dijkstra和N.Wirth等人在20世紀60年代后期提出并逐漸發(fā)展起來,其基本思想是采用“自頂向下、逐步求精、分而治之”的原則,將一個較為復(fù)雜的原問題分解成若干相對獨立的小問題,依次細化,直至各個小問題獲得解決為止。,第一章第三節(jié),一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu),按照結(jié)構(gòu)化程序設(shè)計的觀點,任何算法功能都可以通過三種基本控制結(jié)構(gòu)以及它們的嵌套 組合來實現(xiàn),這三種結(jié)構(gòu)就是順序結(jié)構(gòu)、選擇(分支)結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。,第一章第三節(jié),1.順序結(jié)構(gòu) 順序結(jié)構(gòu)是依次執(zhí)行指令的結(jié)構(gòu)。即,程序中的 指令按照順序依次執(zhí)行

10、,每條指令都必須執(zhí)行,且只執(zhí)行一次,如圖1-3所示,圖1-4是相應(yīng)的N-S流程圖。,第一章第三節(jié),圖1-3 順序結(jié)構(gòu),圖1-4 順序結(jié)構(gòu)N-S圖,一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu),2.選擇(分支)結(jié)構(gòu) 選擇(分支)結(jié)構(gòu)根據(jù)邏輯判斷的結(jié)果,做不同的處理。一種典型的選擇(分支)結(jié)構(gòu)是雙分支 結(jié)構(gòu),如圖1-5所示,圖1-6是相應(yīng)的N-S流程圖。,第一章第三節(jié),圖1-3 雙分支結(jié)構(gòu),圖1-4 雙分支結(jié)構(gòu)N-S圖,一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu),3.循環(huán)結(jié)構(gòu) 在循環(huán)結(jié)構(gòu)中,當條件滿足時,反復(fù)執(zhí)行某條件語句或語句組的操作,直到條件不滿足時為止。循環(huán)結(jié)構(gòu)也稱重復(fù)結(jié)構(gòu)。根據(jù)條件設(shè)置方式和 執(zhí)行方式的不同,可以有兩種不同

11、的循環(huán)結(jié)構(gòu),分別為當型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu),如圖1-7和圖1-8所示,圖1-9和圖1-10分別是相應(yīng)的N-S 流程圖。,第一章第三節(jié),一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu),3.循環(huán)結(jié)構(gòu),第一章第三節(jié),圖1-7 當型循環(huán)語句,圖1-8 直到型循環(huán)結(jié)構(gòu),一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu),圖1-9 當型循環(huán)語句,圖1-10 直到型循環(huán)結(jié)構(gòu),二、結(jié)構(gòu)化程序設(shè)計的原則和步驟,要利用計算機語言設(shè)計一個結(jié)構(gòu)化的程序,一般應(yīng)遵循以下幾個原則: (1)使用語言中的順序、選擇、循環(huán)等基本控制結(jié)構(gòu)表示程序邏輯。 (2)選用的控制結(jié)構(gòu)只準許有一個入口和一個 出口。 (3)程序語句組成容易識別的塊,每塊只有一個入口和一個出口。 (

12、4)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)。 (5)盡量避免使用跳轉(zhuǎn)語句(如GoTo、Break等 語句)。,第一章第三節(jié),二、結(jié)構(gòu)化程序設(shè)計的原則和步驟,結(jié)構(gòu)化程序設(shè)計通常包括以下6個主要步驟。 1.問題分析 2.建立數(shù)學模型 3.算法設(shè)計 在設(shè)計算法時,要采用清晰的邏輯結(jié)構(gòu),同時充分 考慮到算法的復(fù)雜性問題,即算法的計算時間和占有的空間應(yīng)盡可能地少。 4.程序編碼 5.測試 6.建立程序文檔,第一章第三節(jié),作為開篇,本章的主要目的是概要性地介紹程序設(shè)計的基本知識,共包含3個小節(jié)的內(nèi)容。第一節(jié)簡要說明了什么是程序、程序設(shè)計和程序設(shè)計語言,并對程序設(shè)計語言的分類進行了介紹。第二節(jié)對算法的

13、概念、其與程序設(shè)計的關(guān)系以及 三種基本的算法表示方法進行了簡單描述。第三節(jié)介紹了結(jié)構(gòu)化程序設(shè)計的基本思想、基本控制結(jié)構(gòu)以及主要步驟。,本章小結(jié),1.1 什么是程序設(shè)計? 1.2 低級語言和高級語言的主要區(qū)別是什么? 1.3 為什么說算法是程序設(shè)計的靈魂? 1.4 結(jié)構(gòu)化程序設(shè)計的基本思想是什么?,習題,第二章 C語言概述,主要內(nèi)容: 第一節(jié) C語言的發(fā)展歷史和特點 第二節(jié) C語言程序的結(jié)構(gòu) 第三節(jié) C語言程序的編譯和運行 本章小結(jié) 習題,第一節(jié) C語言的發(fā)展 歷史和特點,一、C語言的發(fā)展歷史,C語言是一種高效的編譯型結(jié)構(gòu)化程序設(shè)計 語言,最早由美國貝爾實驗室的Dennis M.Ritchie在

14、B語言的基礎(chǔ)上開發(fā)出來,并于 1972年在一臺DECPDP-11計算機上首次實現(xiàn)。 最初的C語言只是為描述和實現(xiàn)Unix操作系統(tǒng)提供一種工作語言而設(shè)計的。1973年,Ken Thompson和Dennis M.Ritchie兩人合作,把 Unix系統(tǒng)90%以上的內(nèi)容用C語言改寫,即 Unix的第5版。,第二章第一節(jié),一、C語言的發(fā)展歷史,隨后幾年,貝爾實驗室又對C語言進行了多次的改進,但仍局限在內(nèi)部使用。直到1975年 Unix第6版公布后,C語言的突出優(yōu)點才引起 人們的普遍注意。 1977年出現(xiàn)了不依賴于具體機器的C語言編譯文本可移植C語言編譯程序,它使 C語言移植到其他機器時所需做的工作大

15、大 簡化,同時也推動了Unix系統(tǒng)迅速地在各種 機器上實現(xiàn)。,第二章第一節(jié),一、C語言的發(fā)展歷史,1978年,Brian W. Kernighan和Dennis M. Ritchie出版了名著C程序設(shè)計語言(The C Programming Language),現(xiàn)在此書已被翻譯成多種語言,成為C語言最權(quán)威的教材之一。 1983年,美國國家標準化協(xié)會(ANSI)根據(jù)C 語言問世以來各種版本對語言的發(fā)展和 擴充,制定了一套ANSI標準,稱為ANSI C。 1987年,ANSI又公布了新標準87ANSI C。1990年,國際標準化組織ISO接受87ANSI C為 ISO C的標準(ISO98991

16、990)。,第二章第一節(jié),二、C語言的特點,語言之所以風靡全球、被廣泛使用,是因為它具有以下優(yōu)點: (1)可移植性強。 (2)語言簡潔緊湊,使用方便靈活。 (3)數(shù)據(jù)類型和運算符豐富多樣。 (4)生成的目標代碼質(zhì)量好,程序執(zhí)行效率高。,第二章第一節(jié),二、C語言的特點,當然,C語言也不是完美無缺的,在盛行的 同時也暴露出了它的局限性: (1)C語言類型自檢機制較弱,使得程序中的一些錯誤不能在編譯時被發(fā)現(xiàn)。 (2)C語言本身缺乏支持代碼重用的機制,使得 各個程序的代碼很難為其他程序所用。,第二章第一節(jié),第二節(jié) C語言程序 的結(jié)構(gòu),一、C語言程序的構(gòu)成,為了說明語言程序結(jié)構(gòu)的特點,先看下面 幾個例子

17、,這些例子體現(xiàn)了語言程序在組成結(jié)構(gòu)上的特點。 例2.1 一個簡單的例子。 #include void main(void) printf(Welcome to C program!n); 將上述程序輸入計算機,進行編譯、連接、運行后在屏幕上輸出: Welcome to C program!,第二章第二節(jié),一、C語言程序的構(gòu)成,通過這個例子,我們可以初步看到: C的程序結(jié)構(gòu)包含預(yù)處理部分“#include ”,它的功能是提供標準輸入輸出函數(shù)有關(guān)的信息。在使用標準函數(shù)庫中的函數(shù)時,C編譯系統(tǒng)要求程序通過預(yù)處理命令#include將提供所使用函數(shù)有關(guān)的信息(如對函數(shù)的聲明)的頭文件“包含”進程序。s

18、tdio.h是C編譯系統(tǒng) 提供的一個頭文件名,stdio是 “standard input ,它的作用是將雙引號內(nèi)的字符串按原樣輸出,“n”是換行符,即在輸出“Welcome to C program!”后換行,分號表示該語句結(jié)束。,第二章第二節(jié),一、C語言程序的構(gòu)成,例2.2 求矩形的面積。 /*求矩形的面積*/ #include /*編譯預(yù)處理命令*/ void main() int x,y,area;/*聲明部分,定義變量x、y、area 為整型*/ /*以下3行為C語句*/ x=8;y=6;/*分別將8、6賦值給變量x、y*/ area=x*y;/*計算變量x和y的積,并將其值賦 給變

19、量area*/ printf(area is %dn,area); /*輸出結(jié)果*/ ,第二章第二節(jié),一、C語言程序的構(gòu)成,以上程序的作用是求長、寬分別為x和y的矩形面積area。程序中的/*/是注釋部分。注釋可以用漢字或英文字符表示,是對程序的解釋和說明,用于提高程序的可讀性,在程序的 編譯和運行時不起作用。注釋可以出現(xiàn)在一行中的最右側(cè),也可以單獨成為一行,如果 需要,程序中的任意一行都可以加上注釋。 第5行是聲明部分,可以用來聲明函數(shù)或變量,本例中的聲明部分定義了兩個變量x和y,int表示指定x和y為整型變量(有關(guān)變量的定義詳見第3章)。,第二章第二節(jié),一、C語言程序的構(gòu)成,第8行求積,使

20、area的值為xy。第9行中“%d”是輸入輸出的“格式控制符”,用來指定輸入 輸出時的數(shù)據(jù)類型和格式。本例中“%d” 表示“以十進制整數(shù)形式”輸出對應(yīng)輸出項的值。 雙引號括起來的部分為“格式控制字符串”, 本例中,格式控制字符串中的 “area is”按原樣輸出,“%d”則在該位置上以十進制整數(shù)形式 輸出括號內(nèi)逗號右端變量area的值,即8與6的積,“n”是換行符,實現(xiàn)換行。因此程序運行時輸出以下信息: area is 48,第二章第二節(jié),一、C語言程序的構(gòu)成,例2.3 基本程序結(jié)構(gòu)例子:主函數(shù)與自定義函數(shù)及調(diào)用。 void main()/*主函數(shù)*/ int a,b,c;/*變量聲明,定義整

21、型變量a、b、c*/ int add(int x, int y); /*函數(shù)聲明,聲明本函數(shù)要 調(diào)用的add函數(shù)*/ scanf(%d, %d, /*輸出c的值*/ ,第二章第二節(jié),一、C語言程序的構(gòu)成,int add(int x,int y)/*定義函數(shù)值為整型,形式參數(shù)x、 y為整型的add函數(shù)*/ int z;/*add函數(shù)中的聲明部分,定義本 函數(shù)中用到的整型變量z*/ z=x+y; return (z);/*返回z的值到該函數(shù)被調(diào)用處*/ 當運行程序時輸入:123 321(代表Enter鍵,全書同),程序輸出如下: add=444,第二章第二節(jié),一、C語言程序的構(gòu)成,本程序包括兩個函

22、數(shù):主函數(shù)main和被調(diào)用的函數(shù)add。add函數(shù)的作用是求兩個變量的和,并返回求和結(jié)果,return語句將z的值返回到 主調(diào)函數(shù)main中。返回值z通過函數(shù)名add帶回到main函數(shù)中調(diào)用add函數(shù)的位置。 程序第4行是對被調(diào)用函數(shù)add的聲明,為了使編譯系統(tǒng)能夠正確識別和調(diào)用add函數(shù),必須在調(diào)用add函數(shù)之前對add函數(shù)進行聲明。有關(guān)函數(shù)聲明將在第7章進一步介紹。,第二章第二節(jié),一、C語言程序的構(gòu)成,通過以上幾個例子,可以看到: (1)C語言程序是由函數(shù)構(gòu)成的,函數(shù)是C語言程序的基本單位。 每一個C語言程序都必須有且只能有一個主函數(shù),還 可以包含任意多個不同名的函數(shù)。一個C語言程序總是從

23、主函數(shù)開始執(zhí)行,C語言規(guī)定必須用main作為主函數(shù)名。被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫函數(shù)(如printf和scanf函數(shù)),也可以是用戶根據(jù)需要自己編制的函數(shù)(如例2.3中的add函數(shù))。main后的一對圓括號中間 可以是空的,但這一對圓括號不能省略。程序中的main()是主函數(shù)的起始行,也是C語言程序執(zhí)行的起始行。,第二章第二節(jié),一、C語言程序的構(gòu)成,(2)一個函數(shù)由兩部分組成:函數(shù)的首部和函數(shù)體。 函數(shù)的首部,即函數(shù)的第一行,包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。函數(shù)參數(shù)可以省略,如main()就省略了函數(shù)參數(shù)。 函數(shù)體,即函數(shù)首部下面的大括弧內(nèi)的部分。函數(shù)體內(nèi)一般

24、有聲明部分和執(zhí)行部分。聲明部分用于定義所 用到的變量。執(zhí)行部分由若干個語句組成,稱為執(zhí)行 語句,必須放在聲明部分之后,語句的數(shù)量不限。 (3)每個C語言程序都是從main函數(shù)開始執(zhí)行的,不論main函數(shù)是放在程序最前頭,還是放在程序最后,或在一些函數(shù)之前,在另一些函數(shù)之后。,第二章第二節(jié),一、C語言程序的構(gòu)成,(4)C語言本身沒有輸入輸出語句。輸入和輸出的 操作都是由庫函數(shù)scanf和printf等函數(shù)來完成的。 (5)可以用/*/對C語言程序中的任何部分作注釋。加上必要的注釋可以幫助人們閱讀和理解程序。,第二章第二節(jié),二、C語言程序的書寫格式,C語言程序所有語句都必須以分號“;”結(jié)束,函數(shù)的

25、最后一個語句也不例外。程序行書寫 格式比較自由,既允許一行內(nèi)寫幾條語句,也允許一條語句分寫在幾行上,而且C語言程序沒有行號。 在注釋部分中,所有“/*”和“*/”必須成對使用,且“/”和“*”以及“*”和“/”之間不能有空格,否則都會出錯。,第二章第二節(jié),二、C語言程序的書寫格式,針對C語言程序的構(gòu)成及書寫格式,在編寫C 語言程序時要注意如下技巧: (1)為避免遺漏,必須配對使用符號,如注釋 符號、函數(shù)體的起止標識符(大括號)、圓括號等,在輸入時,可連續(xù)輸入這些起止標識符,然后再在其中進行插入來完成內(nèi)容的編輯。 (2)注釋的位置,可以單占一行,也可以跟在 語句的后面。 (3)一個語句或注釋如果

26、一行寫不下,可另起 一行繼續(xù)寫。 (4)注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運行。,第二章第二節(jié),第三節(jié) C語言程序的 編譯和運行,一、C語言程序的編譯過程簡介,1.編輯C語言程序 當確定了解決問題的方案后,可以用C語言系統(tǒng) 提供的編輯功能編寫一個C語言源程序,源程序的擴展名為.c。 2.編譯C語言程序生成目標程序 由于計算機只能識別和執(zhí)行由0和1組成的二進制 文件,而不能識別和執(zhí)行用高級語言編寫的源 程序,所以必須先用C語言系統(tǒng)的編譯程序(即 編譯器)對其編譯,以生成以二進制代碼形式表示的目標程序,目標程序的擴展名為.obj。,第二章第三節(jié),一、C語言程序的

27、編譯過程簡介,3.連接生成可執(zhí)行程序文件 將目標程序與系統(tǒng)的函數(shù)庫以及其他目標程序進行連接裝配,才能形成可執(zhí)行程序文件,可執(zhí)行文件的擴展名為.exe。 4.運行可執(zhí)行程序文件 將可執(zhí)行程序文件(擴展名為.exe)調(diào)入內(nèi)存并 運行,得到程序的結(jié)果。,第二章第三節(jié),二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,Turbo C+3.0開發(fā)環(huán)境是一個集成編輯、編譯、連接、調(diào)試的C語言開發(fā)環(huán)境。以下介紹在 Turbo C+3.0環(huán)境中運行C語言程序的步驟。 1.啟動Turbo C+3.0環(huán)境 假設(shè)Turbo C+3.0安裝在C盤的tc3子目錄下。 方法一: 從“開始”菜單選擇“運行”,輸入:cm

28、d 再輸入cd c:tc3bin 再輸入tc,出現(xiàn)如圖2-2所示的Turbo C+3.0主菜單界面。 方法二: 進入tc.exe文件所在的子目錄(如c:tc3bin),雙擊tc.exe文件,或直接雙擊桌面上tc.exe文件的快捷方式圖標,也出現(xiàn)如圖2-2所示的主菜單界面。,第二章第三節(jié),第二章第三節(jié),圖2-2 進入Turbo C+3.0主菜單界面,二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,2.編輯源程序文件 從File菜單選擇New(如圖2-3所示),進入新建C語言程序環(huán)境(如圖2-4所示),即可輸入源程序,輸入的源程序如下: #include void main() int i,

29、sum=0; for (i=1; i=100; i+) if (i%2!=0) sum=sum+i; printf (%d,sum); 這是一個求1100之間所有奇數(shù)的和的程序。,二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,第二章第三節(jié),二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,第二章第三節(jié),圖2-3 進入新建C語言程序環(huán)境,圖2-4 編輯C語言程序,3.保存源程序文件 從File菜單選擇Save或者直接按F2鍵,選取路徑并起 文件名,如起名為example.c,如圖2-5所示。,二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,第二章第三節(jié),圖2-5 保存C語言程序

30、,4.編譯與連接源程序文件 從Compile菜單選擇Compile或者直接按快捷鍵Alt+F9,即可對源程序(如example.c)進行編譯,生成目標程序文件(.obj),如圖2-6所示;再從Compile菜單選擇 Link,進行連接,得到一個可執(zhí)行文件(.exe),如圖 2-7所示。也可將編譯與連接合并為一個步驟進行,操作方法是從Compile菜單選擇Make或者直接按 F9鍵。,二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,第二章第三節(jié),二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,第二章第三節(jié),圖2-6 編譯C語言程序生成目標程序,圖2-7 連接生成可執(zhí)行程序,5.運行程

31、序 從Run菜單選擇Run或者直接按快捷鍵Ctrl+F9,運行 程序并輸出結(jié)果。從Window菜單選擇User Screen或者 直接按Alt+F5,切換到用戶屏幕,可查看程序的運行 結(jié)果,如圖2-8所示。,二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,第二章第三節(jié),圖2-8 程序的執(zhí)行結(jié)果,6.退出Turbo C 從File菜單選擇Quit或者直接按Alt+X鍵,退出Turbo C+3.0環(huán)境。,二、Turbo C+3.0環(huán)境中運行C語言程序的步驟,第二章第三節(jié),本章介紹C語言的發(fā)展歷史、特點,C語言程序的基本結(jié)構(gòu),C語言程序的基本組成以及C語言程序的編譯與執(zhí)行。 C 語言是功能強大

32、的計算機高級語言,它既是系統(tǒng)描述語言,又是通用的程序設(shè)計語言。C語言有自己規(guī)定的基本字符集、標識符、關(guān)鍵字、語句和標準庫函數(shù)等。,本章小結(jié),C程序的基本結(jié)構(gòu)是:程序由函數(shù)組成,函數(shù)由語句組成。一個完整的語言程序必須有且只能有一個主函數(shù)main,可以有零個或若干個子函數(shù)。這些子函數(shù)可以是用戶自定義的函數(shù),也可以是C編譯系統(tǒng)提供的標準庫函數(shù)。每個函數(shù)都由函數(shù)說明和函數(shù)體兩部分組成,函數(shù)體必須用一對大括弧括起來。 C語言程序中的每個語句都以分號作為結(jié)束標志。,本章小結(jié),一個語言程序需要經(jīng)過編譯和連接后才能 運行。對語言程序編譯后生成目標文件 (.obj),對目標文件和庫文件連接后生成可執(zhí)行文件(.e

33、xe)。,本章小結(jié),2.1 試述C語言的特點。 2.2 舉例說明C語言程序的基本構(gòu)成和書寫 格式。 2.3 參照例題,編寫一個C語言程序,輸出 以下信息: = Hello,World! =,習題,2.4 編寫一個C語言程序,輸入兩個數(shù),輸出其中大的數(shù)。同時編程實現(xiàn)求三個數(shù)中的 最大者。 2.5 輸入并運行例題中的程序,熟悉調(diào)試C 語言程序的方法與步驟。,習題,第三章 數(shù)據(jù)類型、運算符與表達式,主要內(nèi)容: 第一節(jié) C語言的數(shù)據(jù)類型 第二節(jié) 常量 第三節(jié) 簡單變量 第四節(jié) 庫函數(shù) 第五節(jié) 運算符和表達式 本章小結(jié) 習題,第一節(jié) C語言的 數(shù)據(jù)類型,一、C語言的數(shù)據(jù)類型,在使用計算機程序處理實際問題

34、時,可能遇到各種類型的數(shù)據(jù),例如在處理學生信息時, 可能遇到這樣一些數(shù)據(jù):年齡20歲,它是 整數(shù);身高1.75米,它是實數(shù);姓名“張三”,它是一串字符。由此可見,我們編寫的程序 應(yīng)該具有處理多種類型數(shù)據(jù)的能力。 圖3-1列出了C語言的數(shù)據(jù)類型。,第三章第一節(jié),一、C語言的數(shù)據(jù)類型,第三章第一節(jié),一、C語言的數(shù)據(jù)類型,C語言的基本數(shù)據(jù)類型可以直接用于定義常量或變量,而構(gòu)造數(shù)據(jù)類型需要由用戶根據(jù)自己要表達的數(shù)據(jù)形式自行構(gòu)造,然后才能使用。 C語言在處理常量和變量時,都是使用內(nèi)存中具有特定屬性的存儲單元來存放數(shù)據(jù),但兩者的差別是,存儲常量的內(nèi)存單元,其值在程序運行中是不能被改變的;而存儲變量的內(nèi)存

35、單元,其值在程序運行中是允許改變的。,第三章第一節(jié),第二節(jié) 常量,一、整型常量,整型常量用于表達一個確定的整數(shù),如32。它有以下三種形式: 1.十進制整數(shù) 2.八進制整數(shù) 以0(零)開頭,由07的數(shù)字序列構(gòu)成,如0123表示八進制數(shù)123,其值為182+281+380=83,即十進制的83。 3.十六進制整數(shù) 以0 x或0X開頭(0 x中的0是數(shù)字零),可以由數(shù)字09和字母AF或af構(gòu)成,AF字母用于表示數(shù)字1015。例如,0 x2F表示2161+15160=47,即十進制的47。,第三章第二節(jié),一、整型常量,4.整數(shù)的后綴 一個整型常量的尾部加上字母L或l,則表示該整數(shù)為長整型常量。例如,2

36、3L是十進制的長整型常量,0 x23L是十六進制的長整型常量。 也可以用后綴U或u表示無符號整型常量。例如,234U是十進制無符號整型常量,023U是八進制無符號整型常量。 后綴L和U可以同時使用,例如78LU,表示無符號長 整型,并且L和U兩種后綴的順序任意。 5.整數(shù)在機內(nèi)的存儲形式 我們知道,數(shù)據(jù)在計算機中是以二進制形式進行處理的。在大多數(shù)機器中,整數(shù)采用補碼的形式來存儲。 對于C語言編譯系統(tǒng),Turbo C使用2個字節(jié)存儲一個 整數(shù),而Visual C+ 6.0采用4個字節(jié)存儲一個整數(shù)。,第三章第二節(jié),二、浮點型常量,C語言中的浮點型常量也就是實數(shù),有兩種 表示形式。 1.十進制小數(shù)形

37、式 2.指數(shù)形式 它由數(shù)字09、字母e(或E)和+、-號組成,它的形式為aEn,意為a10n,其中a為十進制整數(shù)或小數(shù),n為十進制整數(shù)。例如:2.5e3(表示2.5103),-3.5e-2(表示 -3.510-2)。,第三章第二節(jié),二、浮點型常量,在表示浮點型常量時,需要注意以下幾點: (1)以指數(shù)形式表示實數(shù)時,a和n都不能省略,n必須為整數(shù)。例如,e5、3e、3e2.5等都是不合法的。 (2)以十進制小數(shù)形式表示實數(shù)時,整數(shù)和小數(shù)部分可省略其中任一個。例如,35、26.都是合法的。 (3)浮點型常量默認的是double型(雙精度),如果在后面加上F或f,則其類型為float(單 精度),如

38、2.45F、3.5e2F。 (4)如果在一個浮點型常量后面加上一個L或l,則表示為long double型,如2.4e2L。,第三章第二節(jié),二、浮點型常量,實數(shù)在機內(nèi)是以指數(shù)形式存儲的,以float類型為例,大多數(shù)C編譯系統(tǒng)使用4個連續(xù)的字節(jié)(即32位)存儲float類型數(shù)據(jù)。 由實數(shù)的存儲形式可以看出,小數(shù)部分占的 位數(shù)越多,所能表示的精度越高,指數(shù)部分 占的越多,所能表示的數(shù)值范圍越大。,第三章第二節(jié),三、字符常量,字符常量是屬于ASCII碼字符集中的一個 字符,包括英文大小寫字母、數(shù)字、標點符號以及特殊符號。字符常量的表現(xiàn)形式有兩種: (1)使用單引號括起來的一個字符。例如,a、 7、?

39、都是字符常量。 (2)使用轉(zhuǎn)義字符表示方法表示的字符。轉(zhuǎn)義 字符是以反斜杠“”開頭,后面跟字符或數(shù)字,并用單引號括起來表示字符常量。例如,n表示 一個換行符(ASCII碼值為10)。換行符是一種 控制符,在屏幕上不能顯示,用于在輸出時進行 換行控制。表3-1給出了常用的轉(zhuǎn)義字符及其含義。,第三章第二節(jié),三、字符常量,第三章第二節(jié),三、字符常量,實際上,C語言在內(nèi)存中存放字符時是用字符數(shù)據(jù)的ASCII碼值存儲的。例如,字符a的 ASCII碼值為97,它在內(nèi)存中的存儲形式與 整數(shù)97是一樣的。也就是說在C語言中,在 ASCII碼 范圍內(nèi)的整數(shù)與字符可以通用。一個字符可以以字符形式輸出,也可以以整數(shù)

40、形式輸出。 此外,字符數(shù)據(jù)也可以參加算術(shù)運算,即相當于使用其ASCII碼值進行運算。,第三章第二節(jié),四、字符串常量,字符串常量是由一對雙引號括起來的字符 序列,字符串中可以包含任何字符,如空格、轉(zhuǎn)義符,甚至漢字。例如,How do you do.、$24.5、中國n都是合法的字符串。雙引號不屬于字符串,而是起界定作用。 在C語言中沒有提供字符串類型,而是使用 字符數(shù)組來存儲字符串。字符串在機內(nèi)存儲時,所占的字節(jié)數(shù)等于字符串常量中的字符 個數(shù)加1。增加的一個字節(jié)用于存放0(空 字符,ASCII碼為0),它作為字符串的結(jié)束 標志。,第三章第二節(jié),五、符號常量及其定義,C語言提供了一種利用一個標識符

41、來代表一個常數(shù)的方法,即定義符號常量,這樣可以更 確切表明其含義。 C語言中使用#define定義符號常量,即給常量起一個名字。其語法格式為: #define標識符常量 例如: #define PI 3.14 #define PRICE 30,第三章第二節(jié),五、符號常量及其定義,在上面例子中,PI和PRICE稱為符號常量。在C 語言中,define稱為宏定義,#是預(yù)處理命令的開始標志。一旦定義了符號常量,當編譯程序?qū)Τ绦蜻M行預(yù)處理時,在程序中所有使用這些符號常量的地方都會被該常量值取代。,第三章第二節(jié),五、符號常量及其定義,例3.2符號常量的使用。 #include #define PI 3.

42、14/*定義符號常量PI*/ void main() double r,s; r=20.0; s=PI*r*r;/*使用符號常量PI*/ printf(s=%fn,s); ,第三章第二節(jié),程序運行結(jié)果為: s=1256.000000 以上的s=PI*r*r;語句在編譯預(yù)處理后產(chǎn)生如下的語句: s=3.14*r*r;,五、符號常量及其定義,使用符號常量是一種好的編程風格,它的好處在于: (1)程序便于維護。如果常量在程序中多處出現(xiàn),當需要改變其值時,要修改多個地方。如果使用符號常量,只要在程序開頭的宏定義部分修改一次,就能做到一改全改。這就減少了工作量,并且不易出錯。 (2)提高程序可讀性。從例

43、3.2就可以看出,當我們閱讀程序時看到PI,就可以知道它代表圓周率。,第三章第二節(jié),第三節(jié) 簡單變量,一、變量的命名,變量代表計算機內(nèi)存中的一個存儲單元,與 常量相反,變量的值在程序運行過程中是可以改變的。變量有以下特性:變量名、變量值、變量類型、變量的存儲地址、變量的存儲屬性。 高級語言的編譯器在編譯連接時會給每一個 變量分配一個內(nèi)存單元,變量的值就存儲在該內(nèi)存單元中。訪問變量的值,實際上是通過 變量名找到相應(yīng)的內(nèi)存地址,然后對其中存儲的數(shù)據(jù)進行訪問。,第三章第三節(jié),一、變量的命名,C語言中變量的命名是有特殊限制的。在C語言中,對變量、符號常量、函數(shù)、宏、標號、 文件名等的命名的有效字符序列

44、稱為標識符(ide-ntifier)。C語言規(guī)定,標識符可以由字母、數(shù)字和下劃線構(gòu)成,且必須由字母或下劃線開頭,其中字母是指英文26個字母,可以是 大寫或小寫。,第三章第三節(jié),一、變量的命名,C語言規(guī)定,關(guān)鍵字不能作為變量名使用(這是將關(guān)鍵字也稱為保留字的原因)。例如,int、if、typedef等。此外,C語言中有些標識符是系統(tǒng)預(yù)定義的,它們在程序中有特殊的含義,例如,printf、open、ctype等,雖然可以對它們進行重新定義,但建議不要作為變量名使用。 以下是合法的標識符,可以作為變量名。 n, i2, str_len, g_iMax, month, _number 以下是不合法標識

45、符: 3d, ye#, xy, $25, int,第三章第三節(jié),一、變量的命名,C語言嚴格區(qū)分大寫和小寫字母,因此STUDENT、student、Student是三個不同的標識符。一般使用小寫字母表示變量名,大寫字母表示符號常量名,這樣的區(qū)分有利于增加程序的可讀性。,第三章第三節(jié),二、變量的基本數(shù)據(jù)類型,變量的數(shù)據(jù)類型決定了該變量的取值類型、 取值范圍、所占的內(nèi)存空間的大小以及所能 參加的運算方式等。 一個變量的數(shù)據(jù)類型可以是圖3-1所列出的C 語言的數(shù)據(jù)類型中的一種。C語言基本數(shù)據(jù) 類型有以下幾類:整型int及其相關(guān)類型、浮點型float及其相關(guān)類型、字符型char及其相關(guān) 類型。表3-2列

46、出了Turbo C的基本數(shù)據(jù)類型及相關(guān)屬性。,第三章第三節(jié),二、變量的基本數(shù)據(jù)類型,第三章第三節(jié),三、變量的類型定義,在C語言中規(guī)定必須對所有用到的變量先定義后使用。定義變量的語法格式如下: 數(shù)據(jù)類型名 變量名表; 變量名表是一個或多個標識符,每個標識符之間用逗號“,”分隔開,例如: int i, j, k; 以上語句定義了三個整型變量i、j、k。其中int與i之間至少要留一個空格,語句最后要以分號“;”結(jié)尾,這是因為變量定義是一條語句而不是一條 命令(C語言規(guī)定一個語句的終結(jié)符是分號)。,第三章第三節(jié),四、變量的初始化,一個變量被定義后,它是否就有值了呢?答案是它不是沒有值,而是它的值未被確

47、定。 因此,在使用一個變量時,必須要確保其有 確定的值,這就需要對該變量指定初值,即對變量進行初始化。 以下例子演示了對變量進行初始化的方法: double d1=3.35,d2; 也可以用賦值語句給變量指定值,以上語句相當于:double d1,d2; d1=3.35; 其中,d1的值被賦予23.35,而d2的值是不確定的。,第三章第三節(jié),四、變量的初始化,注:C編譯器對靜態(tài)局部變量和全局變量會 自動賦給初值,如果是數(shù)值類型的靜態(tài)局部 變量和全局變量,編譯器通常賦給初值0, 如果是字符類型的靜態(tài)局部變量和全局變量,編譯器通常賦給初值空字符,即ASCII碼為0的值(有關(guān)靜態(tài)變量和全局變量的相關(guān)

48、知識將在第7章中介紹)。,第三章第三節(jié),第四節(jié) 庫函數(shù),一、庫函數(shù)的使用方式,C語言提供的每一個庫函數(shù)都在對應(yīng)的某個 頭文件中聲明其函數(shù)原型,在使用某個庫函數(shù)前都應(yīng)在程序開始處包含相應(yīng)的頭文件。 文件包含可以用預(yù)處理命令#include來實現(xiàn),例如,數(shù)學函數(shù)的原型都在文件math.h中 聲明,因此要調(diào)用數(shù)學函數(shù)abs(x)求整數(shù)x的 絕對值,就應(yīng)在程序開始位置使用如下預(yù)處理命令: #include 或 #include math.h,第三章第四節(jié),預(yù)處理命令不是C語句,因此結(jié)尾不加分號“;”,這一點在編程時要注意。,一、庫函數(shù)的使用方式,在包含了與某個庫函數(shù)對應(yīng)的頭文件后,就 可以在程序中調(diào)用

49、該函數(shù)。 C語言函數(shù)調(diào)用的語法格式為: 函數(shù)名(實參列表); 如果是調(diào)用無參函數(shù),則“實參列表”可以沒有,但括號不能省略。,第三章第四節(jié),二、常用數(shù)學函數(shù),C語言中預(yù)先定義了豐富的數(shù)學函數(shù),用于 進行常見的數(shù)學運算。這些數(shù)學函數(shù)可以分為以下幾類:三角函數(shù)(trigonometric functions)、雙曲函數(shù)(hyperbolic functions)、指數(shù)與對數(shù)函數(shù)(exponential and logarithmic function-s)、冪與絕對值函數(shù)(power and absolute val-ue functions)以及其他函數(shù)。 C語言提供的數(shù)學函數(shù)的原型在頭文件mat

50、h.h中聲明,使用時應(yīng)在程序頭部包含math.h文件: #include 或 #include math.h,第三章第四節(jié),二、常用數(shù)學函數(shù),1.三角函數(shù)sin、cos、tan 函數(shù)原型: double sin(double x); double cos(double x); double tan(double x); 功能:函數(shù)sin、cos、tan用于計算正弦、余弦和 正切值,這三個函數(shù)的參數(shù)都是代表弧度值的 double型數(shù)據(jù)。,第三章第四節(jié),二、常用數(shù)學函數(shù),2.絕對值函數(shù)abs、fabs、labs 函數(shù)原型: int abs(int x); double fabs(double x)

51、; long labs(long x); 功能:abs、fabs和labs函數(shù)分別適用于求整數(shù)、 浮點數(shù)和長整型數(shù)的絕對值,這三個函數(shù)返回參數(shù)x的絕對值。 例如,abs(-10)等于10,fabs(-5.6)等于5.6,labs (-9999)等于9999。,第三章第四節(jié),二、常用數(shù)學函數(shù),3.exp和pow函數(shù) 函數(shù)原型: double exp(double x); double pow(double x, double y); 功能:exp函數(shù)返回以e為底,參數(shù)x為冪的指數(shù)值 ex;pow函數(shù)返回x的y次冪xy。 例如,exp(2.0)等于7.389056,pow(2.0,3.0)等于8.

52、0。,第三章第四節(jié),二、常用數(shù)學函數(shù),4.log和log10函數(shù) 函數(shù)原型: double log(double x); double log10(double x); 功能:log函數(shù)返回以e為底,參數(shù)x的自然對數(shù)值 lnx;log10函數(shù)返回以10為底,參數(shù)x的對數(shù)值 log10 x。 例如,log(7.389056)等于2.0,log10(100.0)等于2.0。,第三章第四節(jié),二、常用數(shù)學函數(shù),5.sqrt函數(shù) 函數(shù)原型: double sqrt(double x); 功能:sqrt函數(shù)返回參數(shù)x的平方根。 例如:sqrt(4.0)等于2.0。 6.隨機函數(shù)rand、srand ran

53、d和srand函數(shù)的原型在頭文件stdlib.h中定義, 使用時應(yīng)在程序開頭包含stdlib.h文件。 函數(shù)原型: int rand(void); void srand(unsigned int seed);,第三章第四節(jié),二、常用數(shù)學函數(shù),功能:rand函數(shù)返回一個值在0RAND_MAX之間的偽隨機(pseudorandom)整數(shù),ANSI C要求 RAND_MAX至少為32767。srand函數(shù)用參數(shù)seed來設(shè)置一個偽隨機數(shù)序列的開始點,以便調(diào)用rand函數(shù)時產(chǎn)生一個新的偽隨機數(shù)序列。參數(shù)seed稱為隨機數(shù)種子。,第三章第四節(jié),三、字符輸入輸出函數(shù),C語言提供的字符輸入輸出函數(shù)的原型在

54、頭文件stdio.h中聲明,在使用時應(yīng)在程序頭部包含stdio.h文件: #include 或 #include stdio.h 1.字符輸出函數(shù)putchar 函數(shù)原型: int putchar(int c); 功能:putchar函數(shù)把一個字符輸出到標準輸出設(shè)備(通常是顯示器)上,其中參數(shù)c可以是字符變量或常量,也可以是一個代表ASCII碼的整數(shù)。,第三章第四節(jié),三、字符輸入輸出函數(shù),例3.7利用getchar函數(shù)輸入一個字符。 #include void main() char ch;/*定義字符型量ch*/ ch=getchar();/*等待鍵盤輸入字符并按回車, 并把第一個字符賦給c

55、h*/ putchar(ch);/*輸出字符*/ ,第三章第四節(jié),三、字符輸入輸出函數(shù),執(zhí)行以上程序,運行到ch=getchar()語句時,程序等待輸入字符,從鍵盤輸入一個字符并按回車鍵后,getchar函數(shù)得到輸入的字符,并賦給字符型變量ch,程序接著輸出該字符。 注意:getchar只接收一個字符,如果輸入多個字符再按回車鍵,也只有第一個字符被getchar函數(shù)接收。,第三章第四節(jié),四、格式化輸入輸出函數(shù)的一般使用,格式化輸入輸出函數(shù)是C語言提供的庫函數(shù),其聲明包含在頭文件stdio.h中,因此在程序中若要使用格式化輸入輸出函數(shù),也需要在源程序的開頭包含該頭文件。 1.格式化輸出函數(shù)pri

56、ntf 在C語言中提供了格式化輸出函數(shù)printf,該函數(shù)的功能是將數(shù)據(jù)按指定的格式輸出到標準輸出流中。 調(diào)用printf函數(shù)的語法格式為: printf(格式控制字符串,輸出列表);,第三章第四節(jié),四、格式化輸入輸出函數(shù)的一般使用,格式控制字符串是使用雙引號括起來的用于表示 輸出格式的字符串,它包括兩部分:一部分為普通字符和轉(zhuǎn)義字符,另一部分為輸出格式控制符。 (1)普通字符在輸出時按原樣輸出,轉(zhuǎn)義字符則輸出它所代表的字符(通常為控制字符)。 (2)輸出格式控制符:以%號開始,后面跟格式字符,用于以指定的格式輸出數(shù)據(jù)。例如,輸出int型數(shù)據(jù)用 %d,輸出float型和double型數(shù)據(jù)用%f

57、,輸出字符型數(shù)據(jù)用%c,輸出字符串用%s等。 輸出列表是若干要輸出的數(shù)據(jù)項,它可以是常量、變量或表達式,各參數(shù)之間以逗號“,”隔開。 輸出項的類型、個數(shù)、順序應(yīng)與格式控制符一一 對應(yīng)。,第三章第四節(jié),四、格式化輸入輸出函數(shù)的一般使用,例3.8 用printf函數(shù)輸出數(shù)據(jù)。 #include void main() int i=100; double d=35.5; printf(Integer Number=%dnDouble Number=%fn,i,d); 程序運行結(jié)果為: Integer Number=100 Double Number=35.500000,第三章第四節(jié),四、格式化輸入輸

58、出函數(shù)的一般使用,上面例子中的格式控制字符串包括兩個格式控制符(%d和%f),以及一些普通和轉(zhuǎn)義字符。輸出時,在兩個格式控制字符的位置上,依次用i和d的值替換。Turbo C默認浮點型數(shù)據(jù)輸出6個小數(shù)位數(shù)。 由于i和d分別是整型和浮點型數(shù)據(jù),因此分別用 格式控制符%d和%f與之對應(yīng)。,第三章第四節(jié),四、格式化輸入輸出函數(shù)的一般使用,關(guān)于printf()函數(shù)的其他說明: (1)如果要輸出字符串,可以用格式控制符%s。 (2)在printf函數(shù)中,可以控制輸出數(shù)據(jù)的寬度。 整型數(shù)據(jù)輸出:%md,其中m是非負整數(shù),表示以m列寬度輸出數(shù)據(jù),若數(shù)據(jù)本身不足m位,則左補空格(數(shù)據(jù)右對齊)。若 數(shù)據(jù)的實際寬

59、度超過m列,則按實際寬度輸出。 浮點型數(shù)據(jù)輸出:%m.nf,指定數(shù)據(jù)輸出總的寬度占m列,小數(shù)部分占n列。若數(shù)據(jù)本身小于m位,則左補空格。 字符串數(shù)據(jù)輸出:%ms,表示字符串輸出占m列。,第三章第四節(jié),四、格式化輸入輸出函數(shù)的一般使用,2.格式化輸入函數(shù)scanf scanf函數(shù)的功能是從標準輸入流中按指定格式 接收輸入的數(shù)據(jù)。 調(diào)用scanf函數(shù)的語法格式為: scanf(格式控制字符串,地址列表); 其中“格式控制字符串”用于指定輸入的格式,它由格式控制符和普通字符兩部分構(gòu)成。地址列表是若干輸入數(shù)據(jù)項的內(nèi)存地址,它通常是變量的 地址,各地址之間用逗號“,”分隔?!案袷娇刂谱址敝械母袷娇刂品麛?shù)量和類型要與輸入數(shù)據(jù)項從左到右一一對應(yīng)。,第三章第四節(jié),四、格式化輸入輸出函數(shù)的一般使用,在“格式控制字符串”中包含兩種類型的字符: 格式控制符和普通字符。 (1)格式控制符: 以%號開始,后面跟格式字符,用于以指定的格式輸入數(shù)據(jù)。例如,輸入int型數(shù)據(jù)用%d,輸入char型數(shù)據(jù)用%c,輸入float型數(shù)據(jù)用%f,輸入double型數(shù)據(jù)用%lf。(注:%lf中

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論