C語言程序設(shè)計(jì)教程PPT精品課程課件全冊(cè)課件匯總_第1頁
C語言程序設(shè)計(jì)教程PPT精品課程課件全冊(cè)課件匯總_第2頁
C語言程序設(shè)計(jì)教程PPT精品課程課件全冊(cè)課件匯總_第3頁
C語言程序設(shè)計(jì)教程PPT精品課程課件全冊(cè)課件匯總_第4頁
C語言程序設(shè)計(jì)教程PPT精品課程課件全冊(cè)課件匯總_第5頁
已閱讀5頁,還剩772頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、授課人:XX XX C語言程序設(shè)計(jì)教程XX學(xué)院 XX 專業(yè)【全套課件】第一章 程序設(shè)計(jì)概述第二章 C語言概述第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式第四章 程序控制結(jié)構(gòu)第五章 數(shù)組目錄第六章 指針第七章 函數(shù)第八章 用戶自定義數(shù)據(jù)類型第九章 文件目錄第一章 程序設(shè)計(jì)概述主要內(nèi)容:第一節(jié) 程序和程序設(shè)計(jì)語言第二節(jié) 算法概述第三節(jié) 結(jié)構(gòu)化程序設(shè)計(jì)方法本章小結(jié)習(xí)題第一節(jié) 程序和程序設(shè)計(jì)語言一、程序與程序設(shè)計(jì)的概念作為一種能自動(dòng)計(jì)算的機(jī)器,計(jì)算機(jī)通過執(zhí)行一系列指令來完成給定的計(jì)算工作。因此,要讓計(jì)算機(jī)完成某項(xiàng)任務(wù),就必須將完成這項(xiàng) 任務(wù)的方法和具體步驟編寫成計(jì)算機(jī)可以直接或間接執(zhí)行的一系列指令,使之執(zhí)行這些指

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

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

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

5、二節(jié)二、算法的表示方法下面仍以求1到100之間所有偶數(shù)的和(記為 sum)為例說明算法的3種描述方法。假設(shè)采用前面提到的最后一種算法,即先求出1到50的和再乘以2。第一章第二節(jié)二、算法的表示方法第1種:使用自然語言描述求sum的算法。假設(shè)初始值i為1;假設(shè)變量sum初始值為0;如果i50時(shí),執(zhí)行,否則轉(zhuǎn)出執(zhí)行;計(jì)算sum加上i的值后,重新賦值給sum;計(jì)算i加1,然后將值重新賦值給i;轉(zhuǎn)去執(zhí)行;計(jì)算sum乘以2的值,輸出sum的值,算法結(jié)束。使用自然語言描述算法的方法比較容易掌握,但是有些操作不易表述清楚,例如循環(huán)操作。另外,還可能造成歧義,使他人對(duì)相同的一句話產(chǎn)生不同的理解。第一章第二節(jié)第2

6、種:使用流程圖描述求sum的算法傳統(tǒng)的流程圖由一些特定意義的圖形、流程線及簡要的文字說明構(gòu)成,它能明確地表示算法的 運(yùn)行過程。表1-1給出流程圖中所使用的圖形的 含義。圖框名稱含義起止框表示算法開始或結(jié)束的符號(hào)流程線表示算法流程的方向輸入輸出框表示算法過程中的信息輸入和輸出判斷框表示算法過程中的選擇分支結(jié)構(gòu)。通常用上面的頂點(diǎn)表示入口,根據(jù)需要用其余的頂點(diǎn)表示出口處理框表示算法過程中需要處理的內(nèi)容。只有一個(gè)入口和一個(gè)出口第一章第二節(jié)表1-1 流程圖的圖形解釋二、算法的表示方法第2種:使用流程圖描述求sum的算法。用流程圖描述的算法如圖1-1所示。從圖1-1中,可以比較清晰地看出算法的執(zhí)行過程。第

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

