C語言程序設計教程(廈門大學出版社提供).ppt_第1頁
C語言程序設計教程(廈門大學出版社提供).ppt_第2頁
C語言程序設計教程(廈門大學出版社提供).ppt_第3頁
C語言程序設計教程(廈門大學出版社提供).ppt_第4頁
C語言程序設計教程(廈門大學出版社提供).ppt_第5頁
免費預覽已結(jié)束,剩余771頁可下載查看

下載本文檔

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

文檔簡介

出品人 蔣東明主編 葉東毅責編 眭蔚制作人 洪曉婧 第一章程序設計概述第二章C語言概述第三章數(shù)據(jù)類型 運算符與表達式第四章程序控制結(jié)構(gòu)第五章數(shù)組第六章指針第七章函數(shù) 第八章用戶自定義數(shù)據(jù)類型第九章文件 第一章程序設計概述 主要內(nèi)容 第一節(jié)程序和程序設計語言第二節(jié)算法概述第三節(jié)結(jié)構(gòu)化程序設計方法本章小結(jié)習題 第一節(jié)程序和程序設計語言 一 程序與程序設計的概念 作為一種能自動計算的機器 計算機通過執(zhí)行一系列指令來完成給定的計算工作 因此 要讓計算機完成某項任務 就必須將完成這項任務的方法和具體步驟編寫成計算機可以直接或間接執(zhí)行的一系列指令 使之執(zhí)行這些指令后 就可以完成給定的任務 這樣的一系列指令的集合就稱為計算機程序或簡稱程序 編寫這些指令就是程序設計 第一章 第一節(jié) 二 程序設計語言 程序設計語言是一組用來定義計算機程序的語法規(guī)則 用來向計算機發(fā)出指令 人們借助程序設計語言來編寫程序 解決不同的問題 程序設計語言按照語言級別可以分為低級語言和高級語言 第一章 第一節(jié) 二 程序設計語言 低級語言有機器語言和匯編語言 主要由機器基本指令集構(gòu)成 它依賴于所使用的計算機硬件 即與特定的機器有關(guān) 它具有運行效率高的特點 但編寫復雜 費時 容易出差錯 而且程序修改維護困難 高級語言的表示方法比較接近于自然語言 在一定程度上與具體的計算機硬件無關(guān) 相對來說易于學習和使用 而且也便于維護 但是運行效率不如低級語言 第一章 第一節(jié) 二 程序設計語言 下面對程序設計語言做進一步的解釋 1 第一代程序設計語言 1GL 機器語言2 第二代程序設計語言 2GL 匯編語言3 第三代程序設計語言 3GL 高級語言4 第四代程序設計語言 4GL 面向問題語言 第一章 第一節(jié) 第二節(jié)算法概述 一 算法的概念 一般來說 為解決一個問題而采取的方法和步驟 就稱為算法 計算機算法則是用計算機求解一個具體問題或執(zhí)行特定任務的一組有序的操作步驟 或指令 是構(gòu)成計算機程序的核心部分 著名瑞士計算機科學家N Wirth曾經(jīng)提出一個公式 程序 數(shù)據(jù)結(jié)構(gòu) 算法其中 數(shù)據(jù)結(jié)構(gòu)主要是數(shù)據(jù)的類型和數(shù)據(jù)的組織形式 是對程序中數(shù)據(jù)的描述 算法則是對程序中操作的描述 也就是操作步驟 第一章 第二節(jié) 一 算法的概念 需要注意的是 算法一般只是對處理問題思想的一種描述 不是計算機可以直接執(zhí)行的程序代碼 因此算法本身是獨立于計算機的 算法的具體實現(xiàn)則由計算機完成 從這個意義上說 程序設計的本質(zhì)就是要將算法轉(zhuǎn)化為計算機程序 處理一個問題 可以有不同的算法 設計和選擇算法是至關(guān)重要的 不僅要保證算法正確 還要考慮算法的質(zhì)量和效率 第一章 第二節(jié) 二 算法的表示方法 描述一個算法可以有不同的方式 常見的有以下三種 1 使用自然語言描述算法 2 使用流程圖描述算法 3 使用偽代碼描述算法 第一章 第二節(jié) 二 算法的表示方法 下面仍以求1到100之間所有偶數(shù)的和 記為sum 為例說明算法的3種描述方法 假設采用前面提到的最后一種算法 即先求出1到50的和再乘以2 第一章 第二節(jié) 二 算法的表示方法 第1種 使用自然語言描述求sum的算法 假設初始值i為1 假設變量sum初始值為0 如果i 50時 執(zhí)行 否則轉(zhuǎn)出執(zhí)行 計算sum加上i的值后 重新賦值給sum 計算i加1 然后將值重新賦值給i 轉(zhuǎn)去執(zhí)行 計算sum乘以2的值 輸出sum的值 算法結(jié)束 使用自然語言描述算法的方法比較容易掌握 但是有些操作不易表述清楚 例如循環(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)流程圖的一個主要不足是流程線的用法缺乏規(guī)范 由于流程線可以轉(zhuǎn)移流程的執(zhí)行方向 如果使用不當或流程控制轉(zhuǎn)移不明晰 容易導致程序的混亂和出錯 為此 人們 I Nassi和B Schneiderman 1973年 設計了一種新的流程圖 它沒有使用流程線 而是把整個算法寫在一個大框圖內(nèi) 這個大框圖由若干個小的基本框圖構(gòu)成 算法按照從上到下 從左到右的順序執(zhí)行 這種流程圖簡稱N S流程圖 第一章 第二節(jié) 二 算法的表示方法 第2種 使用流程圖描述求sum的算法 第一章 第二節(jié) 圖1 2求sun算法的N S流程圖 二 算法的表示方法 二 算法的表示方法 第3種 使用偽代碼描述sum的算法偽代碼是一種用來書寫程序或描述算法時使用的非正式表述方法 主要采用自然語言 數(shù)學公式和符號來描述算法的操作步驟 同時采用計算機高級語言 如C Pascal VB C Java等 的基本控制結(jié)構(gòu)來描述算法步驟的執(zhí)行順序 第一章 第二節(jié) 二 算法的表示方法 第3種 使用偽代碼描述sum的算法 下面是用偽代碼描述sum的算法 并附有注釋行 BEGIN 算法開始 i 1 為變量i賦初值 sum 0 為變量sum賦初值 whilei 50 當變量i 50時 執(zhí)行下面的環(huán)體語句 sum sum i i i 1 sum 2 sum 輸出sum的值END 算法結(jié)束 第一章 第二節(jié) 第三節(jié)結(jié)構(gòu)化程序設計方法 一 結(jié)構(gòu)化程序基本控制結(jié)構(gòu) 結(jié)構(gòu)化程序設計方法由著名的計算機科學家E W Dijkstra和N Wirth等人在20世紀60年代后期提出并逐漸發(fā)展起來 其基本思想是采用 自頂向下 逐步求精 分而治之 的原則 將一個較為復雜的原問題分解成若干相對獨立的小問題 依次細化 直至各個小問題獲得解決為止 第一章 第三節(jié) 一 結(jié)構(gòu)化程序基本控制結(jié)構(gòu) 按照結(jié)構(gòu)化程序設計的觀點 任何算法功能都可以通過三種基本控制結(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í)行 每條指令都必須執(zhí)行 且只執(zhí)行一次 如圖1 3所示 圖1 4是相應的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是相應的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)中 當條件滿足時 反復執(zhí)行某條件語句或語句組的操作 直到條件不滿足時為止 循環(huán)結(jié)構(gòu)也稱重復結(jié)構(gòu) 根據(jù)條件設置方式和執(zhí)行方式的不同 可以有兩種不同的循環(huán)結(jié)構(gòu) 分別為當型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu) 如圖1 7和圖1 8所示 圖1 9和圖1 10分別是相應的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)化程序設計的原則和步驟 要利用計算機語言設計一個結(jié)構(gòu)化的程序 一般應遵循以下幾個原則 1 使用語言中的順序 選擇 循環(huán)等基本控制結(jié)構(gòu)表示程序邏輯 2 選用的控制結(jié)構(gòu)只準許有一個入口和一個出口 3 程序語句組成容易識別的塊 每塊只有一個入口和一個出口 4 復雜結(jié)構(gòu)應該用基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn) 5 盡量避免使用跳轉(zhuǎn)語句 如GoTo Break等語句 第一章 第三節(jié) 二 結(jié)構(gòu)化程序設計的原則和步驟 結(jié)構(gòu)化程序設計通常包括以下6個主要步驟 1 問題分析2 建立數(shù)學模型3 算法設計在設計算法時 要采用清晰的邏輯結(jié)構(gòu) 同時充分考慮到算法的復雜性問題 即算法的計算時間和占有的空間應盡可能地少 4 程序編碼5 測試6 建立程序文檔 第一章 第三節(jié) 作為開篇 本章的主要目的是概要性地介紹程序設計的基本知識 共包含3個小節(jié)的內(nèi)容 第一節(jié)簡要說明了什么是程序 程序設計和程序設計語言 并對程序設計語言的分類進行了介紹 第二節(jié)對算法的概念 其與程序設計的關(guān)系以及三種基本的算法表示方法進行了簡單描述 第三節(jié)介紹了結(jié)構(gòu)化程序設計的基本思想 基本控制結(jié)構(gòu)以及主要步驟 本章小結(jié) 1 1什么是程序設計 1 2低級語言和高級語言的主要區(qū)別是什么 1 3為什么說算法是程序設計的靈魂 1 4結(jié)構(gòu)化程序設計的基本思想是什么 習題 第二章C語言概述 主要內(nèi)容 第一節(jié)C語言的發(fā)展歷史和特點第二節(jié)C語言程序的結(jié)構(gòu)第三節(jié)C語言程序的編譯和運行本章小結(jié)習題 第一節(jié)C語言的發(fā)展歷史和特點 一 C語言的發(fā)展歷史 C語言是一種高效的編譯型結(jié)構(gòu)化程序設計語言 最早由美國貝爾實驗室的DennisM Ritchie在B語言的基礎上開發(fā)出來 并于1972年在一臺DECPDP 11計算機上首次實現(xiàn) 最初的C語言只是為描述和實現(xiàn)Unix操作系統(tǒng)提供一種工作語言而設計的 1973年 KenThompson和DennisM 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語言移植到其他機器時所需做的工作大大簡化 同時也推動了Unix系統(tǒng)迅速地在各種機器上實現(xiàn) 第二章 第一節(jié) 一 C語言的發(fā)展歷史 1978年 BrianW Kernighan和DennisM Ritchie出版了名著 C程序設計語言 TheCProgrammingLanguage 現(xiàn)在此書已被翻譯成多種語言 成為C語言最權(quán)威的教材之一 1983年 美國國家標準化協(xié)會 ANSI 根據(jù)C語言問世以來各種版本對 語言的發(fā)展和擴充 制定了一套ANSI標準 稱為ANSIC 1987年 ANSI又公布了新標準 87ANSIC 1990年 國際標準化組織ISO接受87ANSIC為ISOC的標準 ISO9899 1990 第二章 第一節(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)的特點 先看下面幾個例子 這些例子體現(xiàn)了 語言程序在組成結(jié)構(gòu)上的特點 例2 1一個簡單的例子 includevoidmain void printf WelcometoCprogram n 將上述程序輸入計算機 進行編譯 連接 運行后在屏幕上輸出 WelcometoCprogram 第二章 第二節(jié) 一 C語言程序的構(gòu)成 通過這個例子 我們可以初步看到 C的程序結(jié)構(gòu)包含預處理部分 include 它的功能是提供標準輸入輸出函數(shù)有關(guān)的信息 在使用標準函數(shù)庫中的函數(shù)時 C編譯系統(tǒng)要求程序通過預處理命令 include將提供所使用函數(shù)有關(guān)的信息 如對函數(shù)的聲明 的頭文件 包含 進程序 stdio h是C編譯系統(tǒng)提供的一個頭文件名 stdio是 standardinput output 的縮寫 該文件提供的便是有關(guān)標準輸入輸出函數(shù)的信息 第二章 第二節(jié) 一 C語言程序的構(gòu)成 C的程序結(jié)構(gòu)中還包含一個特殊的函數(shù)main 稱作 主函數(shù) 這是每一個C語言程序所必備的 其中main是函數(shù)的名字 main前面是函數(shù)類型 void表示此函數(shù)是 空類型 即執(zhí)行此函數(shù)后沒有返回值 main后面圓括號內(nèi)用于定義函數(shù)參數(shù) 可以使用空白或void表示沒有參數(shù) 函數(shù)體由一對花括號 把構(gòu)成函數(shù)的語句括起來 本例子中函數(shù)體只有一個輸出語句 printf WelcometoCprogram n 它的作用是將雙引號內(nèi)的字符串按原樣輸出 n 是換行符 即在輸出 WelcometoCprogram 后換行 分號表示該語句結(jié)束 第二章 第二節(jié) 一 C語言程序的構(gòu)成 例2 2求矩形的面積 求矩形的面積 include 編譯預處理命令 voidmain intx y area 聲明部分 定義變量x y area為整型 以下3行為C語句 x 8 y 6 分別將8 6賦值給變量x y area x y 計算變量x和y的積 并將其值賦給變量area printf areais d n 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行求積 使area的值為x y 第9行中 d 是輸入輸出的 格式控制符 用來指定輸入輸出時的數(shù)據(jù)類型和格式 本例中 d 表示 以十進制整數(shù)形式 輸出對應輸出項的值 雙引號括起來的部分為 格式控制字符串 本例中 格式控制字符串中的 areais 按原樣輸出 d 則在該位置上以十進制整數(shù)形式輸出括號內(nèi)逗號右端變量area的值 即8與6的積 n 是換行符 實現(xiàn)換行 因此程序運行時輸出以下信息 areais48 第二章 第二節(jié) 一 C語言程序的構(gòu)成 例2 3基本程序結(jié)構(gòu)例子 主函數(shù)與自定義函數(shù)及調(diào)用 voidmain 主函數(shù) inta b c 變量聲明 定義整型變量a b c intadd intx inty 函數(shù)聲明 聲明本函數(shù)要調(diào)用的add函數(shù) scanf d d 輸出c的值 第二章 第二節(jié) 一 C語言程序的構(gòu)成 intadd intx inty 定義函數(shù)值為整型 形式參數(shù)x y為整型的add函數(shù) intz add函數(shù)中的聲明部分 定義本函數(shù)中用到的整型變量z z x y return z 返回z的值到該函數(shù)被調(diào)用處 當運行程序時輸入 123321 代表Enter鍵 全書同 程序輸出如下 add 444 第二章 第二節(jié) 一 C語言程序的構(gòu)成 本程序包括兩個函數(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語言程序總是從主函數(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)一般有聲明部分和執(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ù)的最后一個語句也不例外 程序行書寫格式比較自由 既允許一行內(nèi)寫幾條語句 也允許一條語句分寫在幾行上 而且C語言程序沒有行號 在注釋部分中 所有 和 必須成對使用 且 和 以及 和 之間不能有空格 否則都會出錯 第二章 第二節(jié) 二 C語言程序的書寫格式 針對C語言程序的構(gòu)成及書寫格式 在編寫C語言程序時要注意如下技巧 1 為避免遺漏 必須配對使用符號 如注釋符號 函數(shù)體的起止標識符 大括號 圓括號等 在輸入時 可連續(xù)輸入這些起止標識符 然后再在其中進行插入來完成內(nèi)容的編輯 2 注釋的位置 可以單占一行 也可以跟在語句的后面 3 一個語句或注釋如果一行寫不下 可另起一行繼續(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語言程序的編譯過程簡介 3 連接生成可執(zhí)行程序文件將目標程序與系統(tǒng)的函數(shù)庫以及其他目標程序進行連接裝配 才能形成可執(zhí)行程序文件 可執(zhí)行文件的擴展名為 exe 4 運行可執(zhí)行程序文件將可執(zhí)行程序文件 擴展名為 exe 調(diào)入內(nèi)存并運行 得到程序的結(jié)果 第二章 第三節(jié) 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 TurboC 3 0開發(fā)環(huán)境是一個集成編輯 編譯 連接 調(diào)試的C語言開發(fā)環(huán)境 以下介紹在TurboC 3 0環(huán)境中運行C語言程序的步驟 1 啟動TurboC 3 0環(huán)境假設TurboC 3 0安裝在C盤的tc3子目錄下 方法一 從 開始 菜單選擇 運行 輸入 cmd 再輸入cdc tc3 bin 再輸入tc 出現(xiàn)如圖2 2所示的TurboC 3 0主菜單界面 方法二 進入tc exe文件所在的子目錄 如c tc3 bin 雙擊tc exe文件 或直接雙擊桌面上tc exe文件的快捷方式圖標 也出現(xiàn)如圖2 2所示的主菜單界面 第二章 第三節(jié) 第二章 第三節(jié) 圖2 2進入TurboC 3 0主菜單界面 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 2 編輯源程序文件從File菜單選擇New 如圖2 3所示 進入新建C語言程序環(huán)境 如圖2 4所示 即可輸入源程序 輸入的源程序如下 includevoidmain inti sum 0 for i 1 i 100 i if i 2 0 sum sum i printf d sum 這是一個求1 100之間所有奇數(shù)的和的程序 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 第二章 第三節(jié) 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 第二章 第三節(jié) 圖2 3進入新建C語言程序環(huán)境 圖2 4編輯C語言程序 3 保存源程序文件從File菜單選擇Save或者直接按F2鍵 選取路徑并起文件名 如起名為example c 如圖2 5所示 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 第二章 第三節(jié) 圖2 5保存C語言程序 4 編譯與連接源程序文件從Compile菜單選擇Compile或者直接按快捷鍵Alt F9 即可對源程序 如example c 進行編譯 生成目標程序文件 obj 如圖2 6所示 再從Compile菜單選擇Link 進行連接 得到一個可執(zhí)行文件 exe 如圖2 7所示 也可將編譯與連接合并為一個步驟進行 操作方法是從Compile菜單選擇Make或者直接按F9鍵 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 第二章 第三節(jié) 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 第二章 第三節(jié) 圖2 6編譯C語言程序生成目標程序 圖2 7連接生成可執(zhí)行程序 5 運行程序從Run菜單選擇Run或者直接按快捷鍵Ctrl F9 運行程序并輸出結(jié)果 從Window菜單選擇UserScreen或者直接按Alt F5 切換到用戶屏幕 可查看程序的運行結(jié)果 如圖2 8所示 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 第二章 第三節(jié) 圖2 8程序的執(zhí)行結(jié)果 6 退出TurboC從File菜單選擇Quit或者直接按Alt X鍵 退出TurboC 3 0環(huán)境 二 TurboC 3 0環(huán)境中運行C語言程序的步驟 第二章 第三節(jié) 本章介紹C語言的發(fā)展歷史 特點 C語言程序的基本結(jié)構(gòu) C語言程序的基本組成以及C語言程序的編譯與執(zhí)行 C語言是功能強大的計算機高級語言 它既是系統(tǒng)描述語言 又是通用的程序設計語言 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í)行文件 exe 本章小結(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ù)類型 在使用計算機程序處理實際問題時 可能遇到各種類型的數(shù)據(jù) 例如在處理學生信息時 可能遇到這樣一些數(shù)據(jù) 年齡20歲 它是整數(shù) 身高1 75米 它是實數(shù) 姓名 張三 它是一串字符 由此可見 我們編寫的程序應該具有處理多種類型數(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)存單元 其值在程序運行中是允許改變的 第三章 第一節(jié) 第二節(jié)常量 一 整型常量 整型常量用于表達一個確定的整數(shù) 如32 它有以下三種形式 1 十進制整數(shù)2 八進制整數(shù)以0 零 開頭 由0 7的數(shù)字序列構(gòu)成 如0123表示八進制數(shù)123 其值為1 82 2 81 3 80 83 即十進制的83 3 十六進制整數(shù)以0 x或0X開頭 0 x中的0是數(shù)字零 可以由數(shù)字0 9和字母A F或a f構(gòu)成 A F字母用于表示數(shù)字10 15 例如 0 x2F表示2 161 15 160 47 即十進制的47 第三章 第二節(jié) 一 整型常量 4 整數(shù)的后綴一個整型常量的尾部加上字母L或l 則表示該整數(shù)為長整型常量 例如 23L是十進制的長整型常量 0 x23L是十六進制的長整型常量 也可以用后綴U或u表示無符號整型常量 例如 234U是十進制無符號整型常量 023U是八進制無符號整型常量 后綴L和U可以同時使用 例如78LU 表示無符號長整型 并且L和U兩種后綴的順序任意 5 整數(shù)在機內(nèi)的存儲形式我們知道 數(shù)據(jù)在計算機中是以二進制形式進行處理的 在大多數(shù)機器中 整數(shù)采用補碼的形式來存儲 對于C語言編譯系統(tǒng) TurboC使用2個字節(jié)存儲一個整數(shù) 而VisualC 6 0采用4個字節(jié)存儲一個整數(shù) 第三章 第二節(jié) 二 浮點型常量 C語言中的浮點型常量也就是實數(shù) 有兩種表示形式 1 十進制小數(shù)形式2 指數(shù)形式它由數(shù)字0 9 字母e 或E 和 號組成 它的形式為aEn 意為a 10n 其中a為十進制整數(shù)或小數(shù) n為十進制整數(shù) 例如 2 5e3 表示2 5 103 3 5e 2 表示 3 5 10 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 單精度 如2 45F 3 5e2F 4 如果在一個浮點型常量后面加上一個L或l 則表示為longdouble型 如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 都是字符常量 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ù)形式輸出 此外 字符數(shù)據(jù)也可以參加算術(shù)運算 即相當于使用其ASCII碼值進行運算 第三章 第二節(jié) 四 字符串常量 字符串常量是由一對雙引號括起來的字符序列 字符串中可以包含任何字符 如空格 轉(zhuǎn)義符 甚至漢字 例如 Howdoyoudo 24 5 中國 n 都是合法的字符串 雙引號不屬于字符串 而是起界定作用 在C語言中沒有提供字符串類型 而是使用字符數(shù)組來存儲字符串 字符串在機內(nèi)存儲時 所占的字節(jié)數(shù)等于字符串常量中的字符個數(shù)加1 增加的一個字節(jié)用于存放 0 空字符 ASCII碼為0 它作為字符串的結(jié)束標志 第三章 第二節(jié) 五 符號常量及其定義 C語言提供了一種利用一個標識符來代表一個常數(shù)的方法 即定義符號常量 這樣可以更確切表明其含義 C語言中使用 define定義符號常量 即給常量起一個名字 其語法格式為 define標識符常量例如 definePI3 14 definePRICE30 第三章 第二節(jié) 五 符號常量及其定義 在上面例子中 PI和PRICE稱為符號常量 在C語言中 define稱為宏定義 是預處理命令的開始標志 一旦定義了符號常量 當 編譯程序?qū)Τ绦蜻M行預處理時 在程序中所有使用這些符號常量的地方都會被該常量值取代 第三章 第二節(jié) 五 符號常量及其定義 例3 2符號常量的使用 include definePI3 14 定義符號常量PI voidmain doubler s r 20 0 s PI r r 使用符號常量PI printf s f n s 第三章 第二節(jié) 程序運行結(jié)果為 s 1256 000000以上的s PI r r 語句在編譯預處理后產(chǎn)生如下的語句 s 3 14 r r 五 符號常量及其定義 使用符號常量是一種好的編程風格 它的好處在于 1 程序便于維護 如果常量在程序中多處出現(xiàn) 當需要改變其值時 要修改多個地方 如果使用符號常量 只要在程序開頭的宏定義部分修改一次 就能做到一改全改 這就減少了工作量 并且不易出錯 2 提高程序可讀性 從例3 2就可以看出 當我們閱讀程序時看到PI 就可以知道它代表圓周率 第三章 第二節(jié) 第三節(jié)簡單變量 一 變量的命名 變量代表計算機內(nèi)存中的一個存儲單元 與常量相反 變量的值在程序運行過程中是可以改變的 變量有以下特性 變量名 變量值 變量類型 變量的存儲地址 變量的存儲屬性 高級語言的編譯器在編譯連接時會給每一個變量分配一個內(nèi)存單元 變量的值就存儲在該內(nèi)存單元中 訪問變量的值 實際上是通過變量名找到相應的內(nèi)存地址 然后對其中存儲的數(shù)據(jù)進行訪問 第三章 第三節(jié) 一 變量的命名 C語言中變量的命名是有特殊限制的 在C語言中 對變量 符號常量 函數(shù) 宏 標號 文件名等的命名的有效字符序列稱為標識符 ide ntifier C語言規(guī)定 標識符可以由字母 數(shù)字和下劃線構(gòu)成 且必須由字母或下劃線開頭 其中字母是指英文26個字母 可以是大寫或小寫 第三章 第三節(jié) 一 變量的命名 C語言規(guī)定 關(guān)鍵字不能作為變量名使用 這是將關(guān)鍵字也稱為保留字的原因 例如 int if typedef等 此外 C語言中有些標識符是系統(tǒng)預定義的 它們在程序中有特殊的含義 例如 printf open ctype等 雖然可以對它們進行重新定義 但建議不要作為變量名使用 以下是合法的標識符 可以作為變量名 n i2 str len g iMax month number以下是不合法標識符 3d ye x y 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列出了TurboC的基本數(shù)據(jù)類型及相關(guān)屬性 第三章 第三節(jié) 二 變量的基本數(shù)據(jù)類型 第三章 第三節(jié) 三 變量的類型定義 在C語言中規(guī)定必須對所有用到的變量先定義后使用 定義變量的語法格式如下 數(shù)據(jù)類型名變量名表 變量名表是一個或多個標識符 每個標識符之間用逗號 分隔開 例如 inti j k 以上語句定義了三個整型變量i j k 其中int與i之間至少要留一個空格 語句最后要以分號 結(jié)尾 這是因為變量定義是一條語句而不是一條命令 C語言規(guī)定一個語句的終結(jié)符是分號 第三章 第三節(jié) 四 變量的初始化 一個變量被定義后 它是否就有值了呢 答案是它不是沒有值 而是它的值未被確定 因此 在使用一個變量時 必須要確保其有確定的值 這就需要對該變量指定初值 即對變量進行初始化 以下例子演示了對變量進行初始化的方法 doubled1 3 35 d2 也可以用賦值語句給變量指定值 以上語句相當于 doubled1 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)知識將在第7章中介紹 第三章 第三節(jié) 第四節(jié)庫函數(shù) 一 庫函數(shù)的使用方式 C語言提供的每一個庫函數(shù)都在對應的某個頭文件中聲明其函數(shù)原型 在使用某個庫函數(shù)前都應在程序開始處包含相應的頭文件 文件包含可以用預處理命令 include來實現(xiàn) 例如 數(shù)學函數(shù)的原型都在文件math h中聲明 因此要調(diào)用數(shù)學函數(shù)abs x 求整數(shù)x的絕對值 就應在程序開始位置使用如下預處理命令 include或 include math h 第三章 第四節(jié) 預處理命令不是C語句 因此結(jié)尾不加分號 這一點在編程時要注意 一 庫函數(shù)的使用方式 在包含了與某個庫函數(shù)對應的頭文件后 就可以在程序中調(diào)用該函數(shù) C語言函數(shù)調(diào)用的語法格式為 函數(shù)名 實參列表 如果是調(diào)用無參函數(shù) 則 實參列表 可以沒有 但括號不能省略 第三章 第四節(jié) 二 常用數(shù)學函數(shù) C語言中預先定義了豐富的數(shù)學函數(shù) 用于進行常見的數(shù)學運算 這些數(shù)學函數(shù)可以分為以下幾類 三角函數(shù) trigonometricfunctions 雙曲函數(shù) hyperbolicfunctions 指數(shù)與對數(shù)函數(shù) exponentialandlogarithmicfunction s 冪與絕對值函數(shù) powerandabsoluteval uefunctions 以及其他函數(shù) C語言提供的數(shù)學函數(shù)的原型在頭文件math h中聲明 使用時應在程序頭部包含math h文件 include或 include math h 第三章 第四節(jié) 二 常用數(shù)學函數(shù) 1 三角函數(shù)sin cos tan函數(shù)原型 doublesin doublex doublecos doublex doubletan doublex 功能 函數(shù)sin cos tan用于計算正弦 余弦和正切值 這三個函數(shù)的參數(shù)都是代表弧度值的double型數(shù)據(jù) 第三章 第四節(jié) 二 常用數(shù)學函數(shù) 2 絕對值函數(shù)abs fabs labs函數(shù)原型 intabs intx doublefabs doublex longlabs longx 功能 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ù)原型 doubleexp doublex doublepow doublex doubley 功能 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ù)學函數(shù) 4 log和log10函數(shù)函數(shù)原型 doublelog doublex doublelog10 doublex 功能 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ù)原型 doublesqrt doublex 功能 sqrt函數(shù)返回參數(shù)x的平方根 例如 sqrt 4 0 等于2 0 6 隨機函數(shù)rand srandrand和srand函數(shù)的原型在頭文件stdlib h中定義 使用時應在程序開頭包含stdlib h文件 函數(shù)原型 intrand void voidsrand unsignedintseed 第三章 第四節(jié) 二 常用數(shù)學函數(shù) 功能 rand函數(shù)返回一個值在0 RAND MAX之間的偽隨機 pseudo random 整數(shù) ANSIC要求RAND MAX至少為32767 srand函數(shù)用參數(shù)seed來設置一個偽隨機數(shù)序列的開始點 以便調(diào)用rand函數(shù)時產(chǎn)生一個新的偽隨機數(shù)序列 參數(shù)seed稱為隨機數(shù)種子 第三章 第四節(jié) 三 字符輸入輸出函數(shù) C語言提供的字符輸入輸出函數(shù)的原型在頭文件stdio h中聲明 在使用時應在程序頭部包含stdio h文件 include或 include stdio h 1 字符輸出函數(shù)putchar函數(shù)原型 intputchar intc 功能 putchar函數(shù)把一個字符輸出到標準輸出設備 通常是顯示器 上 其中參數(shù)c可以是字符變量或常量 也可以是一個代表ASCII碼的整數(shù) 第三章 第四節(jié) 三 字符輸入輸出函數(shù) 例3 7利用getchar函數(shù)輸入一個字符 includevoidmain charch 定義字符型量ch ch getchar 等待鍵盤輸入字符并按回車 并把第一個字符賦給ch putchar ch 輸出字符 第三章 第四節(jié) 三 字符輸入輸出函數(shù) 執(zhí)行以上程序 運行到ch getchar 語句時 程序等待輸入字符 從鍵盤輸入一個字符并按回車鍵后 getchar函數(shù)得到輸入的字符 并賦給字符型變量ch 程序接著輸出該字符 注意 getchar只接收一個字符 如果輸入多個字符再按回車鍵 也只有第一個字符被getchar函數(shù)接收 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 格式化輸入輸出函數(shù)是C語言提供的庫函數(shù) 其聲明包含在頭文件stdio h中 因此在程序中若要使用格式化輸入輸出函數(shù) 也需要在源程序的開頭包含該頭文件 1 格式化輸出函數(shù)printf在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 輸出字符型數(shù)據(jù)用 c 輸出字符串用 s等 輸出列表是若干要輸出的數(shù)據(jù)項 它可以是常量 變量或表達式 各參數(shù)之間以逗號 隔開 輸出項的類型 個數(shù) 順序應與格式控制符一一對應 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 例3 8用printf函數(shù)輸出數(shù)據(jù) includevoidmain inti 100 doubled 35 5 printf IntegerNumber d nDoubleNumber f n i d 程序運行結(jié)果為 IntegerNumber 100DoubleNumber 35 500000 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 上面例子中的格式控制字符串包括兩個格式控制符 d和 f 以及一些普通和轉(zhuǎn)義字符 輸出時 在兩個格式控制字符的位置上 依次用i和d的值替換 TurboC默認浮點型數(shù)據(jù)輸出6個小數(shù)位數(shù) 由于i和d分別是整型和浮點型數(shù)據(jù) 因此分別用格式控制符 d和 f與之對應 第三章 第四節(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ù)的實際寬度超過m列 則按實際寬度輸出 浮點型數(shù)據(jù)輸出 m nf 指定數(shù)據(jù)輸出總的寬度占m列 小數(shù)部分占n列 若數(shù)據(jù)本身小于m位 則左補空格 字符串數(shù)據(jù)輸出 ms 表示字符串輸出占m列 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 2 格式化輸入函數(shù)scanfscanf函數(shù)的功能是從標準輸入流中按指定格式接收輸入的數(shù)據(jù) 調(diào)用scanf函數(shù)的語法格式為 scanf 格式控制字符串 地址列表 其中 格式控制字符串 用于指定輸入的格式 它由格式控制符和普通字符兩部分構(gòu)成 地址列表是若干輸入數(shù)據(jù)項的內(nèi)存地址 它通常是變量的地址 各地址之間用逗號 分隔 格式控制字符串 中的格式控制符數(shù)量和類型要與輸入數(shù)據(jù)項從左到右一一對應 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 在 格式控制字符串 中包含兩種類型的字符 格式控制符和普通字符 1 格式控制符 以 號開始 后面跟格式字符 用于以指定的格式輸入數(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ù)時要求按原樣輸入 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 例3 9用scanf函數(shù)輸入數(shù)據(jù) includevoidmain inti j floatx y z printf Inputtwointegersiandjseparatedbyaspace 提示語句 scanf d d 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 運行以上程序 輸出 Inputtwointegersiandjseparatedbyaspace 2450 Inputfloatsx yandzseparatedeachbyacomma 12 5 3 7 2 8 i 24 j 50 x 12 500000 y 3 700000 z 2 800000說明 1 程序中 i j等輸入地址項中的 是 地址運算符 用于獲取變量在內(nèi)存中的地址 2 輸入整數(shù)20和50之間可以用空格隔開 也可以在輸入20后按回車鍵 接著再輸入50 3 語句scanf f f f x y z 中的前兩個逗號是普通字符 在輸入時要求按原樣輸入 因此輸入三個數(shù)據(jù)時要用逗號隔開 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 3 使用格式化輸入函數(shù)scanf常見的幾個問題 1 輸入地址列表問題 scanf函數(shù)中的地址表應當是變量的地址 而不是變量名 2 用 c輸入字符的問題 在用 c輸入字符時 空格符 轉(zhuǎn)義字符都會作為有效字符輸入 3 標準輸入流中殘留字符問題 當連續(xù)使用多個scanf輸入數(shù)據(jù)時 會發(fā)生數(shù)據(jù)殘留問題 第三章 第四節(jié) 四 格式化輸入輸出函數(shù)的一般使用 解決以上問題的方法有兩種 1 在第二個scanf的格式控制字符串前加一個空格 以抵消上一行輸入的回車 scanf d 這樣無論上一行輸入什么

溫馨提示

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

提交評論