版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序設(shè)計(jì)概述 C語(yǔ)言程序設(shè)計(jì)教程第1章第1頁(yè),共1010頁(yè)。目錄 | CONTENTS什么是程序設(shè)計(jì)計(jì)算機(jī)的組成程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)過(guò)程01020304第2頁(yè),共1010頁(yè)。什么是程序設(shè)計(jì) 程序設(shè)計(jì)就是教會(huì)計(jì)算機(jī)去完成某一特定的任務(wù),即設(shè)計(jì)出完成某個(gè)任務(wù)的程序 。程序設(shè)計(jì)包括以下幾個(gè)階段:算法設(shè)計(jì):設(shè)想計(jì)算機(jī)是如何一步一步完成這個(gè)任務(wù) 編碼:用計(jì)算機(jī)認(rèn)識(shí)的語(yǔ)言,如C+語(yǔ)言,描述這個(gè)完成任務(wù)的過(guò)程 編譯與調(diào)試:檢驗(yàn)程序是否正確,達(dá)到預(yù)期的目標(biāo)01OPTION02OPTION03OPTION第3頁(yè),共1010頁(yè)。目錄 | CONTENTS什么是程序設(shè)計(jì)計(jì)算機(jī)的組成程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)過(guò)程01020
2、304第4頁(yè),共1010頁(yè)。計(jì)算機(jī),也被稱(chēng)之為“電腦”,是一種能夠按照事先存儲(chǔ)的程序自動(dòng)、高效地對(duì)數(shù)據(jù)進(jìn)行輸入、處理、存儲(chǔ)和輸出的系統(tǒng)。計(jì)算機(jī)的組成硬件計(jì)算機(jī)軟件第5頁(yè),共1010頁(yè)。目錄 | CONTENTS計(jì)算機(jī)的組成02硬件軟件第6頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成硬件存儲(chǔ)器輸入設(shè)備輸出設(shè)備控制器運(yùn)算器CPU第7頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成存儲(chǔ)器保存正在運(yùn)行的程序代碼和數(shù)據(jù)內(nèi)存的最小單元是bit,一般8個(gè)bit組成一個(gè)byte,若干個(gè)byte組成一個(gè)Word在一般的機(jī)器中,內(nèi)存按字節(jié)編址,內(nèi)存大小也是按字節(jié)計(jì)量關(guān)機(jī)后,內(nèi)存的數(shù)據(jù)全部丟失第8頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成CPUCPU (Ce
3、ntral Processing Unit) 有兩個(gè)部件組成:控制器Control unit 運(yùn)算器ALU Arithmetic-Logic Unit第9頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成控制器控制器控制計(jì)算機(jī)的其余部分如何完成程序的指令。指揮內(nèi)存和其它部件之間的信息的傳送(包括信息和指令)。指揮CPU和輸入輸出設(shè)備之間的控制信息的傳送。第10頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成控制器中的信息存儲(chǔ)寄存器PC程序計(jì)數(shù)器指令寄存器IR第11頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成控制器的工作取下一條指令:按PC指定的地址到內(nèi)存中取出下一條指令,存入IR。解碼指令:將指令解碼成一系列的控制信號(hào)。如果需要的話(huà),到內(nèi)存取數(shù)
4、據(jù)。執(zhí)行指令:將控制信號(hào)發(fā)送給運(yùn)算器,執(zhí)行相應(yīng)的運(yùn)算。第12頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成運(yùn)算器的組成寄存器一組存放正在運(yùn)算的數(shù)據(jù)的寄存器邏輯電路執(zhí)行控制器發(fā)出的控制信號(hào)第13頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成運(yùn)算器可以執(zhí)行的運(yùn)算加、減、乘、除算術(shù)運(yùn)算比較兩個(gè)數(shù)據(jù)以及完成與、或、非之類(lèi)的運(yùn)算邏輯運(yùn)算第14頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成輸入輸出設(shè)備輸入設(shè)備將人能理解的符號(hào)轉(zhuǎn)換成計(jì)算機(jī)能處理的符號(hào)。常用的輸入設(shè)備有:鍵盤(pán)、鼠標(biāo)、光筆等。輸出設(shè)備將計(jì)算機(jī)的輸出轉(zhuǎn)換成人能理解的輸出。常用的輸出設(shè)備有:顯示器、打印機(jī)、音響設(shè)備等。01OPTION02OPTION第15頁(yè),共1010頁(yè)。目錄 | CONTEN
5、TS計(jì)算機(jī)的組成硬件軟件02第16頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成計(jì)算機(jī)軟件軟件可以分為系統(tǒng)軟件和應(yīng)用軟件系統(tǒng)軟件居于計(jì)算機(jī)系統(tǒng)中最靠硬件的部分,它將計(jì)算機(jī)的用戶(hù)與硬件隔離。系統(tǒng)軟件與具體的應(yīng)用無(wú)關(guān),但其他的軟件要通過(guò)系統(tǒng)軟件才能發(fā)揮作用。常用的系統(tǒng)軟件有操作系統(tǒng)、編譯器、網(wǎng)絡(luò)軟件等。第17頁(yè),共1010頁(yè)。計(jì)算機(jī)的組成計(jì)算機(jī)軟件應(yīng)用軟件是為了支持某一應(yīng)用而開(kāi)發(fā)的軟件。如字處理軟件、財(cái)務(wù)軟件等。第18頁(yè),共1010頁(yè)。目錄 | CONTENTS什么是程序設(shè)計(jì)計(jì)算機(jī)的組成程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)過(guò)程02030401第19頁(yè),共1010頁(yè)。程序設(shè)計(jì)語(yǔ)言 智能語(yǔ)言 過(guò)程化語(yǔ)言 匯編語(yǔ)言 機(jī)器語(yǔ)言第一代低級(jí)
6、語(yǔ)言第二代低級(jí)語(yǔ)言第三代高級(jí)語(yǔ)言第四代高級(jí)語(yǔ)言第20頁(yè),共1010頁(yè)。程序設(shè)計(jì)語(yǔ)言機(jī)器語(yǔ)言一組二進(jìn)制數(shù)表示的指令。每種計(jì)算機(jī)都有自己的機(jī)器語(yǔ)言。用機(jī)器語(yǔ)言寫(xiě)程序是非常困難的,讀機(jī)器語(yǔ)言寫(xiě)的程序也是非常困難的。第21頁(yè),共1010頁(yè)。程序設(shè)計(jì)語(yǔ)言匯編語(yǔ)言用縮寫(xiě)和助記符代替機(jī)器語(yǔ)言中的比特串。與機(jī)器語(yǔ)言的指令一一對(duì)應(yīng)和機(jī)器語(yǔ)言一樣,不同類(lèi)的機(jī)器有不同的匯編語(yǔ)言。匯編程序?qū)R編語(yǔ)言寫(xiě)的程序翻譯成機(jī)器語(yǔ)言的程序。第22頁(yè),共1010頁(yè)。程序設(shè)計(jì)語(yǔ)言過(guò)程化語(yǔ)言將過(guò)程化語(yǔ)言寫(xiě)的程序(源代碼)翻譯成機(jī)器語(yǔ)言的程序(目標(biāo)代碼)。編譯器逐句解釋源程序并執(zhí)行,不保存目標(biāo)代碼。解釋器類(lèi)似于英語(yǔ)的語(yǔ)言無(wú)法直接運(yùn)行,需
7、要一個(gè)翻譯。有兩種翻譯方式第23頁(yè),共1010頁(yè)。程序設(shè)計(jì)語(yǔ)言第三代語(yǔ)言的特點(diǎn)具備了一定的機(jī)器獨(dú)立性,使用戶(hù)可以專(zhuān)注于解決問(wèn)題的方法。但某些方面還是受到機(jī)器的限制。為了解決移植性問(wèn)題,ANSI制訂了一系列的標(biāo)準(zhǔn)。第24頁(yè),共1010頁(yè)。程序設(shè)計(jì)語(yǔ)言主要的過(guò)程化語(yǔ)言FORTRAN:FORmula TRANslatorBASIC/Visual BASICCOBOL: COmmon Business-Oriented Language ADAPASCALC/C+JAVA第25頁(yè),共1010頁(yè)。程序設(shè)計(jì)語(yǔ)言智能語(yǔ)言也稱(chēng)為面向問(wèn)題的語(yǔ)言用于解決特定問(wèn)題如:SQL語(yǔ)言第26頁(yè),共1010頁(yè)。目錄 | CO
8、NTENTS什么是程序設(shè)計(jì)計(jì)算機(jī)的組成程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)過(guò)程02030401第27頁(yè),共1010頁(yè)。目錄 | CONTENTS程序設(shè)計(jì)過(guò)程算法編碼04編譯與鏈接調(diào)試與維護(hù)第28頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程算法解決問(wèn)題的過(guò)程。算法的特點(diǎn):A表述清楚、明確,無(wú)二義性。B可行性。即每一步驟都切實(shí)可行。C有限性,即可在有限步驟后得到結(jié)果。第29頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程算法的表示算法的表示偽代碼和PAD圖等方法結(jié)構(gòu)化流程圖傳統(tǒng)的流程圖自然語(yǔ)言第30頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程流程圖符號(hào)開(kāi)始或結(jié)束框輸入輸出框選擇框處理框連接點(diǎn)流程線(xiàn)第31頁(yè),共1010頁(yè)。設(shè)計(jì)一個(gè)算法,求兩個(gè)整數(shù)相除的商開(kāi)始c
9、=a/b輸入整數(shù) ab0輸入整數(shù) b結(jié)束輸出“除數(shù)不能為零”輸出 cTF流程圖第32頁(yè),共1010頁(yè)。NS圖ABABTF條件條件ABCase 1Case 2當(dāng)P為真AA直到P為真/當(dāng)P為真第33頁(yè),共1010頁(yè)。設(shè)計(jì)一個(gè)算法,求兩個(gè)整數(shù)相除的商輸入整數(shù)a輸入整數(shù)b b0 輸出“除數(shù)為0”c = a / bT輸出cF第34頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程偽代碼偽代碼是介于自然語(yǔ)言和程序設(shè)計(jì)語(yǔ)言之間的一種表示方法。通常用程序設(shè)計(jì)語(yǔ)言中的控制結(jié)構(gòu)表示算法的流程,用自然語(yǔ)言表示其中的一些操作。第35頁(yè),共1010頁(yè)。設(shè)計(jì)一個(gè)算法,求兩個(gè)整數(shù)相除的商輸入整數(shù)a,輸入整數(shù)bif (b0) c = a/b;
10、輸出c; else 輸出“除數(shù)為0”;第36頁(yè),共1010頁(yè)。目錄 | CONTENTS程序設(shè)計(jì)過(guò)程算法編碼04編譯與鏈接調(diào)試與維護(hù)第37頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程本課程采用C語(yǔ)言C語(yǔ)言是由貝爾實(shí)驗(yàn)室在B語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)的,并有美國(guó)國(guó)家標(biāo)準(zhǔn)組織和國(guó)際標(biāo)準(zhǔn)化組織進(jìn)行了標(biāo)準(zhǔn)化。用程序設(shè)計(jì)語(yǔ)言表示算法。第38頁(yè),共1010頁(yè)。目錄 | CONTENTS程序設(shè)計(jì)過(guò)程算法編碼04編譯與鏈接調(diào)試與維護(hù)第39頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程將高級(jí)語(yǔ)言翻譯成機(jī)器語(yǔ)言。編譯逐句翻譯并執(zhí)行。解釋執(zhí)行:全部翻譯成機(jī)器指令。編譯執(zhí)行:第40頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程編譯main() int i, s;i=1;s
11、=0;0110001011101001Source programObject programC compiler第41頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程將目標(biāo)代碼與工具的目標(biāo)代碼捆綁在一起。鏈接第42頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程compiler01101010001000目標(biāo)文件01101010001000其他目標(biāo)文件/庫(kù)函數(shù)linker011010100010000101010010001000010101可執(zhí)行文件源文件main()編譯過(guò)程第43頁(yè),共1010頁(yè)。目錄 | CONTENTS程序設(shè)計(jì)過(guò)程算法編碼04編譯與鏈接調(diào)試與維護(hù)第44頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程程序的調(diào)試:找出程序中
12、的錯(cuò)誤并改正程序中的錯(cuò)誤:邏輯錯(cuò)誤稱(chēng)為bug,找出邏輯錯(cuò)誤的過(guò)程稱(chēng)為debug。由編譯器找出這些錯(cuò)誤。語(yǔ)法錯(cuò)誤:程序中的語(yǔ)句不符合C語(yǔ)言語(yǔ)法可以利用調(diào)試工具。邏輯錯(cuò)誤:算法有問(wèn)題第45頁(yè),共1010頁(yè)。程序設(shè)計(jì)過(guò)程程序的調(diào)試集成的編程環(huán)境一般都包含如下幾種調(diào)試:?jiǎn)尾綀?zhí)行斷點(diǎn)設(shè)置變量跟蹤第46頁(yè),共1010頁(yè)。學(xué)有所獲第1章第47頁(yè),共1010頁(yè)。程序設(shè)計(jì)概述 C語(yǔ)言程序設(shè)計(jì)教程第2章第48頁(yè),共1010頁(yè)。目錄 | CONTENTS一個(gè)簡(jiǎn)單的C語(yǔ)言程序C語(yǔ)言的開(kāi)發(fā)環(huán)境0102第49頁(yè),共1010頁(yè)。一個(gè)簡(jiǎn)單的C語(yǔ)言程序/* 文件名: 2-1.c 用標(biāo)準(zhǔn)公式求解一元二次方程 */#include
13、 #include int main() double a, b, c, x1, x2, dlt; printf(請(qǐng)輸入方程的3個(gè)系數(shù):); scanf(%lf %lf %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 / a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;注釋編譯預(yù)處理命令主程序第50頁(yè),共1010頁(yè)。注釋C語(yǔ)言的注釋是從/*與*/之間所有的文字都是注釋?zhuān)梢允沁B續(xù)的幾行。 注釋是寫(xiě)給人看的,而不是
14、寫(xiě)給計(jì)算機(jī)的。 程序注釋 :從整體描述程序操作過(guò)程 注釋也可以出現(xiàn)在主程序中,解釋主程序中一些比較難理解的部分。 給程序添加注釋是良好的程序設(shè)計(jì)風(fēng)格 。一個(gè)簡(jiǎn)單的C語(yǔ)言程序第51頁(yè),共1010頁(yè)。編譯預(yù)處理C語(yǔ)言的編譯分成兩個(gè)階段:預(yù)編譯和編譯01預(yù)編譯處理程序中的預(yù)編譯命令,即那些以#開(kāi)頭的指令 。預(yù)編譯02此編譯預(yù)處理主要有“庫(kù)包含”用#include實(shí)現(xiàn),表示程序使用了某個(gè)庫(kù)。預(yù)編譯指令一個(gè)簡(jiǎn)單的C語(yǔ)言程序第52頁(yè),共1010頁(yè)。庫(kù)包含的格式預(yù)編譯庫(kù)是預(yù)先做好的一些工具程序。 每個(gè)庫(kù)要提供一個(gè)接口,告訴庫(kù)的用戶(hù)如何使用庫(kù)提供的功能。 庫(kù)包含就是把庫(kù)的接口文件放入源文件,以便編譯器檢查程序
15、中對(duì)庫(kù)的調(diào)用是否正確。一個(gè)簡(jiǎn)單的C語(yǔ)言程序第53頁(yè),共1010頁(yè)。庫(kù)包含的格式#include “filename”包含了一個(gè)用戶(hù)自定義的庫(kù)預(yù)編譯#include 包含了一個(gè)系統(tǒng)庫(kù)一個(gè)簡(jiǎn)單的C語(yǔ)言程序第54頁(yè),共1010頁(yè)。主程序預(yù)編譯主程序由一個(gè)或多個(gè)函數(shù)組成。 函數(shù)是一系列獨(dú)立的程序步驟,這些程序步驟集合在一起,并賦予一個(gè)名字。 每個(gè)程序都必須有一個(gè)名為main的函數(shù),它是程序的入口。一個(gè)簡(jiǎn)單的C語(yǔ)言程序第55頁(yè),共1010頁(yè)。函數(shù)的構(gòu)成預(yù)編譯int main() double a, b, c, x1, x2, dlt; printf(請(qǐng)輸入方程的3個(gè)系數(shù):); scanf(%lf %lf
16、 %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 / a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;函數(shù)頭函數(shù)體一個(gè)簡(jiǎn)單的C語(yǔ)言程序第56頁(yè),共1010頁(yè)。函數(shù)頭預(yù)編譯說(shuō)明函數(shù)和外界的交流。 形式:返回類(lèi)型 函數(shù)名(參數(shù)表)。 可以把函數(shù)想象成數(shù)學(xué)中的函數(shù)。參數(shù)表是一組自變量,返回類(lèi)型是函數(shù)值的類(lèi)型。一個(gè)簡(jiǎn)單的C語(yǔ)言程序第57頁(yè),共1010頁(yè)。函數(shù)頭預(yù)編譯返回類(lèi)型 函數(shù)名(參數(shù)表)函數(shù)的輸出值的類(lèi)型函數(shù)的名字。
17、程序可以通過(guò)函數(shù)名執(zhí)行函數(shù)體的語(yǔ)句。函數(shù)的輸入形式:返回類(lèi)型 函數(shù)名(參數(shù)表)。 一個(gè)簡(jiǎn)單的C語(yǔ)言程序第58頁(yè),共1010頁(yè)。函數(shù)體預(yù)編譯函數(shù)如何完成預(yù)定功能的過(guò)程。它說(shuō)明了如何從輸入(參數(shù))得到輸出的(返回值)的過(guò)程。可以把它想象成數(shù)學(xué)中的函數(shù)表達(dá)式。一個(gè)簡(jiǎn)單的C語(yǔ)言程序第59頁(yè),共1010頁(yè)。函數(shù)體的組成int main() double a, b, c, x1, x2, dlt; printf(請(qǐng)輸入方程的3個(gè)系數(shù):); scanf(%lf %lf %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 /
18、a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;變量定義輸入階段計(jì)算階段輸出階段一個(gè)簡(jiǎn)單的C語(yǔ)言程序第60頁(yè),共1010頁(yè)。函數(shù)的組成變量定義:為一些在程序編寫(xiě)時(shí)值未知的數(shù)據(jù)預(yù)約它們的存放處 。輸入階段 :獲取執(zhí)行時(shí)才能確定的用戶(hù)數(shù)據(jù)。計(jì)算階段 :由輸入推導(dǎo)出輸出的過(guò)程。通常通過(guò)各種計(jì)算得到。輸出階段:顯示程序執(zhí)行的結(jié)果。 輸入過(guò)程一般包括兩步 :顯示提示信息和讀取數(shù)據(jù)。一個(gè)簡(jiǎn)單的C語(yǔ)言程序第61頁(yè),共1010頁(yè)。目錄 | CONTENTS一個(gè)簡(jiǎn)單的C語(yǔ)言程序C語(yǔ)言的開(kāi)發(fā)環(huán)境0102第62頁(yè),共10
19、10頁(yè)。VS2010是Windows下的集成開(kāi)發(fā)環(huán)境。12345VS2010的安裝程序輸入編譯鏈接程序的運(yùn)行調(diào)試C語(yǔ)言的開(kāi)發(fā)環(huán)境第63頁(yè),共1010頁(yè)。學(xué)有所獲C語(yǔ)言程序設(shè)計(jì)教程第2章第64頁(yè),共1010頁(yè)。順序程序設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)教程第3章第65頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運(yùn)算03賦值運(yùn)算04信息表示05第66頁(yè),共1010頁(yè)。常量與變量編寫(xiě)程序時(shí)已經(jīng)確定且在程序運(yùn)行過(guò)程中不會(huì)修改的值。編寫(xiě)程序時(shí)尚未確定且在程序運(yùn)行過(guò)程中可以改變的值。常量變量第67頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類(lèi)型常量與符號(hào)常量變
20、量賦初值第68頁(yè),共1010頁(yè)。常量與變量變量定義變量, 也稱(chēng)為對(duì)象變量定義: 給尚未確定的值指定一個(gè)代號(hào) 給尚未確定的值準(zhǔn)備存儲(chǔ)空間 變量有三個(gè)重要屬性:名稱(chēng)、值、類(lèi)型 。變量定義就是告訴編譯器變量的名字及該變量中可以存放哪一類(lèi)數(shù)據(jù)類(lèi)型的值。第69頁(yè),共1010頁(yè)。常量與變量變量定義格式類(lèi)型名 變量名1,變量名2,變量名n;在C語(yǔ)言中,每個(gè)變量在使用前必須被定義,以便編譯器檢查變量使用的合法性。如: int num1, num2; double area;第70頁(yè),共1010頁(yè)。常量與變量變量命名名字必須以字母或下劃線(xiàn)開(kāi)頭。C語(yǔ)言中,名字中出現(xiàn)的大寫(xiě)和小寫(xiě)字母被看作是不同的字符,因此ABC,
21、Abc,abc是三個(gè)獨(dú)立的變量名。名字中的其它字符必須是字母、數(shù)字或下劃線(xiàn),不得使用空格和其它特殊符號(hào)。02OPTION01OPTION第71頁(yè),共1010頁(yè)。常量與變量變量命名名字不可以是系統(tǒng)的保留詞,如:int, double, for, return等,它們?cè)贑語(yǔ)言中有特殊用途C語(yǔ)言沒(méi)有規(guī)定過(guò)名字的長(zhǎng)度,但各個(gè)編譯系統(tǒng)都有自己規(guī)定。名字應(yīng)使讀者易于明白其存儲(chǔ)的值是什么,做到“見(jiàn)名知意”。05OPTION03OPTION04OPTION第72頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類(lèi)型常量與符號(hào)常量變量賦初值第73頁(yè),共1010頁(yè)。常量與變量數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型包
22、括兩個(gè)方面:數(shù)據(jù)的取值范圍可用的操作第74頁(yè),共1010頁(yè)。常量與變量數(shù)據(jù)類(lèi)型C語(yǔ)言中的數(shù)據(jù)類(lèi)型分為兩大類(lèi):構(gòu)造數(shù)據(jù)類(lèi)型數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉基本數(shù)據(jù)類(lèi)型整型、浮點(diǎn)型、字符型和布爾型第75頁(yè),共1010頁(yè)。常量與變量數(shù)據(jù)類(lèi)型基本類(lèi)型整型實(shí)型字符型雙精度數(shù)double單精度數(shù)float標(biāo)準(zhǔn)字符型 char無(wú)符號(hào)字符型 unsigned char第76頁(yè),共1010頁(yè)。數(shù)據(jù)類(lèi)型整型長(zhǎng)整型標(biāo)準(zhǔn)整型短整型無(wú)符號(hào)長(zhǎng)整型unsigned long有符號(hào)長(zhǎng)整型long int/long有符號(hào)標(biāo)準(zhǔn)整型int無(wú)符號(hào)標(biāo)準(zhǔn)整型unsigned int無(wú)符號(hào)短整型unsigned short有符號(hào)短整型short i
23、nt/short常量與變量第77頁(yè),共1010頁(yè)。目錄 | CONTENTS整型實(shí)型字符型各類(lèi)型數(shù)據(jù)占用的空間數(shù)據(jù)類(lèi)型第78頁(yè),共1010頁(yè)。常量與變量數(shù)據(jù)類(lèi)型整型處理整數(shù)的工具。允許的操作:算術(shù)運(yùn)算、比較大小等。第79頁(yè),共1010頁(yè)。數(shù)據(jù)類(lèi)型整型整型數(shù)的表示范圍:由各個(gè)編譯器指定。整型數(shù)有三種存儲(chǔ)方式,在VS2010中占用的空間如下所示:長(zhǎng)整型longlong / long int 4 byte (PC)基本型 int 4 byte (PC) 231(2311) 短整型 short 2 byte (PC) -215(2151)常量與變量第80頁(yè),共1010頁(yè)。無(wú)符號(hào)整數(shù)在某些應(yīng)用中,不可能
24、出現(xiàn)負(fù)數(shù),則整型數(shù)中有一半的數(shù)值范圍是被浪費(fèi)的。因此在C語(yǔ)言中可以將所有的數(shù)都看成正整數(shù),稱(chēng)為無(wú)符號(hào)數(shù)。無(wú)符號(hào)數(shù)的定義:可在各種整數(shù)類(lèi)型前加上關(guān)鍵詞unsigned,如下所示。unsigned int0232-1unsigned short065535unsigned long0232-1常量與變量第81頁(yè),共1010頁(yè)。目錄 | CONTENTS整型實(shí)型字符型各類(lèi)型數(shù)據(jù)占用的空間數(shù)據(jù)類(lèi)型第82頁(yè),共1010頁(yè)。實(shí)型數(shù)實(shí)型數(shù)的分類(lèi):?jiǎn)尉萬(wàn)loat、 雙精度double實(shí)型數(shù)的機(jī)內(nèi)表示:尾數(shù)*2指數(shù) 將存儲(chǔ)實(shí)數(shù)的單元分成兩個(gè)部分,一部分存儲(chǔ)尾數(shù),一部分存儲(chǔ)指數(shù)。單精度占用4字節(jié)雙精度占用8字節(jié)
25、常量與變量第83頁(yè),共1010頁(yè)。截?cái)嗾`差:由于尾數(shù)部分位數(shù)不夠,使數(shù)值部分丟失有時(shí)一個(gè)十進(jìn)制轉(zhuǎn)化成二進(jìn)制數(shù)時(shí)小數(shù)點(diǎn)后會(huì)無(wú)限循環(huán),如0.3對(duì)應(yīng)的二進(jìn)制數(shù)為0.01001 1001 1001 1001 ,因此尾數(shù)無(wú)法精確表示,這稱(chēng)為截?cái)嗾`差。實(shí)型數(shù)在計(jì)算機(jī)中不能精確表示,只是一個(gè)近似值。因此,最好不要判兩個(gè)實(shí)型數(shù)相等。常量與變量第84頁(yè),共1010頁(yè)。目錄 | CONTENTS整型實(shí)型字符型各類(lèi)型數(shù)據(jù)占用的空間數(shù)據(jù)類(lèi)型第85頁(yè),共1010頁(yè)。字符類(lèi)型:字符類(lèi)型名char存放一個(gè)字母或符號(hào),占一個(gè)字節(jié),存放的是字符的內(nèi)碼。常量與變量第86頁(yè),共1010頁(yè)。字符的機(jī)內(nèi)表示:用數(shù)字編碼每一個(gè)字符ASC
26、II碼的重要特性數(shù)字0到9是連續(xù)編碼的字母被分成二段:大寫(xiě)的和小寫(xiě)的。大寫(xiě)字母是連續(xù)編碼的,小寫(xiě)字母也是連續(xù)編碼的。常用的有:ASCII,EBCDIC等。但PC機(jī)中都用ASCII。常量與變量第87頁(yè),共1010頁(yè)。目錄 | CONTENTS整型實(shí)型字符型各類(lèi)型數(shù)據(jù)占用的空間數(shù)據(jù)類(lèi)型第88頁(yè),共1010頁(yè)。sizeof 運(yùn)算符用來(lái)了解某一類(lèi)型或某一表達(dá)式占用的內(nèi)存量。了解占用的內(nèi)存量sizeof 運(yùn)算符的用法sizeof(類(lèi)型名) 或 sizeof(表達(dá)式) 例如: sizeof(float) :float類(lèi)型的變量占用的內(nèi)存量 sizeof(a+15) :表達(dá)式 a+15 的計(jì)算結(jié)果所占的內(nèi)存
27、量。常量與變量第89頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類(lèi)型常量與符號(hào)常量變量賦初值第90頁(yè),共1010頁(yè)。目錄 | CONTENTS整型常量實(shí)型常量字符型常量字符串常量常量與符號(hào)常量符號(hào)常量第91頁(yè),共1010頁(yè)。整型常量整型常量可用十進(jìn)制、八進(jìn)制和十六進(jìn)制表示。十進(jìn)制123, -234八進(jìn)制0123十六進(jìn)制0 x123, 0 x3a2f一旦定義了一個(gè)整型變量,可以將一個(gè)整型常量賦給該整型變量。如:int a;a=123; 或 a = 0 x123; 都是正確的常量與變量第92頁(yè),共1010頁(yè)。目錄 | CONTENTS整型常量實(shí)型常量字符型常量字符串常量常
28、量與符號(hào)常量符號(hào)常量第93頁(yè),共1010頁(yè)。浮點(diǎn)數(shù)常量浮點(diǎn)數(shù)常量有兩種表示法:A十進(jìn)制表示1.23 3.14 -5.988B科學(xué)計(jì)數(shù)法123e2=12300 2.25e-3=0.00225 尾數(shù)*10指數(shù) 尾數(shù)e指數(shù)注意:尾數(shù)不能為空 e3 1e3指數(shù)必須為整數(shù) 2.5e2.3是非法的常量與變量第94頁(yè),共1010頁(yè)。目錄 | CONTENTS整型常量實(shí)型常量字符型常量字符串常量常量與符號(hào)常量符號(hào)常量第95頁(yè),共1010頁(yè)??纱蛴∽址谴蛴∽址?xiě)字母大、寫(xiě)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、空格等。換行和報(bào)警字符或響鈴 等控制字符。常量與變量字符常量分為:可打印字符和非打印字符第96頁(yè),共1010頁(yè)??纱?/p>
29、印字符的使用:用一對(duì)單引號(hào)括起來(lái)如: a, S, 2常量與變量第97頁(yè),共1010頁(yè)??纱蛴∽址氖褂贸A颗c變量賦值:char c1, c2; c1=a;c2=b; c1=97; c2= 98; 比較c=9和c=9?第98頁(yè),共1010頁(yè)。可打印字符的使用常量與變量運(yùn)算:如:c1 = a; c1 = c1 + 2; c1的值應(yīng)為?如:c中存放的是小寫(xiě)字母,則c - a + 1表示什么? 如:c中存放的是數(shù)字(0 9則c - 0表示什么?如:c1, c2存放的是小寫(xiě)字母,則c2 - c1表示什么? 第99頁(yè),共1010頁(yè)。轉(zhuǎn)義字符一些非打印字符用轉(zhuǎn)義序列表示。每個(gè)轉(zhuǎn)義序列以“”開(kāi)頭,字符“”則被
30、稱(chēng)為轉(zhuǎn)義字符。常量與變量第100頁(yè),共1010頁(yè)。常用的轉(zhuǎn)義字符常量與變量字符形式含義n換行t水平制表b退一格r回車(chē)f換頁(yè)第101頁(yè),共1010頁(yè)。常用的轉(zhuǎn)義字符運(yùn)算常量與變量字符形式含義”“ddd1到3位八進(jìn)制數(shù)代表的字符xhh1到2位十六進(jìn)制數(shù)代表的字符第102頁(yè),共1010頁(yè)。目錄 | CONTENTS整型常量實(shí)型常量字符型常量字符串常量常量與符號(hào)常量符號(hào)常量第103頁(yè),共1010頁(yè)。字符串常量運(yùn)算由一系列字符組成的序列稱(chēng)為字符串。如 : printf( hello, worldnhello, everyonen)當(dāng)雙引號(hào)作為字符串的一部分時(shí),必須寫(xiě)成轉(zhuǎn)義序列。例如,語(yǔ)句 printf(
31、Bother, said Pooh.n);中的第二、三個(gè)雙引號(hào)是字符串的一部分,不是字符串開(kāi)始或結(jié)束標(biāo)記。該語(yǔ)句的輸出為: Bother, said Pooh.常量與變量第104頁(yè),共1010頁(yè)。目錄 | CONTENTS整型常量實(shí)型常量字符型常量字符串常量常量與符號(hào)常量符號(hào)常量第105頁(yè),共1010頁(yè)。符號(hào)常量運(yùn)算給有意義的常數(shù)取一個(gè)名字。符號(hào)常量的命名與變量相同,但通常用大寫(xiě)字母。含義清楚,提高了程序的可讀性。在需要改變一個(gè)常量時(shí)能做到“一改全改”。常量與變量第106頁(yè),共1010頁(yè)。符號(hào)常量的定義常量與變量用編譯預(yù)處理命令#define實(shí)現(xiàn)#define 符號(hào)常量 字符串如#define
32、 PI 3.14預(yù)編譯時(shí),用字符串取代程序中的符號(hào)常量。程序中的PI都會(huì)被改寫(xiě)成3.14第107頁(yè),共1010頁(yè)。符號(hào)常量的定義常量與變量存在的問(wèn)題 所定義的符號(hào)常量無(wú)法進(jìn)行類(lèi)型檢查。#define的處理只是簡(jiǎn)單的字符串的替換,可能會(huì)引起一些意想不到的錯(cuò)誤。如:#define A 3+5x = A * 2的結(jié)果是13,而不是16。第108頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類(lèi)型常量與符號(hào)常量變量賦初值第109頁(yè),共1010頁(yè)。變量賦初值運(yùn)算在C語(yǔ)言中,變量定義只是給變量分配相應(yīng)的空間 。C語(yǔ)言允許在定義變量的同時(shí)給變量賦初值 。定義變量時(shí)沒(méi)有賦初值,然后直接引
33、用該變量是危險(xiǎn)的! 常量與變量第110頁(yè),共1010頁(yè)。變量賦初值可以給被定義的變量中的一部分變量賦初值,如:int sum = 0, count = 0, num;格式:類(lèi)型名 變量名 = 初值;如:int count = 0; 常量與變量第111頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運(yùn)算03賦值運(yùn)算04信息表示05第112頁(yè),共1010頁(yè)。目錄 | CONTENTS數(shù)據(jù)的輸入輸出02字符輸入輸出格式化輸出格式化輸入第113頁(yè),共1010頁(yè)。數(shù)據(jù)的輸入輸出字符的輸入輸出從鍵盤(pán)讀取一個(gè)字符或?qū)⒁粋€(gè)字符顯示在顯示器上。字符輸入輸出函數(shù): 輸入用getch
34、ar函數(shù)輸出用putchar函數(shù)第114頁(yè),共1010頁(yè)。數(shù)據(jù)的輸入輸出putchar函數(shù)用法:putchar(字符常量或字符變量) 例: 將字符a顯示在顯示器上:putchar(a); 讓顯示器的光標(biāo)移到下一行的第一列: putchar(n); 將字符類(lèi)型的變量ch的值顯示在顯示器上:putchar(ch);第115頁(yè),共1010頁(yè)。數(shù)據(jù)的輸入輸出getchar函數(shù)用法:ch = getchar();執(zhí)行到getchar函數(shù),程序暫停,等待用戶(hù)的輸入。鍵盤(pán)上輸入完信息后,只有在按Enter鍵才能被程序讀到。Enter本身也是一個(gè)字符,也可以被getchar讀取。注意第116頁(yè),共1010頁(yè)。
35、編寫(xiě)一程序,從鍵盤(pán)讀入2個(gè)字符并將輸入字符回顯在顯示器上117 #include int main() char c1, c2; c1 =getchar(); c2 =getchar(); putchar(c1); putchar(c2); return 0;大部分人的寫(xiě)法:實(shí)際結(jié)果: A A預(yù)想結(jié)果: A B AB執(zhí)行結(jié)果是什么?第117頁(yè),共1010頁(yè)。編寫(xiě)一程序,從鍵盤(pán)讀入2個(gè)字符并將輸入字符回顯在顯示器上118 分析:執(zhí)行到第二個(gè)getchar時(shí),緩沖區(qū)中的a已被讀取,但Enter仍在緩沖區(qū)中。于是第二個(gè)getchar讀入了字符Enter。第一個(gè)putchar輸出了a,第二個(gè)putch
36、ar輸出了回車(chē),程序結(jié)束。第118頁(yè),共1010頁(yè)。解決方案 #include int main() char c1, c2; c1 =getchar(); c2 =getchar(); putchar(c1); putchar(c2); return 0;方案一:原來(lái)的程序方案一運(yùn)行時(shí)ABAB第119頁(yè),共1010頁(yè)。解決方案int main() char c1, c2; c1 =getchar(); getchar(); c2 =getchar(); putchar(c1); putchar(c2) return 0;方案二:方案二運(yùn)行時(shí)ABAB第120頁(yè),共1010頁(yè)。目錄 | CONT
37、ENTS數(shù)據(jù)的輸入輸出02字符輸入輸出格式化輸出格式化輸入第121頁(yè),共1010頁(yè)。數(shù)據(jù)的輸入輸出格式化輸出將各種類(lèi)型的數(shù)據(jù)顯示在顯示器上。格式化輸出函數(shù) printf第122頁(yè),共1010頁(yè)。數(shù)據(jù)的輸入輸出printf函數(shù)用法printf(格式控制字符串,輸出列表); 例: 輸出各類(lèi)整型數(shù)的長(zhǎng)度printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);輸出結(jié)果:4 4 2printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);執(zhí)行過(guò)程:第123頁(yè),
38、共1010頁(yè)。格式控制字符格式控制字符功能說(shuō)明d, i以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào))o以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)X, x以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)。X表示以大寫(xiě)字母輸出十六進(jìn)制中a到z,x表示以小寫(xiě)字母輸出a到zu以無(wú)符號(hào)十進(jìn)制輸出整數(shù)c輸出一個(gè)字符數(shù)據(jù)的輸入輸出第124頁(yè),共1010頁(yè)。格式控制字符格式控制字符功能說(shuō)明s輸出字符串f以十進(jìn)制小數(shù)形式輸出實(shí)數(shù)E, e以科學(xué)計(jì)數(shù)法輸出實(shí)數(shù)。E表示科學(xué)計(jì)數(shù)法中的e用大寫(xiě)表示。e表示科學(xué)計(jì)數(shù)法中的e用小寫(xiě)表示。G, g選用%f和%e中輸出寬度較短的形式輸出。不輸出無(wú)意義的0s輸出字符串?dāng)?shù)據(jù)的輸入輸出第125頁(yè),共1010頁(yè)。例3.6
39、 編寫(xiě)一程序,以各種數(shù)制輸出十進(jìn)制數(shù)12380,以十進(jìn)制和科學(xué)計(jì)數(shù)法輸出123.45678126 #include int main() int iint = 12380; double ddouble = 123.4567891; printf(“12380的十進(jìn)制為:%d,八進(jìn)制為:%o,十六進(jìn)制為:%xn, iint, iint, iint); printf(123.4567891的十進(jìn)制為:%f, 科學(xué)計(jì)數(shù)法為:%en, ddouble, ddouble); return 0;輸出:12380的十進(jìn)制為:12380, 八進(jìn)制為:30134,十六進(jìn)制為:305c123.4567891的十
40、進(jìn)制為:123.456789, 科學(xué)計(jì)數(shù)法為:1.234568e+002第126頁(yè),共1010頁(yè)。附加的格式控制字符格式控制字符功能說(shuō)明l輸出長(zhǎng)整型,可加在d、o、x、u字符前面,形成ld、lo、lx、lum指定輸出數(shù)據(jù)的寬度,即在屏幕上占據(jù)的空間。.n指定實(shí)數(shù)輸出時(shí)的小數(shù)部分的位數(shù)-指定輸出寬度時(shí),輸出的數(shù)據(jù)向左對(duì)齊l用于輸出長(zhǎng)整型,可加在d、o、x、u字符前面,形成ld、lo、lx、lu數(shù)據(jù)的輸入輸出第127頁(yè),共1010頁(yè)。目錄 | CONTENTS數(shù)據(jù)的輸入輸出02字符輸入輸出格式化輸出格式化輸入第128頁(yè),共1010頁(yè)。格式化輸入數(shù)據(jù)的輸入輸出從鍵盤(pán)讀取各種類(lèi)型的數(shù)據(jù)。格式化輸入函數(shù)
41、輸入函數(shù):scanf scanf函數(shù)的用法scanf(格式控制字符串,地址列表);第129頁(yè),共1010頁(yè)。scanf函數(shù)數(shù)據(jù)的輸入輸出 例: 輸入一個(gè)整型數(shù)到整型變量iint scanf(“%d”, &iint);。執(zhí)行過(guò)程 printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);scanf(“%d : %d: %d”, &a, &b, &c);如果輸入: 5:7:3, 則a的值是5,b的值是7,c的值是3第130頁(yè),共1010頁(yè)。例3.7 利用格式化輸入輸出實(shí)現(xiàn)八進(jìn)制到十進(jìn)制和十六進(jìn)制的轉(zhuǎn)換。131 #include
42、 int main() int iint; printf(請(qǐng)輸入一個(gè)八進(jìn)制數(shù):); scanf(%o, &iint); printf(八進(jìn)制 %o 的十進(jìn)制為:%d, 十六進(jìn)制為:%xn”, iint, iint, iint); return 0;輸入數(shù)據(jù):輸出結(jié)果:十進(jìn)制:127十六進(jìn)制為:7F八進(jìn)制:177第131頁(yè),共1010頁(yè)。例3.8 以格式“HH:MM:SS”輸入時(shí)間,以“HH時(shí)MM分SS秒”的格式輸出132 #include int main() int hh, mm, ss; printf(“input time: HH:MM:SS:”); scanf(%d:%d:%d, &h
43、h, &mm, &ss); printf(“%d時(shí)%d分%d秒n”, hh, mm, ss); return 0;解決方案:利用格式控制字符串中的其他字符在輸入時(shí)必須原式原樣輸入。第132頁(yè),共1010頁(yè)。附加的格式控制字符格式控制字符功能說(shuō)明l用于輸入長(zhǎng)整型及double型數(shù)據(jù)。如 : %ld、%lo、%lx、%lu、%lf、%leh用于輸入短整型,如%hd、%ho、%hxN(常數(shù))指定輸入數(shù)據(jù)所占的寬度*指定的輸入項(xiàng)在讀入后不賦給對(duì)應(yīng)的變量數(shù)據(jù)的輸入輸出特別注意,double類(lèi)型的數(shù)據(jù)的輸入用%lf第133頁(yè),共1010頁(yè)。附加控制字符的應(yīng)用指定輸入寬度數(shù)據(jù)的輸入輸出運(yùn)行結(jié)果:123456
44、123#include int main() int int1; scanf(%3d, &int1); printf(%d n, int1); return 0;第134頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運(yùn)算03賦值運(yùn)算04信息表示05第135頁(yè),共1010頁(yè)。算術(shù)表達(dá)式算術(shù)運(yùn)算計(jì)算是計(jì)算機(jī)提供的最基本的功能,算術(shù)表達(dá)式是完成此功能的工具。算術(shù)表達(dá)式組成算術(shù)運(yùn)算符運(yùn)算對(duì)象第136頁(yè),共1010頁(yè)。算術(shù)表達(dá)式算術(shù)運(yùn)算算術(shù)運(yùn)算符:+ - * / %除“-”外,所有的算術(shù)運(yùn)算符都是二元運(yùn)算符?!?”可為二元運(yùn)算,也可為一元運(yùn)算。優(yōu)先級(jí):高 * / %,低
45、 + -結(jié)合性:左結(jié)合運(yùn)算對(duì)象可以是整型、浮點(diǎn)型、字符型第137頁(yè),共1010頁(yè)。例3.11 編寫(xiě)一程序,輸入兩個(gè)整型變量a和b的值,輸出a除b的商和余數(shù)。138 #include int main() int a, b; printf(請(qǐng)輸入2個(gè)整數(shù):); scanf(%d %d, &a, &b); printf(%d/%d的商是%d, 余數(shù)是%d n, a, b, a/b, a%b); return 0;第138頁(yè),共1010頁(yè)。應(yīng)用算術(shù)表達(dá)式的注意事項(xiàng)算術(shù)運(yùn)算乘號(hào)不能省略。出現(xiàn)除法時(shí)注意括號(hào)的應(yīng)用。如:在寫(xiě)算術(shù)表達(dá)式時(shí),為使表達(dá)式更加清晰,一般在運(yùn)算符前后各插一個(gè)空格。應(yīng)寫(xiě)為: ( a
46、+ b ) / (c * d ) 或 ( a + b) / c / d但不能寫(xiě)成: (a + b ) / c *d 或 a + b / c * d第139頁(yè),共1010頁(yè)。轉(zhuǎn)換規(guī)則char和short這些非標(biāo)準(zhǔn)的整數(shù)在運(yùn)算前都必須轉(zhuǎn)換為int。int和float運(yùn)算時(shí),將int轉(zhuǎn)換成float。int和long運(yùn)算時(shí),將int轉(zhuǎn)換成long。int和double運(yùn)算時(shí),將int轉(zhuǎn)換成double。float和double運(yùn)算時(shí),將float轉(zhuǎn)換成double各種類(lèi)型的數(shù)據(jù)的混合運(yùn)算算術(shù)運(yùn)算在進(jìn)行運(yùn)算前,將運(yùn)算數(shù)轉(zhuǎn)為同一類(lèi)型。第140頁(yè),共1010頁(yè)。檢驗(yàn)自動(dòng)類(lèi)型轉(zhuǎn)換算術(shù)運(yùn)算#include i
47、nt main() short sint = 5; int iint = 10; double ddouble = 12.3; printf(%d %d %d %d n, sizeof(sint+sint), sizeof(sint+iint), sizeof(iint+ddouble), sizeof(3.7+sint); return 0;輸出:4 4 8 8第141頁(yè),共1010頁(yè)。強(qiáng)制類(lèi)型轉(zhuǎn)換算術(shù)運(yùn)算賦值和算術(shù)運(yùn)算時(shí)會(huì)執(zhí)行自動(dòng)類(lèi)型轉(zhuǎn)換如:要想使4/5的結(jié)果是0.8,而不是0,該怎么辦?可以將其中一個(gè)寫(xiě)成浮點(diǎn)數(shù)。例如:4.0 / 5或4 / 5.0int x = 4, y = 5; 要想
48、使x/y的結(jié)果為0.8而不是0,該怎么辦?答案是:用強(qiáng)制類(lèi)型轉(zhuǎn)換第142頁(yè),共1010頁(yè)。強(qiáng)制類(lèi)型轉(zhuǎn)換算術(shù)運(yùn)算格式: (類(lèi)型名)(表達(dá)式) 或 類(lèi)型名 (表達(dá)式)例如,要想使兩個(gè)整型變量x和y出的結(jié)果為double型,可以用下列語(yǔ)句double z;z = (double)x / y; 考慮:如果寫(xiě)為 z = (double)(x / y)的結(jié)果如何?第143頁(yè),共1010頁(yè)。 #include int main()int x, y;printf(請(qǐng)輸入兩個(gè)整型數(shù):);scanf(%d%d, &x, &y);printf(%fn, (double)x/y - x/y);return 0;例3.
49、14 編寫(xiě)一個(gè)程序,輸出兩個(gè)整數(shù)相除后的小數(shù)部分。144 第144頁(yè),共1010頁(yè)。數(shù)學(xué)函數(shù)庫(kù)算術(shù)運(yùn)算在C語(yǔ)言中,其他的數(shù)學(xué)運(yùn)算都是通過(guò)函數(shù)的形式來(lái)實(shí)現(xiàn)。所有的數(shù)學(xué)函數(shù)都在math中。要使用這些數(shù)學(xué)函數(shù),必須在程序頭上寫(xiě)上編譯預(yù)處理命令: #include 第145頁(yè),共1010頁(yè)。math的主要內(nèi)容算術(shù)運(yùn)算絕對(duì)值函數(shù) int abs(int x) ; double fabs(double x)ex double exp(double x)xy double pow(double x, double y) double sqrt(double x) ln x double log(double
50、 x)log10 x double log10(double x)第146頁(yè),共1010頁(yè)。math的主要內(nèi)容算術(shù)運(yùn)算絕對(duì)值函數(shù) int abs(int x) ; double fabs(double x)三角函數(shù) double sin(double x) double cos(double x) double tan(double x)反三角函數(shù) double asin(double x) double acos(double x) double atan(double x)第147頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運(yùn)算03賦值運(yùn)算04信息表示0
51、5第148頁(yè),共1010頁(yè)。目錄 | CONTENTS賦值運(yùn)算04賦值表達(dá)式賦值的嵌套復(fù)合的賦值運(yùn)算自增、自減運(yùn)算第149頁(yè),共1010頁(yè)。變量賦值賦值運(yùn)算變量賦值是通過(guò)賦值表達(dá)式實(shí)現(xiàn),賦值表達(dá)式格式: = 作用:將右邊的表達(dá)式的值存入左邊的變量, 整個(gè)表達(dá)式的值是右邊的表達(dá)式的結(jié)果。注意:x = x + 2是正確的表達(dá)式,賦值運(yùn)算符是右結(jié)合的。左值(lvalue):在C語(yǔ)言中,能出現(xiàn)在賦值運(yùn)算符左邊的表達(dá)式稱(chēng)為左值。賦值語(yǔ)句:賦值表達(dá)式后面加上分號(hào)。第150頁(yè),共1010頁(yè)。賦值時(shí)的自動(dòng)類(lèi)型轉(zhuǎn)換 賦值運(yùn)算當(dāng)表達(dá)式的結(jié)果類(lèi)型和變量類(lèi)型不一致時(shí),系統(tǒng)會(huì)將右邊的表達(dá)式的結(jié)果轉(zhuǎn)換成左邊的變量的類(lèi)型,
52、再賦給左邊的變量。轉(zhuǎn)換規(guī)則:01OPTION02OPTION實(shí)型數(shù) - 整型:舍棄小數(shù)部分。 整型數(shù) - 實(shí)型數(shù):數(shù)值不變,但以浮點(diǎn)的形式保存在相應(yīng)的變量中 。double - float:截取前面七位有效數(shù)字存放到float變量中。03OPTION第151頁(yè),共1010頁(yè)。賦值時(shí)的自動(dòng)類(lèi)型轉(zhuǎn)換 賦值運(yùn)算float - double:將有效位擴(kuò)展到16位。字符型 - 整型變量:將字符型數(shù)據(jù)放入整型變量的最后一個(gè)字節(jié)。如果所用系統(tǒng)將字符處理成無(wú)符號(hào)量,則前面補(bǔ)0。如果所用系統(tǒng)將字符處理成有符號(hào)量,則擴(kuò)展符號(hào)。 整型 - 字符類(lèi)型:直接將整型數(shù)據(jù)的最低八位賦給字符變量。 04OPTION05OPT
53、ION06OPTION第152頁(yè),共1010頁(yè)。目錄 | CONTENTS賦值運(yùn)算04賦值表達(dá)式賦值的嵌套復(fù)合的賦值運(yùn)算自增、自減運(yùn)算第153頁(yè),共1010頁(yè)。賦值的嵌套賦值運(yùn)算將賦值表達(dá)式作為更大的表達(dá)式的一部分 。如:a = (x = 6) + (y = 7) 等價(jià)于分別將x 和 y 的值設(shè)為6 和 7,并將6和7相加,結(jié)果存于變量a 。賦值運(yùn)算符=的優(yōu)先級(jí)比算術(shù)運(yùn)算符低 。第154頁(yè),共1010頁(yè)。多重賦值賦值運(yùn)算a = b = c = 5 給a, b, c均賦值5 當(dāng)用到多重賦值時(shí),要保證所有的變量都是同類(lèi)型的,以避免在自動(dòng)類(lèi)型轉(zhuǎn)換時(shí)出現(xiàn)與預(yù)期不相符的結(jié)果的可能性。如變量d定義為dou
54、ble,變量i定義為int,語(yǔ)句:d = i = 1.5;結(jié)果:i等于1,d等于1.0 。 第155頁(yè),共1010頁(yè)。目錄 | CONTENTS賦值運(yùn)算04賦值表達(dá)式賦值的嵌套復(fù)合的賦值運(yùn)算自增、自減運(yùn)算第156頁(yè),共1010頁(yè)。復(fù)合賦值運(yùn)算賦值運(yùn)算其他運(yùn)算符與賦值運(yùn)算符結(jié)合的運(yùn)算符稱(chēng)為復(fù)合賦值運(yùn)算符 。常用:+=,-=,*=,/=,%= 如: balance += deposit; balance -= surcharge; x /= 10; salary *=2; 變量 op = 表達(dá)式; 等價(jià)于:變量 = 變量 op 表達(dá)式;第157頁(yè),共1010頁(yè)。目錄 | CONTENTS賦值運(yùn)算0
55、4賦值表達(dá)式賦值的嵌套復(fù)合的賦值運(yùn)算自增、自減運(yùn)算第158頁(yè),共1010頁(yè)。自增、自減運(yùn)算符賦值運(yùn)算自增、自減運(yùn)算符:+,- - 相當(dāng)于+=1和-=1, 它有前綴和后綴兩種用法:前綴:+k, - -k后綴:k+, k- -但含義有所不同。如:k=3 表達(dá)式K值J值j=k+K=4j=3j=+kK=4 j=4J=k-K=2j=3J=-k K=2j=2第159頁(yè),共1010頁(yè)。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運(yùn)算03賦值運(yùn)算04信息表示05第160頁(yè),共1010頁(yè)。目錄 | CONTENTS信息表示05數(shù)制間的轉(zhuǎn)換整數(shù)的表示實(shí)數(shù)的表示第161頁(yè),共1010頁(yè)。數(shù)制信息表
56、示 計(jì)算機(jī)內(nèi)部采用的是二進(jìn)制十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制基數(shù)102816數(shù)字符號(hào)0 - 90,10 - 70 9,A,B,C,D,E,F第162頁(yè),共1010頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示 十進(jìn)制整數(shù)轉(zhuǎn)換成非十進(jìn)制整數(shù)采用“除基取余法”,即將十進(jìn)制數(shù)逐次除以需轉(zhuǎn)換為的數(shù)制的基數(shù),直到商為0為止,然后將所得到的余數(shù)自下而上排列即可。第163頁(yè),共1010頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示 十進(jìn)制轉(zhuǎn)換成二進(jìn)制余數(shù)2551227121312612302110(55)10=(101111)2第164頁(yè),共1010頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示 十進(jìn)制轉(zhuǎn)換成八進(jìn)制余數(shù)85578660(55)10=(67)8第165頁(yè),共101
57、0頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示 十進(jìn)制轉(zhuǎn)換成十六進(jìn)制余數(shù)16 55716 630(55)10=(37)16第166頁(yè),共1010頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示 十進(jìn)制小數(shù)轉(zhuǎn)換成非十進(jìn)制小數(shù)采用“乘基取余法”,即將十進(jìn)制小數(shù)逐次乘以基數(shù),直到小數(shù)部分的當(dāng)前值等于0為止,然后將所得到的整數(shù)自上而下排列即可。第167頁(yè),共1010頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示 將十進(jìn)制小數(shù)0.625轉(zhuǎn)換為二進(jìn)制小數(shù)0.625整數(shù) 2 1.251 0.25 2 0.50 2 1.01換算結(jié)果(0.625)10=(0.101)2第168頁(yè),共1010頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示非十進(jìn)制轉(zhuǎn)換成十進(jìn)制采用“位權(quán)法”,即把各非十進(jìn)制數(shù)按權(quán)展開(kāi),
58、然后求和。(10101.101)2=1*24+0*23+1*22+0*21+1*20 +1*2-1+0*2-2+1*2-3如:把二進(jìn)制數(shù)0101.101轉(zhuǎn)換成十進(jìn)制數(shù)。第169頁(yè),共1010頁(yè)。數(shù)制間的轉(zhuǎn)換信息表示二進(jìn)制轉(zhuǎn)換成八進(jìn)制:按三位一組二進(jìn)制轉(zhuǎn)換十六進(jìn)制:按四位一組第170頁(yè),共1010頁(yè)。目錄 | CONTENTS信息表示05數(shù)制間的轉(zhuǎn)換整數(shù)的表示實(shí)數(shù)的表示第171頁(yè),共1010頁(yè)。整型數(shù)的表示碼制信息表示如何將符號(hào)位數(shù)字化。0表示正數(shù),1表示負(fù)數(shù)。數(shù)字的三種編碼方式為:原碼A補(bǔ)碼C)反碼B第172頁(yè),共1010頁(yè)。原碼信息表示用符號(hào)位和數(shù)值表示帶符號(hào)數(shù)。正數(shù)的符號(hào)位為0,負(fù)數(shù)的符號(hào)
59、位為1。存儲(chǔ)時(shí),最高位表示符號(hào),其他位是數(shù)組絕對(duì)值的二進(jìn)制表示。如用一個(gè)字節(jié)表示數(shù)值:62原=0 0111110-62原=1 0111110第173頁(yè),共1010頁(yè)。反碼信息表示正數(shù)的反碼與原碼相同,負(fù)數(shù)的反碼為該數(shù)的絕對(duì)值的原碼取反。如:62反=0 0111110-62反=1 1000001第174頁(yè),共1010頁(yè)。補(bǔ)碼信息表示正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼為該數(shù)的反碼加1。如:0的補(bǔ)碼表示是唯一的大多數(shù)計(jì)算機(jī)系統(tǒng)都用補(bǔ)碼表示整數(shù)。62補(bǔ)=0 0111110-62補(bǔ)=1 1000010 11111111+ 1 1 00000000 11000001+ 1 11000010第175頁(yè),共10
60、10頁(yè)。整數(shù)的內(nèi)部表示信息表示整數(shù)在計(jì)算機(jī)內(nèi)部通常用補(bǔ)碼表示,在VS2010中也是如此。整數(shù)運(yùn)算時(shí)要注意數(shù)據(jù)的表示范圍。如整數(shù)用兩個(gè)字節(jié)表示時(shí),正整數(shù) 32767 加 1 的結(jié)果為 -32768。這稱(chēng)為整數(shù)運(yùn)算的溢出,系統(tǒng)不檢查這樣的錯(cuò)誤,程序員必須自己保證程序中不出現(xiàn)這樣的錯(cuò)誤。第176頁(yè),共1010頁(yè)。#include int main()printf(-10的補(bǔ)碼是:%xn, -10);printf(10的補(bǔ)碼是:%xn, 10);printf(0的補(bǔ)碼是:%xn, 0);return 0;例3.20 編寫(xiě)一程序,驗(yàn)證C語(yǔ)言中的整數(shù)是用補(bǔ)碼表示177 程序的輸出是:-10的補(bǔ)碼是:fff
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆湖北省武漢為明學(xué)校高一生物第一學(xué)期期末監(jiān)測(cè)模擬試題含解析
- 河南省通許縣麗星高級(jí)中學(xué)2025屆數(shù)學(xué)高一上期末調(diào)研模擬試題含解析
- 遵義縣第一中學(xué)2025屆高一上數(shù)學(xué)期末綜合測(cè)試試題含解析
- 廣東省廣州市增城區(qū)四校聯(lián)考2025屆高二生物第一學(xué)期期末經(jīng)典試題含解析
- 安徽省黃山市徽州區(qū)第一中學(xué)2025屆生物高三第一學(xué)期期末經(jīng)典試題含解析
- 四川省成都市新津中學(xué)2025屆高二生物第一學(xué)期期末考試模擬試題含解析
- 2025屆山東省淄博第十中學(xué)高二上數(shù)學(xué)期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 福建閩侯第六中學(xué)2025屆高二上生物期末聯(lián)考模擬試題含解析
- 云南省昆明市嵩明一中2025屆高三數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含解析
- 2025屆云南省硯山縣第二中學(xué)數(shù)學(xué)高三第一學(xué)期期末聯(lián)考試題含解析
- 【道法】認(rèn)識(shí)生命 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 2023-2024學(xué)年北京市西城區(qū)三帆中學(xué)八年級(jí)(上)期中數(shù)學(xué)試卷【含解析】
- 10kV架空線(xiàn)路專(zhuān)項(xiàng)施工方案
- (正式版)JBT 9229-2024 剪叉式升降工作平臺(tái)
- 教育互聯(lián)網(wǎng)在教學(xué)設(shè)計(jì)中的應(yīng)用
- 江蘇開(kāi)放大學(xué) 社會(huì)主義的發(fā)展及其規(guī)律 正確把握科學(xué)社會(huì)主義基本原則
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 最全的時(shí)間軸模板(經(jīng)典實(shí)用)
- 辦公設(shè)備購(gòu)銷(xiāo)合同(1)——合同協(xié)議范本模版
- 某縣預(yù)防青少年群體犯罪服務(wù)管理實(shí)施方案
評(píng)論
0/150
提交評(píng)論