8、二、算法的表示方法二、算法的表示方法第3種:使用偽代碼描述sum的算法偽代碼是一種用來書寫程序或描述算法時(shí)使用的 非正式表述方法,主要采用自然語言、數(shù)學(xué)公式和符號(hào)來描述算法的操作步驟,同時(shí)采用計(jì)算機(jī)高級(jí)語言(如C、Pascal、VB、C+、Java等)的基本 控制結(jié)構(gòu)來描述算法步驟的執(zhí)行順序。第一章第二節(jié)二、算法的表示方法第3種:使用偽代碼描述sum的算法。下面是用偽代碼描述sum的算法,并附有注釋行。BEGIN/*算法開始*/i1;/*為變量i賦初值*/sum0;/*為變量sum賦初值*/while i=50/*當(dāng)變量i第二節(jié)第三節(jié) 結(jié)構(gòu)化程序設(shè)計(jì)方法一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)

9、方法由著名的計(jì)算機(jī)科學(xué)家 E.W.Dijkstra和N.Wirth等人在20世紀(jì)60年代后期提出并逐漸發(fā)展起來,其基本思想是采用“自頂向下、逐步求精、分而治之”的原則,將一個(gè)較為復(fù)雜的原問題分解成若干相對(duì)獨(dú)立的小問題,依次細(xì)化,直至各個(gè)小問題獲得解決為止。第一章第三節(jié)一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu)按照結(jié)構(gòu)化程序設(shè)計(jì)的觀點(diǎn),任何算法功能都可以通過三種基本控制結(jié)構(gòu)以及它們的嵌套 組合來實(shí)現(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í)行,每條指令都必須執(zhí)行,且只執(zhí)行一次,如圖1-3所示,圖1-4是相應(yīng)的N-S

10、流程圖。第一章第三節(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)中,當(dāng)條件滿足時(shí),反復(fù)執(zhí)行某條件語句或語句組的操作,直到條件不滿足時(shí)為止。循環(huán)結(jié)構(gòu)也稱重復(fù)結(jié)構(gòu)。根據(jù)條件設(shè)置方式和 執(zhí)行方式的不同,可以有兩種不同的循環(huán)結(jié)構(gòu),分別為當(dāng)型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu),如圖1-7和圖1-8所示,圖1-9和圖1-10分別

11、是相應(yīng)的N-S 流程圖。第一章第三節(jié)一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu)3.循環(huán)結(jié)構(gòu)第一章第三節(jié)圖1-7 當(dāng)型循環(huán)語句圖1-8 直到型循環(huán)結(jié)構(gòu)一、結(jié)構(gòu)化程序基本控制結(jié)構(gòu)圖1-9 當(dāng)型循環(huán)語句圖1-10 直到型循環(huán)結(jié)構(gòu)二、結(jié)構(gòu)化程序設(shè)計(jì)的原則和步驟要利用計(jì)算機(jī)語言設(shè)計(jì)一個(gè)結(jié)構(gòu)化的程序,一般應(yīng)遵循以下幾個(gè)原則:(1)使用語言中的順序、選擇、循環(huán)等基本控制結(jié)構(gòu)表示程序邏輯。(2)選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè) 出口。(3)程序語句組成容易識(shí)別的塊,每塊只有一個(gè)入口和一個(gè)出口。(4)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)。(5)盡量避免使用跳轉(zhuǎn)語句(如GoTo、Break等 語句)。第一章第三節(jié)二、

12、結(jié)構(gòu)化程序設(shè)計(jì)的原則和步驟結(jié)構(gòu)化程序設(shè)計(jì)通常包括以下6個(gè)主要步驟。1.問題分析2.建立數(shù)學(xué)模型3.算法設(shè)計(jì)在設(shè)計(jì)算法時(shí),要采用清晰的邏輯結(jié)構(gòu),同時(shí)充分 考慮到算法的復(fù)雜性問題,即算法的計(jì)算時(shí)間和占有的空間應(yīng)盡可能地少。4.程序編碼5.測(cè)試6.建立程序文檔第一章第三節(jié)作為開篇,本章的主要目的是概要性地介紹程序設(shè)計(jì)的基本知識(shí),共包含3個(gè)小節(jié)的內(nèi)容。第一節(jié)簡要說明了什么是程序、程序設(shè)計(jì)和程序設(shè)計(jì)語言,并對(duì)程序設(shè)計(jì)語言的分類進(jìn)行了介紹。第二節(jié)對(duì)算法的概念、其與程序設(shè)計(jì)的關(guān)系以及 三種基本的算法表示方法進(jìn)行了簡單描述。第三節(jié)介紹了結(jié)構(gòu)化程序設(shè)計(jì)的基本思想、基本控制結(jié)構(gòu)以及主要步驟。本章小結(jié)1.1 什么是

13、程序設(shè)計(jì)?1.2 低級(jí)語言和高級(jí)語言的主要區(qū)別是什么?1.3 為什么說算法是程序設(shè)計(jì)的靈魂?1.4 結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是什么?習(xí)題第二章 C語言概述主要內(nèi)容:第一節(jié) C語言的發(fā)展歷史和特點(diǎn)第二節(jié) C語言程序的結(jié)構(gòu)第三節(jié) C語言程序的編譯和運(yùn)行本章小結(jié)習(xí)題第一節(jié) C語言的發(fā)展歷史和特點(diǎn)一、C語言的發(fā)展歷史C語言是一種高效的編譯型結(jié)構(gòu)化程序設(shè)計(jì) 語言,最早由美國貝爾實(shí)驗(yàn)室的Dennis M.Ritchie在B語言的基礎(chǔ)上開發(fā)出來,并于 1972年在一臺(tái)DECPDP-11計(jì)算機(jī)上首次實(shí)現(xiàn)。最初的C語言只是為描述和實(shí)現(xiàn)Unix操作系統(tǒng)提供一種工作語言而設(shè)計(jì)的。1973年,Ken Thompson

14、和Dennis M.Ritchie兩人合作,把 Unix系統(tǒng)90%以上的內(nèi)容用C語言改寫,即 Unix的第5版。第二章第一節(jié)一、C語言的發(fā)展歷史隨后幾年,貝爾實(shí)驗(yàn)室又對(duì)C語言進(jìn)行了多次的改進(jìn),但仍局限在內(nèi)部使用。直到1975年 Unix第6版公布后,C語言的突出優(yōu)點(diǎn)才引起 人們的普遍注意。1977年出現(xiàn)了不依賴于具體機(jī)器的C語言編譯文本可移植C語言編譯程序,它使 C語言移植到其他機(jī)器時(shí)所需做的工作大大 簡化,同時(shí)也推動(dòng)了Unix系統(tǒng)迅速地在各種 機(jī)器上實(shí)現(xiàn)。第二章第一節(jié)一、C語言的發(fā)展歷史1978年,Brian W. Kernighan和Dennis M. Ritchie出版了名著C程序設(shè)計(jì)語

15、言(The C Programming Language),現(xiàn)在此書已被翻譯成多種語言,成為C語言最權(quán)威的教材之一。1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C 語言問世以來各種版本對(duì)語言的發(fā)展和 擴(kuò)充,制定了一套ANSI標(biāo)準(zhǔn),稱為ANSI C。 1987年,ANSI又公布了新標(biāo)準(zhǔn)87ANSI C。1990年,國際標(biāo)準(zhǔn)化組織ISO接受87ANSI C為 ISO C的標(biāo)準(zhǔn)(ISO98991990)。第二章第一節(jié)二、C語言的特點(diǎn)語言之所以風(fēng)靡全球、被廣泛使用,是因?yàn)樗哂幸韵聝?yōu)點(diǎn):(1)可移植性強(qiáng)。(2)語言簡潔緊湊,使用方便靈活。(3)數(shù)據(jù)類型和運(yùn)算符豐富多樣。(4)生成的目標(biāo)代碼質(zhì)量好,程

16、序執(zhí)行效率高。第二章第一節(jié)二、C語言的特點(diǎn)當(dāng)然,C語言也不是完美無缺的,在盛行的 同時(shí)也暴露出了它的局限性:(1)C語言類型自檢機(jī)制較弱,使得程序中的一些錯(cuò)誤不能在編譯時(shí)被發(fā)現(xiàn)。(2)C語言本身缺乏支持代碼重用的機(jī)制,使得 各個(gè)程序的代碼很難為其他程序所用。第二章第一節(jié)第二節(jié) C語言程序的結(jié)構(gòu)一、C語言程序的構(gòu)成為了說明語言程序結(jié)構(gòu)的特點(diǎn),先看下面 幾個(gè)例子,這些例子體現(xiàn)了語言程序在組成結(jié)構(gòu)上的特點(diǎn)。例2.1 一個(gè)簡單的例子。#include void main(void) printf(Welcome to C program!n);將上述程序輸入計(jì)算機(jī),進(jìn)行編譯、連接、運(yùn)行后在屏幕上輸出:

17、Welcome to C program!第二章第二節(jié)一、C語言程序的構(gòu)成通過這個(gè)例子,我們可以初步看到:C的程序結(jié)構(gòu)包含預(yù)處理部分“#include ”,它的功能是提供標(biāo)準(zhǔn)輸入輸出函數(shù)有關(guān)的信息。在使用標(biāo)準(zhǔn)函數(shù)庫中的函數(shù)時(shí),C編譯系統(tǒng)要求程序通過預(yù)處理命令#include將提供所使用函數(shù)有關(guān)的信息(如對(duì)函數(shù)的聲明)的頭文件“包含”進(jìn)程序。stdio.h是C編譯系統(tǒng) 提供的一個(gè)頭文件名,stdio是 “standard input & output”的縮寫,該文件提供的便是有關(guān)標(biāo)準(zhǔn)輸入輸出函數(shù)的信息。第二章第二節(jié)一、C語言程序的構(gòu)成C的程序結(jié)構(gòu)中還包含一個(gè)特殊的函數(shù)main(),稱作“主函數(shù)”

18、,這是每一個(gè)C語言程序所必備的。其中main是函數(shù)的名字,main前面是函數(shù)類型,void表示此函數(shù)是“空類型”,即 執(zhí)行此函數(shù)后沒有返回值。main后面圓括號(hào)內(nèi)用于定義函數(shù)參數(shù),可以使用空白或void表示沒有參數(shù)。函數(shù)體由一對(duì)花括號(hào)把構(gòu)成函數(shù)的語句括起來。本例子中函數(shù)體只有一個(gè)輸出語句:printf(Welcome to C program!n);,它的作用是將雙引號(hào)內(nèi)的字符串按原樣輸出,“n”是換行符,即在輸出“Welcome to C program!”后換行,分號(hào)表示該語句結(jié)束。第二章第二節(jié)一、C語言程序的構(gòu)成例2.2 求矩形的面積。/*求矩形的面積*/#include /*編譯預(yù)處理

19、命令*/void main() int x,y,area;/*聲明部分,定義變量x、y、area 為整型*/ /*以下3行為C語句*/ x=8;y=6;/*分別將8、6賦值給變量x、y*/ area=x*y;/*計(jì)算變量x和y的積,并將其值賦 給變量area*/ printf(area is %dn,area); /*輸出結(jié)果*/第二章第二節(jié)一、C語言程序的構(gòu)成以上程序的作用是求長、寬分別為x和y的矩形面積area。程序中的/*/是注釋部分。注釋可以用漢字或英文字符表示,是對(duì)程序的解釋和說明,用于提高程序的可讀性,在程序的 編譯和運(yùn)行時(shí)不起作用。注釋可以出現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行

20、,如果 需要,程序中的任意一行都可以加上注釋。第5行是聲明部分,可以用來聲明函數(shù)或變量,本例中的聲明部分定義了兩個(gè)變量x和y,int表示指定x和y為整型變量(有關(guān)變量的定義詳見第3章)。第二章第二節(jié)一、C語言程序的構(gòu)成第8行求積,使area的值為xy。第9行中“%d”是輸入輸出的“格式控制符”,用來指定輸入 輸出時(shí)的數(shù)據(jù)類型和格式。本例中“%d” 表示“以十進(jìn)制整數(shù)形式”輸出對(duì)應(yīng)輸出項(xiàng)的值。 雙引號(hào)括起來的部分為“格式控制字符串”, 本例中,格式控制字符串中的 “area is”按原樣輸出,“%d”則在該位置上以十進(jìn)制整數(shù)形式 輸出括號(hào)內(nèi)逗號(hào)右端變量area的值,即8與6的積,“n”是換行符,

21、實(shí)現(xiàn)換行。因此程序運(yùn)行時(shí)輸出以下信息:area is 48第二章第二節(jié)一、C語言程序的構(gòu)成例2.3 基本程序結(jié)構(gòu)例子:主函數(shù)與自定義函數(shù)及調(diào)用。void main()/*主函數(shù)*/ int a,b,c;/*變量聲明,定義整型變量a、b、c*/ int add(int x, int y); /*函數(shù)聲明,聲明本函數(shù)要 調(diào)用的add函數(shù)*/ scanf(%d, %d, &a, &b); /*輸入變量a和b的值*/ c=add(a, b); /*調(diào)用add函數(shù),將函數(shù)的返回值賦給c*/ printf(add=%d, c); /*輸出c的值*/第二章第二節(jié)一、C語言程序的構(gòu)成int add(int x

22、,int y)/*定義函數(shù)值為整型,形式參數(shù)x、 y為整型的add函數(shù)*/int z;/*add函數(shù)中的聲明部分,定義本 函數(shù)中用到的整型變量z*/z=x+y;return (z);/*返回z的值到該函數(shù)被調(diào)用處*/當(dāng)運(yùn)行程序時(shí)輸入:123 321(代表Enter鍵,全書同),程序輸出如下:add=444第二章第二節(jié)一、C語言程序的構(gòu)成本程序包括兩個(gè)函數(shù):主函數(shù)main和被調(diào)用的函數(shù)add。add函數(shù)的作用是求兩個(gè)變量的和,并返回求和結(jié)果,return語句將z的值返回到 主調(diào)函數(shù)main中。返回值z(mì)通過函數(shù)名add帶回到main函數(shù)中調(diào)用add函數(shù)的位置。程序第4行是對(duì)被調(diào)用函數(shù)add的聲明,

23、為了使編譯系統(tǒng)能夠正確識(shí)別和調(diào)用add函數(shù),必須在調(diào)用add函數(shù)之前對(duì)add函數(shù)進(jìn)行聲明。有關(guān)函數(shù)聲明將在第7章進(jìn)一步介紹。第二章第二節(jié)一、C語言程序的構(gòu)成通過以上幾個(gè)例子,可以看到:(1)C語言程序是由函數(shù)構(gòu)成的,函數(shù)是C語言程序的基本單位。每一個(gè)C語言程序都必須有且只能有一個(gè)主函數(shù),還 可以包含任意多個(gè)不同名的函數(shù)。一個(gè)C語言程序總是從主函數(shù)開始執(zhí)行,C語言規(guī)定必須用main作為主函數(shù)名。被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫函數(shù)(如printf和scanf函數(shù)),也可以是用戶根據(jù)需要自己編制的函數(shù)(如例2.3中的add函數(shù))。main后的一對(duì)圓括號(hào)中間 可以是空的,但這一對(duì)圓括號(hào)不能省略。程序中

24、的main()是主函數(shù)的起始行,也是C語言程序執(zhí)行的起始行。第二章第二節(jié)一、C語言程序的構(gòu)成(2)一個(gè)函數(shù)由兩部分組成:函數(shù)的首部和函數(shù)體。函數(shù)的首部,即函數(shù)的第一行,包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。函數(shù)參數(shù)可以省略,如main()就省略了函數(shù)參數(shù)。函數(shù)體,即函數(shù)首部下面的大括弧內(nèi)的部分。函數(shù)體內(nèi)一般有聲明部分和執(zhí)行部分。聲明部分用于定義所 用到的變量。執(zhí)行部分由若干個(gè)語句組成,稱為執(zhí)行 語句,必須放在聲明部分之后,語句的數(shù)量不限。(3)每個(gè)C語言程序都是從main函數(shù)開始執(zhí)行的,不論main函數(shù)是放在程序最前頭,還是放在程序最后,或在一些函數(shù)之前,在另一些函數(shù)之

25、后。第二章第二節(jié)一、C語言程序的構(gòu)成(4)C語言本身沒有輸入輸出語句。輸入和輸出的 操作都是由庫函數(shù)scanf和printf等函數(shù)來完成的。(5)可以用/*/對(duì)C語言程序中的任何部分作注釋。加上必要的注釋可以幫助人們閱讀和理解程序。第二章第二節(jié)二、C語言程序的書寫格式C語言程序所有語句都必須以分號(hào)“;”結(jié)束,函數(shù)的最后一個(gè)語句也不例外。程序行書寫 格式比較自由,既允許一行內(nèi)寫幾條語句,也允許一條語句分寫在幾行上,而且C語言程序沒有行號(hào)。在注釋部分中,所有“/*”和“*/”必須成對(duì)使用,且“/”和“*”以及“*”和“/”之間不能有空格,否則都會(huì)出錯(cuò)。第二章第二節(jié)二、C語言程序的書寫格式針對(duì)C語言

26、程序的構(gòu)成及書寫格式,在編寫C 語言程序時(shí)要注意如下技巧:(1)為避免遺漏,必須配對(duì)使用符號(hào),如注釋 符號(hào)、函數(shù)體的起止標(biāo)識(shí)符(大括號(hào))、圓括號(hào)等,在輸入時(shí),可連續(xù)輸入這些起止標(biāo)識(shí)符,然后再在其中進(jìn)行插入來完成內(nèi)容的編輯。(2)注釋的位置,可以單占一行,也可以跟在 語句的后面。(3)一個(gè)語句或注釋如果一行寫不下,可另起 一行繼續(xù)寫。(4)注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運(yùn)行。第二章第二節(jié)第三節(jié) C語言程序的編譯和運(yùn)行一、C語言程序的編譯過程簡介1.編輯C語言程序當(dāng)確定了解決問題的方案后,可以用C語言系統(tǒng) 提供的編輯功能編寫一個(gè)C語言源程序,源程序的擴(kuò)展名為

27、.c。2.編譯C語言程序生成目標(biāo)程序由于計(jì)算機(jī)只能識(shí)別和執(zhí)行由0和1組成的二進(jìn)制 文件,而不能識(shí)別和執(zhí)行用高級(jí)語言編寫的源 程序,所以必須先用C語言系統(tǒng)的編譯程序(即 編譯器)對(duì)其編譯,以生成以二進(jìn)制代碼形式表示的目標(biāo)程序,目標(biāo)程序的擴(kuò)展名為.obj。第二章第三節(jié)一、C語言程序的編譯過程簡介3.連接生成可執(zhí)行程序文件將目標(biāo)程序與系統(tǒng)的函數(shù)庫以及其他目標(biāo)程序進(jìn)行連接裝配,才能形成可執(zhí)行程序文件,可執(zhí)行文件的擴(kuò)展名為.exe。4.運(yùn)行可執(zhí)行程序文件將可執(zhí)行程序文件(擴(kuò)展名為.exe)調(diào)入內(nèi)存并 運(yùn)行,得到程序的結(jié)果。第二章第三節(jié)二、Turbo C+3.0環(huán)境中運(yùn)行C語言程序的步驟Turbo C+3

28、.0開發(fā)環(huán)境是一個(gè)集成編輯、編譯、連接、調(diào)試的C語言開發(fā)環(huán)境。以下介紹在 Turbo C+3.0環(huán)境中運(yùn)行C語言程序的步驟。1.啟動(dòng)Turbo C+3.0環(huán)境假設(shè)Turbo C+3.0安裝在C盤的tc3子目錄下。方法一:從“開始”菜單選擇“運(yùn)行”,輸入:cmd再輸入cd c:tc3bin再輸入tc,出現(xiàn)如圖2-2所示的Turbo C+3.0主菜單界面。方法二:進(jìn)入tc.exe文件所在的子目錄(如c:tc3bin),雙擊tc.exe文件,或直接雙擊桌面上tc.exe文件的快捷方式圖標(biāo),也出現(xiàn)如圖2-2所示的主菜單界面。第二章第三節(jié)第二章第三節(jié)圖2-2 進(jìn)入Turbo C+3.0主菜單界面二、Tu

29、rbo C+3.0環(huán)境中運(yùn)行C語言程序的步驟2.編輯源程序文件從File菜單選擇New(如圖2-3所示),進(jìn)入新建C語言程序環(huán)境(如圖2-4所示),即可輸入源程序,輸入的源程序如下:#include void main()int i,sum=0;for (i=1; i第三節(jié)二、Turbo C+3.0環(huán)境中運(yùn)行C語言程序的步驟第二章第三節(jié)圖2-3 進(jìn)入新建C語言程序環(huán)境圖2-4 編輯C語言程序3.保存源程序文件從File菜單選擇Save或者直接按F2鍵,選取路徑并起 文件名,如起名為example.c,如圖2-5所示。二、Turbo C+3.0環(huán)境中運(yùn)行C語言程序的步驟第二章第三節(jié)圖2-5 保存

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

31、n菜單選擇Run或者直接按快捷鍵Ctrl+F9,運(yùn)行 程序并輸出結(jié)果。從Window菜單選擇User Screen或者 直接按Alt+F5,切換到用戶屏幕,可查看程序的運(yùn)行 結(jié)果,如圖2-8所示。二、Turbo C+3.0環(huán)境中運(yù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)境中運(yùn)行C語言程序的步驟第二章第三節(jié)本章介紹C語言的發(fā)展歷史、特點(diǎn),C語言程序的基本結(jié)構(gòu),C語言程序的基本組成以及C語言程序的編譯與執(zhí)行。C 語言是功能強(qiáng)大的計(jì)算機(jī)高級(jí)語言,它既是系統(tǒng)

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

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

34、它是 整數(shù);身高1.75米,它是實(shí)數(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ù)自己要表達(dá)的數(shù)據(jù)形式自行構(gòu)造,然后才能使用。C語言在處理常量和變量時(shí),都是使用內(nèi)存中具有特定屬性的存儲(chǔ)單元來存放數(shù)據(jù),但兩者的差別是,存儲(chǔ)常量的內(nèi)存單元,其值在程序運(yùn)行中是不能被改變的;而存儲(chǔ)變量的內(nèi)存 單元,其值在程序運(yùn)行中是允許改變的。第三章第一節(jié)第二節(jié) 常量一、整型常量整型常量用于表達(dá)一個(gè)確定的整

35、數(shù),如32。它有以下三種形式:1.十進(jìn)制整數(shù)2.八進(jìn)制整數(shù)以0(零)開頭,由07的數(shù)字序列構(gòu)成,如0123表示八進(jìn)制數(shù)123,其值為182+281+380=83,即十進(jìn)制的83。3.十六進(jìn)制整數(shù)以0 x或0X開頭(0 x中的0是數(shù)字零),可以由數(shù)字09和字母AF或af構(gòu)成,AF字母用于表示數(shù)字1015。例如,0 x2F表示2161+15160=47,即十進(jìn)制的47。第三章第二節(jié)一、整型常量4.整數(shù)的后綴一個(gè)整型常量的尾部加上字母L或l,則表示該整數(shù)為長整型常量。例如,23L是十進(jìn)制的長整型常量,0 x23L是十六進(jìn)制的長整型常量。也可以用后綴U或u表示無符號(hào)整型常量。例如,234U是十進(jìn)制無符

36、號(hào)整型常量,023U是八進(jìn)制無符號(hào)整型常量。后綴L和U可以同時(shí)使用,例如78LU,表示無符號(hào)長 整型,并且L和U兩種后綴的順序任意。5.整數(shù)在機(jī)內(nèi)的存儲(chǔ)形式我們知道,數(shù)據(jù)在計(jì)算機(jī)中是以二進(jìn)制形式進(jìn)行處理的。在大多數(shù)機(jī)器中,整數(shù)采用補(bǔ)碼的形式來存儲(chǔ)。對(duì)于C語言編譯系統(tǒng),Turbo C使用2個(gè)字節(jié)存儲(chǔ)一個(gè) 整數(shù),而Visual C+ 6.0采用4個(gè)字節(jié)存儲(chǔ)一個(gè)整數(shù)。第三章第二節(jié)二、浮點(diǎn)型常量C語言中的浮點(diǎn)型常量也就是實(shí)數(shù),有兩種 表示形式。1.十進(jìn)制小數(shù)形式2.指數(shù)形式它由數(shù)字09、字母e(或E)和+、-號(hào)組成,它的形式為aEn,意為a10n,其中a為十進(jìn)制整數(shù)或小數(shù),n為十進(jìn)制整數(shù)。例如:2.5

37、e3(表示2.5103),-3.5e-2(表示 -3.510-2)。第三章第二節(jié)二、浮點(diǎn)型常量在表示浮點(diǎn)型常量時(shí),需要注意以下幾點(diǎn):(1)以指數(shù)形式表示實(shí)數(shù)時(shí),a和n都不能省略,n必須為整數(shù)。例如,e5、3e、3e2.5等都是不合法的。(2)以十進(jìn)制小數(shù)形式表示實(shí)數(shù)時(shí),整數(shù)和小數(shù)部分可省略其中任一個(gè)。例如,35、26.都是合法的。(3)浮點(diǎn)型常量默認(rèn)的是double型(雙精度),如果在后面加上F或f,則其類型為float(單 精度),如2.45F、3.5e2F。(4)如果在一個(gè)浮點(diǎn)型常量后面加上一個(gè)L或l,則表示為long double型,如2.4e2L。第三章第二節(jié)二、浮點(diǎn)型常量實(shí)數(shù)在機(jī)內(nèi)是

38、以指數(shù)形式存儲(chǔ)的,以float類型為例,大多數(shù)C編譯系統(tǒng)使用4個(gè)連續(xù)的字節(jié)(即32位)存儲(chǔ)float類型數(shù)據(jù)。由實(shí)數(shù)的存儲(chǔ)形式可以看出,小數(shù)部分占的 位數(shù)越多,所能表示的精度越高,指數(shù)部分 占的越多,所能表示的數(shù)值范圍越大。第三章第二節(jié)三、字符常量字符常量是屬于ASCII碼字符集中的一個(gè) 字符,包括英文大小寫字母、數(shù)字、標(biāo)點(diǎn)符號(hào)以及特殊符號(hào)。字符常量的表現(xiàn)形式有兩種:(1)使用單引號(hào)括起來的一個(gè)字符。例如,a、 7、?都是字符常量。(2)使用轉(zhuǎn)義字符表示方法表示的字符。轉(zhuǎn)義 字符是以反斜杠“”開頭,后面跟字符或數(shù)字,并用單引號(hào)括起來表示字符常量。例如,n表示 一個(gè)換行符(ASCII碼值為10)

39、。換行符是一種 控制符,在屏幕上不能顯示,用于在輸出時(shí)進(jìn)行 換行控制。表3-1給出了常用的轉(zhuǎn)義字符及其含義。第三章第二節(jié)三、字符常量第三章第二節(jié)三、字符常量實(shí)際上,C語言在內(nèi)存中存放字符時(shí)是用字符數(shù)據(jù)的ASCII碼值存儲(chǔ)的。例如,字符a的 ASCII碼值為97,它在內(nèi)存中的存儲(chǔ)形式與 整數(shù)97是一樣的。也就是說在C語言中,在 ASCII碼 范圍內(nèi)的整數(shù)與字符可以通用。一個(gè)字符可以以字符形式輸出,也可以以整數(shù)形式輸出。 此外,字符數(shù)據(jù)也可以參加算術(shù)運(yùn)算,即相當(dāng)于使用其ASCII碼值進(jìn)行運(yùn)算。第三章第二節(jié)四、字符串常量字符串常量是由一對(duì)雙引號(hào)括起來的字符 序列,字符串中可以包含任何字符,如空格、轉(zhuǎn)

40、義符,甚至漢字。例如,How do you do.、$24.5、中國n都是合法的字符串。雙引號(hào)不屬于字符串,而是起界定作用。在C語言中沒有提供字符串類型,而是使用 字符數(shù)組來存儲(chǔ)字符串。字符串在機(jī)內(nèi)存儲(chǔ)時(shí),所占的字節(jié)數(shù)等于字符串常量中的字符 個(gè)數(shù)加1。增加的一個(gè)字節(jié)用于存放0(空 字符,ASCII碼為0),它作為字符串的結(jié)束 標(biāo)志。第三章第二節(jié)五、符號(hào)常量及其定義C語言提供了一種利用一個(gè)標(biāo)識(shí)符來代表一個(gè)常數(shù)的方法,即定義符號(hào)常量,這樣可以更 確切表明其含義。C語言中使用#define定義符號(hào)常量,即給常量起一個(gè)名字。其語法格式為:#define標(biāo)識(shí)符常量例如:#define PI 3.14#d

41、efine PRICE 30第三章第二節(jié)五、符號(hào)常量及其定義在上面例子中,PI和PRICE稱為符號(hào)常量。在C 語言中,define稱為宏定義,#是預(yù)處理命令的開始標(biāo)志。一旦定義了符號(hào)常量,當(dāng)編譯程序?qū)Τ绦蜻M(jìn)行預(yù)處理時(shí),在程序中所有使用這些符號(hào)常量的地方都會(huì)被該常量值取代。第三章第二節(jié)五、符號(hào)常量及其定義例3.2符號(hào)常量的使用。#include #define PI 3.14/*定義符號(hào)常量PI*/void main() double r,s; r=20.0; s=PI*r*r;/*使用符號(hào)常量PI*/ printf(s=%fn,s);第三章第二節(jié)程序運(yùn)行結(jié)果為:s=1256.000000以上的

42、s=PI*r*r;語句在編譯預(yù)處理后產(chǎn)生如下的語句:s=3.14*r*r;五、符號(hào)常量及其定義使用符號(hào)常量是一種好的編程風(fēng)格,它的好處在于:(1)程序便于維護(hù)。如果常量在程序中多處出現(xiàn),當(dāng)需要改變其值時(shí),要修改多個(gè)地方。如果使用符號(hào)常量,只要在程序開頭的宏定義部分修改一次,就能做到一改全改。這就減少了工作量,并且不易出錯(cuò)。(2)提高程序可讀性。從例3.2就可以看出,當(dāng)我們閱讀程序時(shí)看到PI,就可以知道它代表圓周率。第三章第二節(jié)第三節(jié) 簡單變量一、變量的命名變量代表計(jì)算機(jī)內(nèi)存中的一個(gè)存儲(chǔ)單元,與 常量相反,變量的值在程序運(yùn)行過程中是可以改變的。變量有以下特性:變量名、變量值、變量類型、變量的存儲(chǔ)

43、地址、變量的存儲(chǔ)屬性。高級(jí)語言的編譯器在編譯連接時(shí)會(huì)給每一個(gè) 變量分配一個(gè)內(nèi)存單元,變量的值就存儲(chǔ)在該內(nèi)存單元中。訪問變量的值,實(shí)際上是通過 變量名找到相應(yīng)的內(nèi)存地址,然后對(duì)其中存儲(chǔ)的數(shù)據(jù)進(jìn)行訪問。第三章第三節(jié)一、變量的命名C語言中變量的命名是有特殊限制的。在C語言中,對(duì)變量、符號(hào)常量、函數(shù)、宏、標(biāo)號(hào)、 文件名等的命名的有效字符序列稱為標(biāo)識(shí)符(ide-ntifier)。C語言規(guī)定,標(biāo)識(shí)符可以由字母、數(shù)字和下劃線構(gòu)成,且必須由字母或下劃線開頭,其中字母是指英文26個(gè)字母,可以是 大寫或小寫。第三章第三節(jié)一、變量的命名C語言規(guī)定,關(guān)鍵字不能作為變量名使用(這是將關(guān)鍵字也稱為保留字的原因)。例如,i

44、nt、if、typedef等。此外,C語言中有些標(biāo)識(shí)符是系統(tǒng)預(yù)定義的,它們?cè)诔绦蛑杏刑厥獾暮x,例如,printf、open、ctype等,雖然可以對(duì)它們進(jìn)行重新定義,但建議不要作為變量名使用。以下是合法的標(biāo)識(shí)符,可以作為變量名。n, i2, str_len, g_iMax, month, _number以下是不合法標(biāo)識(shí)符:3d, ye#, xy, $25, int第三章第三節(jié)一、變量的命名C語言嚴(yán)格區(qū)分大寫和小寫字母,因此STUDENT、student、Student是三個(gè)不同的標(biāo)識(shí)符。一般使用小寫字母表示變量名,大寫字母表示符號(hào)常量名,這樣的區(qū)分有利于增加程序的可讀性。第三章第三節(jié)二、變量

45、的基本數(shù)據(jù)類型變量的數(shù)據(jù)類型決定了該變量的取值類型、 取值范圍、所占的內(nèi)存空間的大小以及所能 參加的運(yùn)算方式等。一個(gè)變量的數(shù)據(jù)類型可以是圖3-1所列出的C 語言的數(shù)據(jù)類型中的一種。C語言基本數(shù)據(jù) 類型有以下幾類:整型int及其相關(guān)類型、浮點(diǎn)型float及其相關(guān)類型、字符型char及其相關(guān) 類型。表3-2列出了Turbo C的基本數(shù)據(jù)類型及相關(guān)屬性。第三章第三節(jié)二、變量的基本數(shù)據(jù)類型第三章第三節(jié)三、變量的類型定義在C語言中規(guī)定必須對(duì)所有用到的變量先定義后使用。定義變量的語法格式如下:數(shù)據(jù)類型名 變量名表;變量名表是一個(gè)或多個(gè)標(biāo)識(shí)符,每個(gè)標(biāo)識(shí)符之間用逗號(hào)“,”分隔開,例如:int i, j, k;

46、以上語句定義了三個(gè)整型變量i、j、k。其中int與i之間至少要留一個(gè)空格,語句最后要以分號(hào)“;”結(jié)尾,這是因?yàn)樽兞慷x是一條語句而不是一條 命令(C語言規(guī)定一個(gè)語句的終結(jié)符是分號(hào))。第三章第三節(jié)四、變量的初始化一個(gè)變量被定義后,它是否就有值了呢?答案是它不是沒有值,而是它的值未被確定。因此,在使用一個(gè)變量時(shí),必須要確保其有 確定的值,這就需要對(duì)該變量指定初值,即對(duì)變量進(jìn)行初始化。以下例子演示了對(duì)變量進(jìn)行初始化的方法:double d1=3.35,d2;也可以用賦值語句給變量指定值,以上語句相當(dāng)于:double d1,d2; d1=3.35;其中,d1的值被賦予23.35,而d2的值是不確定的。

47、第三章第三節(jié)四、變量的初始化注:C編譯器對(duì)靜態(tài)局部變量和全局變量會(huì) 自動(dòng)賦給初值,如果是數(shù)值類型的靜態(tài)局部 變量和全局變量,編譯器通常賦給初值0, 如果是字符類型的靜態(tài)局部變量和全局變量,編譯器通常賦給初值空字符,即ASCII碼為0的值(有關(guān)靜態(tài)變量和全局變量的相關(guān)知識(shí)將在第7章中介紹)。第三章第三節(jié)第四節(jié) 庫函數(shù)一、庫函數(shù)的使用方式C語言提供的每一個(gè)庫函數(shù)都在對(duì)應(yīng)的某個(gè) 頭文件中聲明其函數(shù)原型,在使用某個(gè)庫函數(shù)前都應(yīng)在程序開始處包含相應(yīng)的頭文件。文件包含可以用預(yù)處理命令#include來實(shí)現(xiàn),例如,數(shù)學(xué)函數(shù)的原型都在文件math.h中 聲明,因此要調(diào)用數(shù)學(xué)函數(shù)abs(x)求整數(shù)x的 絕對(duì)值,

48、就應(yīng)在程序開始位置使用如下預(yù)處理命令:#include 或#include math.h第三章第四節(jié)預(yù)處理命令不是C語句,因此結(jié)尾不加分號(hào)“;”,這一點(diǎn)在編程時(shí)要注意。一、庫函數(shù)的使用方式在包含了與某個(gè)庫函數(shù)對(duì)應(yīng)的頭文件后,就 可以在程序中調(diào)用該函數(shù)。C語言函數(shù)調(diào)用的語法格式為:函數(shù)名(實(shí)參列表);如果是調(diào)用無參函數(shù),則“實(shí)參列表”可以沒有,但括號(hào)不能省略。第三章第四節(jié)二、常用數(shù)學(xué)函數(shù)C語言中預(yù)先定義了豐富的數(shù)學(xué)函數(shù),用于 進(jìn)行常見的數(shù)學(xué)運(yùn)算。這些數(shù)學(xué)函數(shù)可以分為以下幾類:三角函數(shù)(trigonometric functions)、雙曲函數(shù)(hyperbolic functions)、指數(shù)與對(duì)

49、數(shù)函數(shù)(exponential and logarithmic function-s)、冪與絕對(duì)值函數(shù)(power and absolute val-ue functions)以及其他函數(shù)。C語言提供的數(shù)學(xué)函數(shù)的原型在頭文件math.h中聲明,使用時(shí)應(yīng)在程序頭部包含math.h文件: #include 或 #include math.h第三章第四節(jié)二、常用數(shù)學(xué)函數(shù)1.三角函數(shù)sin、cos、tan函數(shù)原型:double sin(double x);double cos(double x);double tan(double x);功能:函數(shù)sin、cos、tan用于計(jì)算正弦、余弦和 正切值,這

50、三個(gè)函數(shù)的參數(shù)都是代表弧度值的 double型數(shù)據(jù)。第三章第四節(jié)二、常用數(shù)學(xué)函數(shù)2.絕對(duì)值函數(shù)abs、fabs、labs函數(shù)原型:int abs(int x);double fabs(double x);long labs(long x);功能:abs、fabs和labs函數(shù)分別適用于求整數(shù)、 浮點(diǎn)數(shù)和長整型數(shù)的絕對(duì)值,這三個(gè)函數(shù)返回參數(shù)x的絕對(duì)值。例如,abs(-10)等于10,fabs(-5.6)等于5.6,labs (-9999)等于9999。第三章第四節(jié)二、常用數(shù)學(xué)函數(shù)3.exp和pow函數(shù)函數(shù)原型:double exp(double x);double pow(double x, d

51、ouble y);功能:exp函數(shù)返回以e為底,參數(shù)x為冪的指數(shù)值 ex;pow函數(shù)返回x的y次冪xy。例如,exp(2.0)等于7.389056,pow(2.0,3.0)等于8.0。第三章第四節(jié)二、常用數(shù)學(xué)函數(shù)4.log和log10函數(shù)函數(shù)原型:double log(double x);double log10(double x);功能:log函數(shù)返回以e為底,參數(shù)x的自然對(duì)數(shù)值 lnx;log10函數(shù)返回以10為底,參數(shù)x的對(duì)數(shù)值 log10 x。例如,log(7.389056)等于2.0,log10(100.0)等于2.0。第三章第四節(jié)二、常用數(shù)學(xué)函數(shù)5.sqrt函數(shù)函數(shù)原型:doubl

52、e sqrt(double x);功能:sqrt函數(shù)返回參數(shù)x的平方根。例如:sqrt(4.0)等于2.0。6.隨機(jī)函數(shù)rand、srandrand和srand函數(shù)的原型在頭文件stdlib.h中定義, 使用時(shí)應(yīng)在程序開頭包含stdlib.h文件。函數(shù)原型:int rand(void);void srand(unsigned int seed);第三章第四節(jié)二、常用數(shù)學(xué)函數(shù)功能:rand函數(shù)返回一個(gè)值在0RAND_MAX之間的偽隨機(jī)(pseudorandom)整數(shù),ANSI C要求 RAND_MAX至少為32767。srand函數(shù)用參數(shù)seed來設(shè)置一個(gè)偽隨機(jī)數(shù)序列的開始點(diǎn),以便調(diào)用rand函

53、數(shù)時(shí)產(chǎn)生一個(gè)新的偽隨機(jī)數(shù)序列。參數(shù)seed稱為隨機(jī)數(shù)種子。第三章第四節(jié)三、字符輸入輸出函數(shù)C語言提供的字符輸入輸出函數(shù)的原型在 頭文件stdio.h中聲明,在使用時(shí)應(yīng)在程序頭部包含stdio.h文件:#include 或 #include stdio.h1.字符輸出函數(shù)putchar函數(shù)原型:int putchar(int c);功能:putchar函數(shù)把一個(gè)字符輸出到標(biāo)準(zhǔn)輸出設(shè)備(通常是顯示器)上,其中參數(shù)c可以是字符變量或常量,也可以是一個(gè)代表ASCII碼的整數(shù)。第三章第四節(jié)三、字符輸入輸出函數(shù)例3.7利用getchar函數(shù)輸入一個(gè)字符。#include void main() char

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

55、程序中若要使用格式化輸入輸出函數(shù),也需要在源程序的開頭包含該頭文件。1.格式化輸出函數(shù)printf在C語言中提供了格式化輸出函數(shù)printf,該函數(shù)的功能是將數(shù)據(jù)按指定的格式輸出到標(biāo)準(zhǔn)輸出流中。調(diào)用printf函數(shù)的語法格式為:printf(格式控制字符串,輸出列表);第三章第四節(jié)四、格式化輸入輸出函數(shù)的一般使用格式控制字符串是使用雙引號(hào)括起來的用于表示 輸出格式的字符串,它包括兩部分:一部分為普通字符和轉(zhuǎn)義字符,另一部分為輸出格式控制符。(1)普通字符在輸出時(shí)按原樣輸出,轉(zhuǎn)義字符則輸出它所代表的字符(通常為控制字符)。(2)輸出格式控制符:以%號(hào)開始,后面跟格式字符,用于以指定的格式輸出數(shù)據(jù)

56、。例如,輸出int型數(shù)據(jù)用 %d,輸出float型和double型數(shù)據(jù)用%f,輸出字符型數(shù)據(jù)用%c,輸出字符串用%s等。輸出列表是若干要輸出的數(shù)據(jù)項(xiàng),它可以是常量、變量或表達(dá)式,各參數(shù)之間以逗號(hào)“,”隔開。 輸出項(xiàng)的類型、個(gè)數(shù)、順序應(yīng)與格式控制符一一 對(duì)應(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);程序運(yùn)行結(jié)果為:Integer Number=100Double Nu

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

58、左補(bǔ)空格(數(shù)據(jù)右對(duì)齊)。若 數(shù)據(jù)的實(shí)際寬度超過m列,則按實(shí)際寬度輸出。浮點(diǎn)型數(shù)據(jù)輸出:%m.nf,指定數(shù)據(jù)輸出總的寬度占m列,小數(shù)部分占n列。若數(shù)據(jù)本身小于m位,則左補(bǔ)空格。字符串?dāng)?shù)據(jù)輸出:%ms,表示字符串輸出占m列。第三章第四節(jié)四、格式化輸入輸出函數(shù)的一般使用2.格式化輸入函數(shù)scanfscanf函數(shù)的功能是從標(biāo)準(zhǔn)輸入流中按指定格式 接收輸入的數(shù)據(jù)。調(diào)用scanf函數(shù)的語法格式為:scanf(格式控制字符串,地址列表);其中“格式控制字符串”用于指定輸入的格式,它由格式控制符和普通字符兩部分構(gòu)成。地址列表是若干輸入數(shù)據(jù)項(xiàng)的內(nèi)存地址,它通常是變量的 地址,各地址之間用逗號(hào)“,”分隔。“格式控

59、制字符串”中的格式控制符數(shù)量和類型要與輸入數(shù)據(jù)項(xiàng)從左到右一一對(duì)應(yīng)。第三章第四節(jié)四、格式化輸入輸出函數(shù)的一般使用在“格式控制字符串”中包含兩種類型的字符: 格式控制符和普通字符。(1)格式控制符: 以%號(hào)開始,后面跟格式字符,用于以指定的格式輸入數(shù)據(jù)。例如,輸入int型數(shù)據(jù)用%d,輸入char型數(shù)據(jù)用%c,輸入float型數(shù)據(jù)用%f,輸入double型數(shù)據(jù)用%lf。(注:%lf中的l是英文字母L的小寫, 不是數(shù)字1。)(2)普通字符:在輸入數(shù)據(jù)時(shí)要求按原樣輸入。第三章第四節(jié)四、格式化輸入輸出函數(shù)的一般使用例3.9 用scanf函數(shù)輸入數(shù)據(jù)。#include void main() int i,j

60、; float x,y,z; printf(Input two integers i and j separated by a space:); /*提示語句*/ scanf(%d%d,&i,&j); printf(Input floats x,y and z separated each by a comma:);/*提示語句*/ scanf(%f,%f,%f,&x,&y,&z); printf(i=%d,j=%d,x=%f,y=%f,z=%f,i,j,x,y,z);第三章第四節(jié)四、格式化輸入輸出函數(shù)的一般使用運(yùn)行以上程序,輸出:Input two integers i and j sepa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論