版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第1章
程序設計基礎網(wǎng)絡信息中心教研室大學計算機基礎網(wǎng)絡信息中心教研室2主要內(nèi)容1.1程序設計語言的發(fā)展1.2算法與程序設計1.3C語言簡介1.4C語言的結(jié)構(gòu)與執(zhí)行1.5C語言的運行與調(diào)試大學計算機基礎網(wǎng)絡信息中心教研室3教學目的和基本要求:要求學生了解程序語言及算法的概念,C語言特點,C程序開發(fā)過程,簡單C程序結(jié)構(gòu)。教學重點:算法的概念、C程序開發(fā)過程、簡單C程序結(jié)構(gòu)。大學計算機基礎網(wǎng)絡信息中心教研室41.1程序設計語言的發(fā)展機器語言:計算機可以直接識別、執(zhí)行的二進制代碼。其優(yōu)點是執(zhí)行速度快;但難寫、難讀、難理解和難修改。匯編語言:使用助記符來代替機器語言中復雜、繁瑣的指令的語言。如Z-80機中加法指令為ADD。其特點是過分依賴于機器碼,即僅適合某類相同或相似的計算機,因此不易移植。大學計算機基礎網(wǎng)絡信息中心教研室51.1程序設計語言的發(fā)展高級語言:獨立于計算機硬件結(jié)構(gòu),讓用戶使用面向問題的形式,更加方便編程人員的語言。高級語言分為如下兩類(1)編譯型:“先編譯后執(zhí)行”,過程為:源代碼->目標代碼->機器代碼,其執(zhí)行與源程序相互獨立。比如PASCAL,C等。(2)解釋型:“邊解釋邊運行”,程序執(zhí)行離不開源代碼的支持,不利于源程序的保護和保密。比如BASIC,F(xiàn)oxBASE+等。大學計算機基礎網(wǎng)絡信息中心教研室61.1程序設計語言的發(fā)展面向結(jié)構(gòu)(面向過程)的設計語言有:BASIC,F(xiàn)ORTRAN,COBOL:面向事務處理的高級語言,適合于編寫管理信息系統(tǒng)方面的程序有:PASCAL,C語言,PROLOG,F(xiàn)oxBASE+等面向?qū)ο蠛涂梢暬Z言:C++,Java,VisualBASIC,VisualC++,VisualFoxpro,VisualJ++,Delphi,PowerBuilder等。網(wǎng)頁(Web)/網(wǎng)絡(Network)編程語言:HTML,DHTML,JavaScript/Jscript,VBScript,JavaApplet,Java等。大學計算機基礎網(wǎng)絡信息中心教研室71.2算法與程序設計1算法及其表示
2結(jié)構(gòu)化程序設計與面向?qū)ο蟪绦蛟O計大學計算機基礎網(wǎng)絡信息中心教研室81.2.1、算法及其表示算法是計算機科學中的重要概念之一,它指明了問題的計算過程,是對給定問題解題方案的準確而完整的描述。計算機沒有軟件的支持將無法工作,軟件是計算機的靈魂,而軟件的核心是算法。用計算機解決問題的方法和步驟就是算法,計算機執(zhí)行算法,用計算機解決各種數(shù)據(jù)處理問題的主要方式就是尋找和設計各種算法,將算法變成代碼的過程即程序設計。
算法及其表示1大學計算機基礎網(wǎng)絡信息中心教研室91.2.1、算法及其表示算法具備如下5個特征:有窮性確定性輸入輸出可行性算法特征2大學計算機基礎網(wǎng)絡信息中心教研室101.2.1、算法及其表示算法可以用多種方法描述,常見的表示方法有:自然語言描述法、偽代碼表示法、傳統(tǒng)流程圖表示法、N-S流程圖表示法等?!纠?-1】已經(jīng)杯A中盛放的是油,杯B中盛放的是水,另有一個空杯C,三個杯容積相同,請用自然語言表示算法?!窘獯稹康?步:將A中的油全部倒入C中,使A成為空杯;第2步:將B中的水全部倒入A中,使B成為空杯;第3步:將C中原在A中的油,倒入B中,完成A與B中液體的交換。算法的表示3大學計算機基礎網(wǎng)絡信息中心教研室111.2.1、算法及其表示符號符號名稱含義起止框開始和結(jié)束輸入/輸出框輸入/輸出操作處理框內(nèi)容進行處理判斷框條件進行判斷流程線流程的方向連接點使流程圖清晰(1)使用傳統(tǒng)流程圖表示算法
大學計算機基礎網(wǎng)絡信息中心教研室12真給a和b賦值a<b?輸出a和b輸出a和b假操作A操作B【例1-1】用傳統(tǒng)流程圖表示對兩個數(shù)按從小到大的順序輸出的算法。【解答】傳統(tǒng)流程圖如圖1-1所示。大學計算機基礎網(wǎng)絡信息中心教研室131.2.1、算法及其表示在結(jié)構(gòu)化程序設計中,流程圖只包括3種基本結(jié)構(gòu):(1)順序結(jié)構(gòu)順序結(jié)構(gòu)是結(jié)構(gòu)化程序設計中最簡單的一種結(jié)構(gòu),這種結(jié)構(gòu)有一個入口和一個出口,中間的若干操作按照順序依次執(zhí)行,如圖1-2所示,先執(zhí)行操作A,然后執(zhí)行操作B。(2)選擇結(jié)構(gòu)選擇結(jié)構(gòu)與分支結(jié)構(gòu)屬同一結(jié)構(gòu),它由一個條件和兩組語句組成,計算機根據(jù)條件的真假來選擇執(zhí)行的分支,如果判斷成立則執(zhí)行操作A,否則執(zhí)行操作B。選擇結(jié)構(gòu)的流程圖如圖1-3所示。大學計算機基礎網(wǎng)絡信息中心教研室14真條件?操作A操作B假成立條件?循環(huán)體不成立圖1-3選擇結(jié)構(gòu)圖1-4“當型循環(huán)”結(jié)構(gòu)大學計算機基礎網(wǎng)絡信息中心教研室151.2.1、算法及其表示(3)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是指重復執(zhí)行同一組程序段的結(jié)構(gòu)。循環(huán)結(jié)構(gòu)由兩部分組成,其一是循環(huán)條件、其二是循環(huán)體。
被重復執(zhí)行的程序段稱為循環(huán)體。循環(huán)體能否繼續(xù)執(zhí)行由循環(huán)條件決定。根據(jù)循環(huán)條件出現(xiàn)的不同位置,循環(huán)結(jié)構(gòu)又分為“當型循環(huán)”和“直到型循環(huán)”兩類。大學計算機基礎網(wǎng)絡信息中心教研室161.2.1、算法及其表示
由于傳統(tǒng)流程圖存在不足,提出一種新的結(jié)構(gòu)化流程圖形式,這種形式的流程圖的主要特點是取消了流程線,不再顯示控制流,整個算法的流程寫在一個矩形框內(nèi),這種形式的流程圖稱為N-S流程圖。根據(jù)結(jié)構(gòu)化程序的三種基本結(jié)構(gòu),N-S流程圖有3種基本形式,其中循環(huán)結(jié)構(gòu)N-S流程圖又分為“當型循環(huán)”和“直到型循環(huán)”兩種。N-S流程圖表示的3種基本結(jié)構(gòu)如下所示:(2)使用N-S流程圖表示算法大學計算機基礎網(wǎng)絡信息中心教研室17操作A操作B是假條件執(zhí)行循環(huán)當條件滿足時執(zhí)行循環(huán)體直到條件滿足退出循環(huán)處理B處理A圖1-1順序結(jié)構(gòu)圖1-2選擇結(jié)構(gòu)圖1-3“當型循環(huán)”結(jié)構(gòu)圖1-4“直到型循環(huán)”結(jié)構(gòu)大學計算機基礎網(wǎng)絡信息中心教研室181.2.1、算法及其表示
偽代碼使用介于自然語言和計算機語言之間的文字和符號來描述算法。這種表示方式比較接近于計算機語言,如果結(jié)合相應的語法,即可以修改成為程序。【例1-3】使用偽代碼描述數(shù)據(jù)A與數(shù)據(jù)B進行交換的算法,要求不引入臨時數(shù)據(jù)?!窘獯稹渴褂脗未a描述如下:(1)A=A+B,將A與B相加賦值給A,則A為原數(shù)據(jù)A+B的和;(2)B=A-B,原兩數(shù)和減去B即A的值,現(xiàn)賦值給B;(3)A=A-B,原兩數(shù)和減去最近更新的B即A的新值(原數(shù)據(jù)B)(4)兩數(shù)A、B完成交換。由于偽代碼不能直接執(zhí)行,但表示算法方便,容易理解。
(3)使用偽代碼表示算法大學計算機基礎網(wǎng)絡信息中心教研室191.2.2、結(jié)構(gòu)化程序設計與面向?qū)ο蟮某绦蛟O計
目前,軟件開發(fā)行業(yè)中有兩種典型的程序設計方法,其一為結(jié)構(gòu)化程序設計方法,其二為面向?qū)ο蟮某绦蛟O計方法。(1)結(jié)構(gòu)化程序設計:它的主要觀點是采用自頂向下、逐步求精的程序設計方法,使用3種基本結(jié)構(gòu)構(gòu)造程序(順序、選擇、循環(huán))?!敖Y(jié)構(gòu)化程序設計”方法旨在提高程序的可讀性,保證軟件的質(zhì)量,降低軟件成本,提高軟件開發(fā)和維護的效率。
結(jié)構(gòu)化程序設計1大學計算機基礎網(wǎng)絡信息中心教研室201.2.2、結(jié)構(gòu)化程序設計與面向?qū)ο蟮某绦蛟O計
所謂面向?qū)ο蟮某绦蛟O計,就是把面向?qū)ο蟮乃枷霊玫杰浖こ讨?,并指導開發(fā)維護軟件。對象是由數(shù)據(jù)和容許的操作組成的封裝體,所謂面向?qū)ο螅褪腔趯ο蟮母拍?,以對象為中心,類和繼承為構(gòu)造機制,認識了解刻畫客觀世界以及開發(fā)出相應的軟件系統(tǒng)。“面向?qū)ο蟪绦蛟O計”就是通過數(shù)據(jù)抽象,將許多實例中共性的數(shù)據(jù)和為操作這些數(shù)據(jù)所需要的算法抽取出來,并進行封裝和數(shù)據(jù)隱藏,形成一個新的數(shù)據(jù)類型————“類”類型。面向?qū)ο蟮某绦蛟O計2大學計算機基礎網(wǎng)絡信息中心教研室211.3C語言簡介1C語言的產(chǎn)生與發(fā)展
2C語言的特點與應用領域大學計算機基礎網(wǎng)絡信息中心教研室221.3.1、C語言的產(chǎn)生與發(fā)展C語言是在70年代初問世,是目前國際上廣泛流行的一種結(jié)構(gòu)化的程序設計語言。當初的C語言是為開發(fā)UNIX操作系統(tǒng)而研制的,1983年美國國家標準學會(ANSI)將C語言標準化,隨后C語言的廣泛應用又不斷推出新的C語言版本,其性能也越來越強。也從面向過程的編程語言發(fā)展到面向?qū)ο蟮某绦蛟O計語言。目前可在微機上運行的C語言版本主要有TurboC,QuickC,VisualC++等版本。C語言的產(chǎn)生與發(fā)展1大學計算機基礎網(wǎng)絡信息中心教研室231.3.2、C語言的特點與應用領域
C語言的主要特點有:(1)語言簡潔,緊湊,使用方便,靈活。(2)運算符豐富。(3)數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結(jié)構(gòu)。(4)具有現(xiàn)代化的控制語句。(5)語法限制不太嚴格,程序設計自由度大。(6)C語言能進行“位”(bit)操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作。(7)生成目標代碼質(zhì)量高,程序執(zhí)行效率高。(8)程序可移植性好。(9)繪圖能力強,可完成圖形圖像相關的程序設計。C語言的特點與應用領域
1大學計算機基礎網(wǎng)絡信息中心教研室241.4C語言的結(jié)構(gòu)與執(zhí)行1C語言源程序的結(jié)構(gòu)特點
2高級語言程序的執(zhí)行過程3程序設計的開發(fā)期與開發(fā)習慣大學計算機基礎網(wǎng)絡信息中心教研室251.4.1、C語言源程序的結(jié)構(gòu)特點C語言程序的一般形式如下:編譯預處理部分全局變量定義main()/*主函數(shù)*/{ 全局定義序列語句序列}func1()/*自定義函數(shù)func1*/{ ……}
C語言源程序的結(jié)構(gòu)1大學計算機基礎網(wǎng)絡信息中心教研室261.4C語言的結(jié)構(gòu)與執(zhí)行(1)一個C語言源程序可以由一個或多個源文件組成。(2)每個源文件可由一個或多個函數(shù)組成。(3)一個源程序不論由多少個文件組成,都有一個且只能有一個main()函數(shù),即主函數(shù)。(4)源程序中可以有預處理命令。(5)每一個聲明,每一條語句都必須以分號結(jié)尾。但預處理命令,函數(shù)頭和花括號“}”之后不能加分號。(6)標識符,關鍵字之間必須至少加一個空格以示間隔。(7)可以用/*……*/對C語言程序中的任何部分進行注釋。注釋有利于增加程序的可讀性和可維護性。特點1大學計算機基礎網(wǎng)絡信息中心教研室271.4.2、高級語言程序的執(zhí)行過程高級語言程序的執(zhí)行過程高級語言與具體計算機無關,是一種能方便描述算法過程的計算機程序設計語言。用高級語言編寫的程序稱為“源程序”。計算機不能直接執(zhí)行,通常有“解釋”和“編譯”兩種方法處理源程序?!敖忉尅狈绞?,即讓計算機運行解釋程序,解釋程序逐句取出源程序中的語句,對它作解釋執(zhí)行,輸入數(shù)據(jù),產(chǎn)生結(jié)果。優(yōu)點是計算機與人的交互性好;缺點是逐句解釋執(zhí)行,運行速度慢?!熬幾g”方式,即先運行編譯程序,從源程序一次性翻譯產(chǎn)生計算機可直接執(zhí)行的二進制程序(稱為目標程序);然后讓計算機將目標程序結(jié)合具體的計算機硬件產(chǎn)生相應的“可執(zhí)行”程序,產(chǎn)生結(jié)果。優(yōu)點是運行目標程序快,缺點是修改源程序后必須重新編譯以產(chǎn)生新的目標程序。大學計算機基礎網(wǎng)絡信息中心教研室281.4.3、程序設計的開發(fā)期與開發(fā)習慣
第1階段,分析問題,確定問題的需求。第2階段,分析問題,建立數(shù)學模型。第3階段,選擇計算方法。第4階段,設計算法,繪制流程圖。第5階段,代碼編寫。第6階段,調(diào)試程序。第7階段,整理資料和交付使用。
開發(fā)期與開發(fā)習慣1大學計算機基礎網(wǎng)絡信息中心教研室291.4C語言的結(jié)構(gòu)與執(zhí)行(1)程序所采用的算法要盡量簡單,符合人一般的思維方式。(2)標識符的命名盡量采取“見名知義,常用從簡”的原則。(3)采用“縮進”的方式書寫程序。低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫。(4)程序中可用/*……*/或//注釋,以提高程序的可讀性。(5)在輸入數(shù)據(jù)前要有提醒用戶輸入什么樣的數(shù)據(jù)。(6)編譯預處理部分的語句,不能加分號。(7)每一行寫一條語言。(8)用{}號括起來的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個字母對齊,并單獨占一行。在書寫程序時應遵循以下規(guī)則:2大學計算機基礎網(wǎng)絡信息中心教研室301.5C語言的運行與調(diào)試1C程序的執(zhí)行過程
2C程序開發(fā)的實驗方法3VC++6.0編寫程序與調(diào)試程序大學計算機基礎網(wǎng)絡信息中心教研室311.5.1、C程序的執(zhí)行過程C程序的執(zhí)行過程:
C源程序的擴展名為*.c,經(jīng)過編譯程序處理后的源程序生成目標程序(*.obj),目標程序經(jīng)過連接程序處理,生成可執(zhí)行程序(*.exe),可執(zhí)行程序能夠直接運行。標準C程序的執(zhí)行是從main()函數(shù)開始執(zhí)行,如果main()函數(shù)中調(diào)用了其它函數(shù),其它函數(shù)調(diào)用結(jié)束后,返回主函數(shù)繼續(xù)執(zhí)行。
大學計算機基礎網(wǎng)絡信息中心教研室321.5.2C程序開發(fā)的實驗方法C程序開發(fā)的實驗方法如下:下面分別介紹在VisualC++6.0集成開發(fā)環(huán)境下運行C語言程序的一般方法。第1步,安裝MicrosoftVisualC++6.0;第2步,建議工作區(qū);第3步,打開工作區(qū),并在該工作區(qū)下建立工程;第4步,編寫源程序;第5步,編譯源程序;第6步,組建源程序;第7步,調(diào)試和執(zhí)行源程序。大學計算機基礎網(wǎng)絡信息中心教研室331.5.3VisualC++6.0編寫程序
與調(diào)試程序的方法VisualC++6.0編寫程序與調(diào)試程序的方法:第1步,啟動VisualC++6.0第2步,建立項目(Project工程)工作區(qū)第3步,建立工程文件第4步,建立、編輯、編譯、運行C源程序文件大學計算機基礎網(wǎng)絡信息中心教研室341.5C語言的運行與調(diào)試
運行與調(diào)試整個過程如下圖所示。編輯程序編譯程序連接程序源程序目標程序可執(zhí)行程序輸出結(jié)果編輯.c編譯.obj連接.exe運行
圖1-10源程序的變化過程編輯程序編譯程序連接程序源程序目標程序可執(zhí)行程序輸出結(jié)果編輯.c編譯.obj連接.exe運行大學計算機基礎網(wǎng)絡信息中心教研室35本章內(nèi)容結(jié)束!網(wǎng)絡信息中心教研室
第2章
數(shù)據(jù)類型、運算符與表達式主要內(nèi)容大學計算機基礎網(wǎng)絡信息中心教研室372.2標識符
2.3常量
2.4變量
2.5數(shù)據(jù)間的混合運算
2.6變量賦初值
2.1C語言的數(shù)據(jù)類型
2.7運算符和表達式
大學計算機基礎網(wǎng)絡信息中心教研室381.5C語言的運行與調(diào)試1C語言的數(shù)據(jù)類型
2基本數(shù)據(jù)類型在兩種環(huán)境下的表示2.1C語言的數(shù)據(jù)類型一個程序應包含兩個方面,即數(shù)據(jù)結(jié)構(gòu)和算法:(1)為了方便對程序中的數(shù)據(jù)進行存儲和運算,每個數(shù)據(jù)都要有指定的數(shù)據(jù)類型和組織形式,叫做數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)類型是按被定義變量的性質(zhì)、表示形式、占據(jù)存儲空間及構(gòu)造特點進行劃分,不同類型數(shù)據(jù)的數(shù)據(jù)表示形式、取值范圍、占用內(nèi)存空間的大小及可參與的運算種類也不同;(2)算法是指對操作的描述,一般會給出解決問題的操作步驟。大學計算機基礎網(wǎng)絡信息中心教研室392.1.1基本數(shù)據(jù)類型簡介基本數(shù)據(jù)類型
C語言中,數(shù)據(jù)類型可分為:基本類型、構(gòu)造類型、指針類型和空類型4大類,如下圖2-1所示。大學計算機基礎網(wǎng)絡信息中心教研室40空類型
構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型整型基本類型字符型實型(浮點型)枚舉類型單精度型雙精度型指針類型數(shù)據(jù)類型2.2標識符標識符
除了常量的直接使用方式以外,其它方式均要求這些數(shù)據(jù)有一個名字與之匹配,這個名字就是標識符。C語言中,變量名、符號常量、函數(shù)名、數(shù)組名、類型名、文件名等字符序列稱為標識符。可用于標識符的字符集C語言規(guī)定標識符只能由字母、數(shù)字和下畫線3種字符組成,且第1個字符不允許為數(shù)字.大學計算機基礎網(wǎng)絡信息中心教研室41大學計算機基礎網(wǎng)絡信息中心教研室422.2標識符1可用于標識符的字符集
1可用于標識符的字符集
2標識符的分類2.2.1C語言的字符集C語言的字符集分以下幾類。英文大寫或小寫字母:A~Z,a~z;數(shù)字:1、2、3、……、9特殊符號:+、-、*、/、%、=、_、!、(、)、#、$、^、&、[、]、\、’、”、{、}、|、.、>、<、?、等;轉(zhuǎn)義字符:\n、\t、\v、\b、\r、\f、\0、\’、\”、\\、\ddd、\xhh等。大學計算機基礎網(wǎng)絡信息中心教研室432.2.2標識符的分類標識符可分如下幾類:關鍵字亦稱保留字,關鍵字在C語言中有特定的含義,用戶在使用自定義的常量名、變量名、函數(shù)名、類型名、文件名時,要絕對避免使用關鍵字,C語言中的保留字32個,保留字用小寫字母表示,大寫的可以由用戶自由使用,盡量不用,以免與系統(tǒng)保留字混淆.大學計算機基礎網(wǎng)絡信息中心教研室44關鍵字12.2標識符描述數(shù)據(jù)類型定義的有:typedef、void;描述存儲類型的有:auto、extern、register、static、volatile;描述數(shù)據(jù)類型的有:char、int、float、double、long、short、signed、struct、union、unsigned、const、enum;描述語句:break、case、continue、default、if、else、switch、for、do、while、return、sizeof、goto。大學計算機基礎網(wǎng)絡信息中心教研室452.2標識符預定義標識符包括C語言中提供的一些庫函數(shù)的名字(如printf,scanf,getchar,putchar等)和編譯預處理命令(defineinclude等),建議用戶在自定義常、變量時,也要避免與這些標識符沖突。
用戶在程序設計過程中,會經(jīng)常用到常量、變量、自定義函數(shù)、文件名、類型名等,這些要用戶定義。大學計算機基礎網(wǎng)絡信息中心教研室46預定義標識符2用戶定義標識符32.2標識符下面給出一些合法的標識符:sum,average,_total,temp,a_1,char1,Max,min下面這些是不合法的標識符:1a,$total,a<1>,a.next在使用標識符的時候盡量采取“見名識義、常用從簡”的原則,保證變量具有可讀性,又不要讓變量名過長。大學計算機基礎網(wǎng)絡信息中心教研室472.3常量常量
程序執(zhí)行過程中,其值不能被改變的量稱為常量,C語言中出現(xiàn)的常量有如下類型:整型常量、實型常量、字符常量、字符串常量等。大學計算機基礎網(wǎng)絡信息中心教研室48大學計算機基礎網(wǎng)絡信息中心教研室492.3常量1整型常量
2實型常量
3字符常量
4字符串常量
5符號常量與預處理簡介
2.3.1整型常量2.3.1整型常量整型常量在C語言中又分:十進制整數(shù)
八進制整數(shù)
十六進制整數(shù)
十進制整數(shù)以人們通常習慣的十進制整數(shù)形式給出.八進制整數(shù)必須以0開頭,其數(shù)碼取值范圍為0~7.以下是合法的八進制數(shù):012(對應十進制整數(shù)10),-012(對應十進制數(shù)-10),0177777(對應十進制數(shù)65535),0177777(對應十進制數(shù)-65535)。大學計算機基礎網(wǎng)絡信息中心教研室50十進制整數(shù)1八進制整數(shù)22.3常量以下是不合法的八進制整數(shù):255(無前綴0),03A2(包含非法數(shù)碼)【例2-1】輸出八進制數(shù)。#include<stdio.h>/*在visualC++6.0下調(diào)試通過*/main(){intx,y; x=012; y=-0177777;
printf("x=%d,y=%d\n",x,y);}大學計算機基礎網(wǎng)絡信息中心教研室512.3常量
十六進制整數(shù)的前綴為0x或0X,其數(shù)碼取值范圍為0~9,A~F,a~f。
以下是合法的十六進制整數(shù):0X12(十進制數(shù)18),-0x12(十進制數(shù)-18),0XA1,,0Xffff(十進制數(shù)為65535)以下各數(shù)不是合法的十六進制整數(shù):6B(無前綴0x),0x5H(含有非法數(shù)碼H)在整型數(shù)據(jù)的后邊加上后綴“L”或“l(fā)”(小寫字母l)來表示的該數(shù)據(jù)是一個長整型的數(shù)據(jù)。例如:大學計算機基礎網(wǎng)絡信息中心教研室52589L十進制012L八進制0X17L十六進制
十六進制整數(shù)32.3.2實型常量實型常量也稱為浮點型。有兩種形式:十進制小數(shù)形式和指數(shù)形式。十進制小數(shù)形式:由數(shù)碼0~9和小數(shù)點組成。如下均為合法的實數(shù):
0.12,1.23,-2.5145,125.0指數(shù)形式:,由十進制數(shù),加上階碼標志“e”或“E”及階碼(只能為整數(shù),可以帶符號)組成。大學計算機基礎網(wǎng)絡信息中心教研室53如:指數(shù)值1.2E6等于1.2×1065.21E-2等于5.21×10-20.91E8等于0.91×108-1.8E-9等于-1.8×10-92.3.3字符常量字符常量是用西文半角單引號括起來的一個字符。在C語言中,字符常量有以下特點:(1)字符常量只能用單引號“’”括起來,不能用雙引號或括號。(2)字符常量只能是單個字符,不能是字符串。(3)字符可以是字符集中任意字符,但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。大學計算機基礎網(wǎng)絡信息中心教研室542.3.3字符常量除了以上形式的字符常量外,C語言還允許使用一種特殊形式的字符常量,即轉(zhuǎn)義字符,它以一個反斜線“\”開頭,后跟一個或幾個字符的字符序列。轉(zhuǎn)義字符
轉(zhuǎn)義字符的意義
ASCII代碼
\n換行10\t水平制表9\b退格8\r回車13\f換頁12\\反斜線符92\’單引號符39\”雙引號符34\ddd1~3位八進制數(shù)\xhh1~2位十六進制數(shù)大學計算機基礎網(wǎng)絡信息中心教研室552.3.3字符常量【例2-2】輸出轉(zhuǎn)義字符?!境绦蚍治雠c解答】#include<stdio.h>/*visualC++6.0*/main(){ printf("abc\tde\rf\tg\n"); printf("1234567812345678\n");/*參照物*/ printf("h\ti\b\bjk"); printf("1234567812345678\n");/*參照物*/}大學計算機基礎網(wǎng)絡信息中心教研室56輸出結(jié)果為:fgde1234567812345678hjk1234567812345678Pressanykeytocontinue2.3.4字符串常量字符串常量是由一對雙引號括起的字符序列。例如,“211Project”,“Chinese”,“college”等都是合法的字符串常量。字符串常量和字符常量的數(shù)據(jù)結(jié)構(gòu)不同,其主要區(qū)別如下:(1)字符常量由單引號括起來,字符串常量由雙引號括起來;(2)字符常量只能是單個字符,字符串常量含一個或多個字符。
大學計算機基礎網(wǎng)絡信息中心教研室572.3.4字符串常量‘C’在內(nèi)存中占一個字節(jié),表示為:“C”在內(nèi)存中占兩個字節(jié),表示為:可以把一個字符常量賦予一個字符變量,但是不能把一個字符串常量賦予一個字符量。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串半角字符數(shù)加1,因為在增加的一個字節(jié)中存放字符“\0”(ASCII碼值為0),這是字符串結(jié)束的標志。CC\0大學計算機基礎網(wǎng)絡信息中心教研室582.3.5符號常量與預處理在C語言中,可以用一個標識符來表示一個常量,稱為符號常量。符號常量在使用之前必須先定義,其一般形式為:#define標識符常量其中,#include也是一條預處理命令(預處理命令都以“#”開頭),稱為宏定義命令,其功能是把該標識符定義為常量。一經(jīng)定義,以后程序中所有的標識符都代表該常量,如果要修改這個常量,可以實現(xiàn)整個程序中“一改全改”。經(jīng)常將符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。大學計算機基礎網(wǎng)絡信息中心教研室59大學計算機基礎網(wǎng)絡信息中心教研室602.4變量1整型變量
2實型變量
3字符變量
2.4變量變量是指在程序執(zhí)行過程中可以被改變和賦值的量。程序中每一個變量有一個符合C語言標識符規(guī)范的名稱,在內(nèi)存中占據(jù)一定的存儲單元。變量的使用方法是先聲明(定義變量),后使用。變量名與變量值是有區(qū)別的,變量的“名”是指變量所代表的存儲單元的標志,而“值”是指存儲單元的內(nèi)容.例:大學計算機基礎網(wǎng)絡信息中心教研室61A____變量——變量值32.4.1整型變量
如:shortintx;/*變量的聲明,定義整型變量*/ x=10;/*變量賦值*/0000000000001010變量x在內(nèi)存中的地址是0x0013ff70數(shù)據(jù)在內(nèi)存中的二進制存儲示意圖
(1)基本型:類型說明符為int,在內(nèi)存中占4個字節(jié)。(2)短整型:類型說明符為shortint或short,占2個字節(jié)。(3)長整型:類型說明符為longint或long,4個字節(jié)。(4)無符號型:類型說明符為unsigned,。無符號型又可與上述三種類型匹配而構(gòu)成,不能表示負數(shù):
大學計算機基礎網(wǎng)絡信息中心教研室62整型數(shù)據(jù)在內(nèi)存中的存儲形式
1整型變量的分類22.4.1整型變量【例2-3】測試當前C編譯環(huán)境下數(shù)據(jù)類型占用的字節(jié)數(shù)?!境绦蚍治雠c解答】#include<stdio.h>main(){printf(“int占%d字節(jié)。\n”,sizeof(int));printf(“l(fā)ongint占%d字節(jié)。\n”,sizeof(longint));printf(“shortint占%d字節(jié)。\n”,sizeof(shortint));printf(“unsignedint占%d字節(jié)。\n”,sizeof(unsignedint));printf(“unsignedlongint占%d字節(jié)。\n”,sizeof(unsignedlongint));printf(“unsignedshortint占%d字節(jié)。\n”,sizeof(unsignedshortint));}大學計算機基礎網(wǎng)絡信息中心教研室63輸出結(jié)果為:int占4字節(jié)。longint占4字節(jié)。shortint占2字節(jié)。unsignedint占4字節(jié)。unsignedlongint占4字節(jié)。unsignedshortint占2字節(jié)。2.4.1整型變量變量定義的一般形式為:類型說明符變量名標識符1,變量名標識符2,……; 例如:
intx,y,z; /*x,y,z為整型變量*/ longintn,m; /*n,m為長整型變量,longint可簡寫為long*/ unsignedinta,b; /*a,b為無符號整型變量,unsignedint可簡寫為unsigned*/大學計算機基礎網(wǎng)絡信息中心教研室64注意:(1)允許在一次定義相同類型的多個變量(2)最后一個變量名之后必須以分號結(jié)尾。整型變量的定義32.4.2實型變量
實型數(shù)據(jù)一般占用4個字節(jié)(32位)的內(nèi)存空間,按指數(shù)形式存儲。例如,實數(shù)12.345在內(nèi)存中的存儲形式如圖2-4所示:
圖2-4實型數(shù)據(jù)的表示+/-,用0,1表示(數(shù)符)0.12345+/-,用0,1表示(階符)2大學計算機基礎網(wǎng)絡信息中心教研室65實型數(shù)據(jù)在內(nèi)存中的存放形式12.4.2實型變量
實型變量分為單精度(float型),長單精度型(longfloat),雙精度(double型)和長雙精度(longdouble型)4類,其中float型占用4個字節(jié),其它數(shù)據(jù)類型均占用8個字節(jié)。
由于實型變量由有限的存儲單元組成,因此能提供的數(shù)字是有限的,而在有效位以外的數(shù)字將被舍去。這樣可能會產(chǎn)生一些誤差,例如,a+20的顯然就應該比a大。請分析下面的程序。大學計算機基礎網(wǎng)絡信息中心教研室66實型變量數(shù)據(jù)的分類
2實型數(shù)據(jù)的舍入誤差32.4.2實型變量【例2-4】實型數(shù)據(jù)的舍入誤差。【程序分析與解答】#include<stdio.h>main(){floata,b;a=123456.789e5;/*12345678900*/b=a+20;printf("%f\n",b);}大學計算機基礎網(wǎng)絡信息中心教研室67輸出結(jié)果為:12345678868.0000002.4.3字符變量字符變量用來存儲字符常量,其說明符是char.字符變量的賦值有如下方式:(1)若ch_a是一個字符變量,ch=ch_a;(2)將字符常量'a'賦值給ch,ch='a';(3)將某個字符的ASCII碼賦給ch,ch=65,則ch的內(nèi)容為‘A’,但由于整型變量在存儲上均超過1個字節(jié),如果將一個整型變量賦值給一個字符變量時,只會將其最低8個位賦值給ch。
而ch="A"則是錯誤的.
大學計算機基礎網(wǎng)絡信息中心教研室68如下字符變量的輸出形式:printf("%c",ch);(2)printf("%d",ch);(3)putchar(ch);
大學計算機基礎網(wǎng)絡信息中心教研室692.5數(shù)據(jù)間的混合運算1各數(shù)據(jù)類型轉(zhuǎn)換規(guī)則
2自動類型轉(zhuǎn)換與強制轉(zhuǎn)換
2.5.1各數(shù)據(jù)類型轉(zhuǎn)換規(guī)則不同數(shù)據(jù)類型轉(zhuǎn)換規(guī)則
整型、單精度型、雙精度型數(shù)據(jù)可以混合運算。字符型數(shù)據(jù)可以與整型通用,因此,整型、實型(包括單、雙精度)、字符型數(shù)據(jù)間可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換的規(guī)則按圖所示
大學計算機基礎網(wǎng)絡信息中心教研室70double←float↑long
↑unsigned↑int←char,short2.5.2自動類型轉(zhuǎn)換與強制轉(zhuǎn)換變量的數(shù)據(jù)類型的轉(zhuǎn)換方法有兩種,一種是自動轉(zhuǎn)換,一種是強制轉(zhuǎn)換。自動轉(zhuǎn)換遵循以下規(guī)則:若參與運算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換按照數(shù)據(jù)長度增加的方向進行,以保證運算精度不降低。所有的浮點運算都是以雙精度進行的。char型和short型運算時,必須先轉(zhuǎn)換成int型。賦值運算中,賦值號兩邊的數(shù)據(jù)類型不同時,賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。大學計算機基礎網(wǎng)絡信息中心教研室71自動類型轉(zhuǎn)換12.5數(shù)據(jù)間的混合運算其一般形式為:
(類型說明符)(表達式)例如:(float)a/*把a轉(zhuǎn)換為實型*/(int)(x+y)/*把x+y的結(jié)果轉(zhuǎn)換為整型*/無論是強制轉(zhuǎn)換或是自動轉(zhuǎn)換,都只是為了本次運算的需要而對變量的數(shù)據(jù)長度進行的臨時性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時對該變量定義的類型。大學計算機基礎網(wǎng)絡信息中心教研室72強制轉(zhuǎn)換
22.5.2自動類型轉(zhuǎn)換與強制轉(zhuǎn)換【例2-5】數(shù)據(jù)類型的強制轉(zhuǎn)換?!境绦蚍治雠c解答】#include<stdio.h>main(){floatf=5.75;printf("(int)f=%d,f=%f\n",(int)f,f);}大學計算機基礎網(wǎng)絡信息中心教研室73輸出結(jié)果為:(int)f=5,f=5.7500002.6變量賦初值變量預先設置初值可以有如下幾種情況:
(1)對各變量分別賦初值inta=3;
floatpi=3.14159;
charch='a';
(2)定義變量時對部分變量賦值inta,b,c=5;(3)對幾個變量賦相同的初值如:若對幾個變量賦予初值3,應寫成inta=3,b=3,c=3;大學計算機基礎網(wǎng)絡信息中心教研室742.6變量賦初值強制類型轉(zhuǎn)換運算符()
自增、自減運算符如:++i,--i(在變量i使用之前,先使i的值加(減)1)i++,i--(在變量i使用之后,使i的值加(減)1)使用自增、自減運算符需要注意的若干問題:++或--運算符,只能用于變量,而不能用于常量或表達式。++和--的結(jié)合方向是“自右至左”。大學計算機基礎網(wǎng)絡信息中心教研室75大學計算機基礎網(wǎng)絡信息中心教研室762.7運算符和表達式1C語言運算符簡介與表達式的類型
2表達式的求值規(guī)則
3算術(shù)運算符和算術(shù)表達式
4賦值運算符和賦值表達式
5逗號運算符和逗號表達式
6關系運算符和關系表達式
7邏輯運算符和邏輯表達式
2.7.1C語言運算符與表達式的類型C的運算符有以下幾類:(1)算術(shù)運算符:+
-
*
/
%(2)關系運算符:>
<
==
>=
<=!=(3)邏輯運算符:!
&&
||(4)位運算符:<<
>>
~
|
∧
&(5)賦值運算符:=(6)條件運算符:?
:(7)逗號運算符:,C語言表達式的類型賦值表達式;算術(shù)表達式;關系表達式;邏輯表達式;條件表達式;逗號表達式大學計算機基礎網(wǎng)絡信息中心教研室772.7.2表達式的求值規(guī)則這些運算符在C語言中規(guī)定了優(yōu)先級和結(jié)合性,在求值時先按運算符的優(yōu)先級別高低次序執(zhí)行,如果某個運算對象左右兩側(cè)的運算符的優(yōu)先級別相同,則按規(guī)定的“結(jié)合方向”處理,其中算術(shù)運算符的結(jié)合方向為“自左至右”,而對于賦值運算符則采用“自右至左”的結(jié)合方向。有關運算符的優(yōu)先級別和結(jié)合性參看附錄。大學計算機基礎網(wǎng)絡信息中心教研室782.7.3算術(shù)運算符和算術(shù)表達式(1)+(加法運算符,或正值運算符。如3+5、+3)(2)-(減法運算符,或負值運算符。如5-2、-3)(3)*(乘法運算符。如3*5)(4)/(除法運算符。如5/3,5.0/3)(5)%(模運算符,又稱求余運算符,%兩側(cè)均應為整型數(shù)據(jù),如7%4的值為3)。大學計算機基礎網(wǎng)絡信息中心教研室79基本的算術(shù)運算符12.7.3算術(shù)運算符和算術(shù)表達式(8)指針運算符:*&(9)求字節(jié)數(shù)運算符:sizeof(10)強制類型轉(zhuǎn)換運算符:(類型)(11)分量運算符:.
->(12)下標運算符:[](13)其他:如函數(shù)調(diào)用運算符()大學計算機基礎網(wǎng)絡信息中心教研室802.7.3算術(shù)運算符和算術(shù)表達式++i,--i(在變量i使用之前,先使i的值加(減)1)i++,i--(在變量i使用之后,使i的值加(減)1)使用自增、自減運算符需要注意的若干問題:(1)++或--運算符,只能用于變量,而不能用于常量或表達式。(2)++和--的結(jié)合方向是“自右至左”。
大學計算機基礎網(wǎng)絡信息中心教研室81算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性2強制類型轉(zhuǎn)換運算符()3自增、自減運算符42.7.4賦值運算符和賦值表達式賦值符號“=”就是賦值運算符使用“=”連接的式子稱為賦值表達式,其一般形式為:變量=常量、變量或表達式賦值運算符具有右結(jié)合性。如:
a=b=c=3大學計算機基礎網(wǎng)絡信息中心教研室82賦值運算符和賦值表達式12.7.4賦值運算符和賦值表達式(1)將實型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,舍棄實數(shù)的小數(shù)部分。(2)將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。(3)將一個double型數(shù)據(jù)賦給float變量時,截取其前面7位有效數(shù)字,(4)將一個float型數(shù)據(jù)賦給double變量時,數(shù)值不變,有效位數(shù)擴展到16位。(5)字符型數(shù)據(jù)賦給整型變量時,將字符數(shù)據(jù)(8位)放到整型變量低8位中。大學計算機基礎網(wǎng)絡信息中心教研室83類型轉(zhuǎn)換
22.7運算符和表達式在賦值符“=”之前加上其他運算符可以構(gòu)成復合的運算符。如,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。如:a+=2/*等價于a=a+2*/x*=y+8/*等價于x=x*(y+8)*/由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。它的一般形式為:變量賦值運算符表達式大學計算機基礎網(wǎng)絡信息中心教研室84復合的賦值運算符3賦值表達式42.7.5逗號運算符和逗號表達式逗號運算符是一種特殊的運算,用以連接兩個表達式,又稱為“順序求值運算符”。逗號表達式的一般形式為:表達式1,表達式2,……,表達式n
例如x=2*5,x*3,此時整個逗號表達式的值為30。注:賦值運算符的優(yōu)先級別高于逗號運算符大學計算機基礎網(wǎng)絡信息中心教研室852.7.6關系運算符和關系表達式1.關系運算符在C語言中有以下關系運算符:(1)<小于(2)<=小于或等于(3)>大于(4)>=大于或等于(5)==等于(6)!=不等于2.關系表達式關系表達式的一般形式為:表達式1關系運算符表達式2大學計算機基礎網(wǎng)絡信息中心教研室862.7.7邏輯運算符和邏輯表達式邏輯運算符及其優(yōu)先級C語言中提供了三種邏輯運算符:(1)&&與運算(2)||或運算(3)!非運算大學計算機基礎網(wǎng)絡信息中心教研室87高2.7運算符和表達式【例2-6】調(diào)試以下程序,理解邏輯表達式。#include<stdio.h>main(){charc='k';inti=1,j=2,k=3;floatx=3e+5,y=0.85;printf("%d,%d\n",!x*!y,!!!x);printf("%d,%d\n",x||i&&j-3,i<j&&x<y);printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);}大學計算機基礎網(wǎng)絡信息中心教研室88輸出結(jié)果為:0,01,00,12.7.8條件運算符和條件表達式條件表達式的一般形式為:表達式1?表達式2:表達式3
求值規(guī)則:若表達式1的值為真,則表達式2的值為條件表達式的值,否則以表達式3的值作為整個條件表達式的值。(1)條件運算符的運算優(yōu)先級低于關系運算符和算術(shù)運算符,但高于賦值運算符。如:
max=(x>y)?x:y
(2)條件運算符“?”和“:”是一對運算符,不能分開單獨使用。(3)條件運算符的結(jié)合性是自右至左。大學計算機基礎網(wǎng)絡信息中心教研室89例如:a>b?a:c>d?c:d應理解為a>b?a:(c>d?c:d)2.7運算符和表達式【例2-7】調(diào)試以下程序,理解條件表達式。#include<stdio.h>main(){intx,y,max;printf("g請輸入兩個整數(shù),x,y:");scanf("%d,%d",&x,&y);printf("最大值=%d\n",x>y?x:y);}大學計算機基礎網(wǎng)絡信息中心教研室90輸出結(jié)果為:請輸入兩個整數(shù),x,y:3,5最大值=52.7.9位運算符和位運算位運算符和位運算分別是:(1)&按位與運算符(2)|按位或運算符(3)^按位異或運算符(4)~取反運算符(5)<<左移運算符(6)>>右移運算符大學計算機基礎網(wǎng)絡信息中心教研室912.7運算符和表達式若變量A的值為0xAA(10101010),B的值為0x55(01010101),則:(1)A&B=0x00(00000000b)按位與(2)A|B=0xFF(11111111b)按位或(3)A^B=0xFF(11111111b)按位異或(4)~A=0x55(01010101b)取反(5)A<<1=0x54(01010100b)左移(6)A>>1=0x2A(00101010b)右移以上運算符在第10章將會進行詳細講解。大學計算機基礎網(wǎng)絡信息中心教研室92大學計算機基礎網(wǎng)絡信息中心教研室93本章內(nèi)容完結(jié)!第3章
順序結(jié)構(gòu)程序設計與編譯預處理
網(wǎng)絡信息中心教研室主要內(nèi)容大學計算機基礎網(wǎng)絡信息中心教研室953.2賦值語句
3.3輸入與輸出
3.4常用函數(shù)舉例
3.5編譯預處理
3.1C語句概述
3.6順序結(jié)構(gòu)程序設計舉例
3.1C語句概述C語言的語句用來向計算機系統(tǒng)發(fā)出指令,單獨的一條語句或者是復合語句完成特定的操作,這些操作的不同組合,用來實現(xiàn)一系列數(shù)據(jù)處理功能。C語言程序是一個由main()體內(nèi)的若干變量的聲明、賦值等操作以及若干函數(shù)組成的,沒有編譯過的程序稱為源程序。源程序的某些行稱為語句,每個語句的最后有一個半角分號“;”,用來表示語句的結(jié)束。用“;”隔開的語句,可以寫在同一行,也可以寫成幾行,但這些語句必須包含在函數(shù)體中。大學計算機基礎網(wǎng)絡信息中心教研室963.1C語句概述C語言的語句C語言的語句可以分為5類:表達式語句、函數(shù)調(diào)用語句、控制語句、復合語句和空語句。1.表達式語句
例如:
m=2;score=math+English; i++; x=10,y=12;2.函數(shù)調(diào)用語句
其一般形式為:函數(shù)名(實際參數(shù)表);大學計算機基礎網(wǎng)絡信息中心教研室973.1C語句概述3.控制語句(1)條件判斷語句:
if()...else.../*分支語句*/ switch(表達式/變量).../*多分支語句*/(2)循環(huán)語句:
do...while(條件)/*“先執(zhí)行,后判斷”的“當”型循環(huán)*/ while(條件).../*“先判斷,后執(zhí)行”的“當”型循環(huán)*/ for(條件).../*for循環(huán),循環(huán)次數(shù)相對確定下使用*/(3)流程轉(zhuǎn)向語句
goto/*強制程序跳轉(zhuǎn),不推薦使用*/ break/*中止執(zhí)行switch或者循環(huán)*/ continue/*結(jié)束循環(huán)體中的其中一趟*/ return/*從函數(shù)中返回*/大學計算機基礎網(wǎng)絡信息中心教研室983.1C語句概述4.復合語句
把多個語句用{語句1;語句2;...語句n}這種形式構(gòu)成一個比較復雜的語句稱為復合語句,又稱為語句塊。如兩個變量之間數(shù)據(jù)的交換。此時,應把復合語句看成一個單條語句。例如:if(a>b){ temp=a; a=b; b=temp;}
大學計算機基礎網(wǎng)絡信息中心教研室993.1C語句概述5.空語句只有“;”號的語句稱為空語句.如:for(i=0;i<32768;i++) ;/*空語句,注意它的意義*/大學計算機基礎網(wǎng)絡信息中心教研室1003.2賦值語句賦值語句的構(gòu)成形式賦值語句是由賦值表達式再加上“;”構(gòu)成,其一般形式為:
變量=表達式;例如:
sum=0; x=y+z; a=b=c=10;連續(xù)賦值與賦值運算符的右結(jié)合性而賦值語句允許給多個變量連續(xù)賦相同的值,例如: inta,b,c;/*必須在變量聲明處定義a,b,c三個變量*/ a=b=c=3;/*連續(xù)賦值*/大學計算機基礎網(wǎng)絡信息中心教研室1013.3輸入與輸出
輸入與輸出是以計算機為主體而言的。信息從計算機的外部輸入設備(鍵盤、鼠標、移動存儲設備等)向計算機輸入數(shù)據(jù)稱為輸入,計算機向外部設備(顯示器、打印機、文件設備等)輸出數(shù)據(jù)稱為輸出。在C語言中,沒有輸入/輸出語句,所有數(shù)據(jù)的輸入和輸出功能是通過一組庫函數(shù)來實現(xiàn)的,在調(diào)用這些輸入或輸出庫函數(shù)的時候,需要使用預編譯命令#include將有關“頭文件”包含到源文件中,這些“頭文件”的文件名格式為*.h。大學計算機基礎網(wǎng)絡信息中心教研室1023.4輸入與輸出使用標準輸入/輸出庫函數(shù)時,要在main()函數(shù)所在源文件中包含“stdio.h”文件,因此,源文件的開頭經(jīng)常有以下預編譯命令:
#include<stdio.h>或
#include"stdio.h“本小節(jié)主要介紹單個字符的輸入和輸出,格式輸入和輸出,并簡單介紹一下文件操作中的輸入和輸出,這些函數(shù)分別是getchar()、putchar()、printf()和fscanf()、fprintf()。大學計算機基礎網(wǎng)絡信息中心教研室103大學計算機基礎網(wǎng)絡信息中心教研室1043.4輸入與輸出1字符數(shù)據(jù)的輸入與輸出
2格式輸入與輸出
3文件操作中的輸入與輸出簡介
3.4.1字符數(shù)據(jù)的輸入與輸出函數(shù)的一般調(diào)用形式為:
putchar(ch);ch必須是一個整型變量或一個字符型變量,ch還可以是轉(zhuǎn)義字符常量。例如:
putchar('A');/*輸出大寫字母A*/ putchar(97);/*輸出小寫字母a*/ putchar(ch);/*輸出字符變量ch的值*/ putchar(\101);/*輸出大寫字母A*/ putchar(‘\n’);/*換行,(執(zhí)行控制功能,*/大學計算機基礎網(wǎng)絡信息中心教研室105單個字符輸出函數(shù)putchar13.4.1字符數(shù)據(jù)的輸入與輸出【程序分析與解答】#include<stdio.h>main(){ inti_ch;/*定義整型變量i_ch,這個變量用i代表整型,*/ i_ch=65;/*65是大寫字母'A'的ASCII碼*/ putchar(i_ch); putchar('\n'); i_ch=97;/*97是小寫字母'a'的ASCII碼*/ putchar(i_ch); putchar('\n');}大學計算機基礎網(wǎng)絡信息中心教研室1063.4.1字符數(shù)據(jù)的輸入與輸出一般調(diào)用形式為:
charch; ch=getchar();【程序分析與解答】#include<stdio.h>main(){ charch; printf("在此輸入任意一個字符并回車:\n"); ch=getchar(); putchar(ch);/*回顯剛才的輸入*/ putchar('\n');}利用getchar(),手動控制程序暫停執(zhí)行。大學計算機基礎網(wǎng)絡信息中心教研室107單個字符輸入函數(shù)getchar()
23.4.2格式輸入與輸出
printf和scanf函數(shù)可以一次輸出或者輸入若干個任意類型數(shù)據(jù),有效解決輸入復雜數(shù)據(jù)的問題,使用時,可以不包含頭文件stdio.h。
輸出函數(shù)printf格式:printf("格式控制字符串",輸出表列)①printf()函數(shù)參數(shù)的第一部分,由格式字符串和普通字符組成,格式字符串是以“%”開頭,在輸出表列中,必須有一個變量與這個格式字符相對應;普通字符在輸出時按原樣輸出.大學計算機基礎網(wǎng)絡信息中心教研室108格式輸出函數(shù)printf()13.4.2格式輸入與輸出例如:
printf(“總和=%d,平均值=%5.2f\n",sum,average);
格式字符串輸出表列【程序分析與解答】#include<stdio.h>main(){ intch1=77,ch2=78; printf("ch1=%d,ch2=%d\n",ch1,ch2); printf("ch1=%c,ch2=%c\n",ch1,ch2); printf("%c%c\n",ch1,ch2);}大學計算機基礎網(wǎng)絡信息中心教研室1093.4.2格式輸入與輸出
格式控制是通過格式字符串來實現(xiàn)的,格式字符串的一般形式為:%[標志][輸出最小寬度][.精度][長度修飾符]類型
其中,方括號[]內(nèi)的項可選,也可以省略,下面就介紹以上6項的使用方法: ①%:格式字符串的起始符號,不可省。 ②標志:標志字符為+、-、#、空格4種,其意義如下所示:大學計算機基礎網(wǎng)絡信息中心教研室1103.4.2格式輸入與輸出標志為+時,輸出值為正時在值前補“+”號,為負時值前補“-”號
標志為-時,輸出結(jié)果左對齊,右邊補空格;缺省則輸出結(jié)果右對齊,左邊填空格或零
標志為#時,輸出8進制數(shù)時加前綴0;輸出16進制數(shù)時加前綴0x。③輸出最小寬度:通常用10進制整數(shù)來表示輸出數(shù)據(jù)項的最小位數(shù),若實際位數(shù)多于指定位數(shù),則按實際位數(shù)輸出,若實際寬度少于指定位數(shù),則用空格或0填補。大學計算機基礎網(wǎng)絡信息中心教研室1113.4.2格式輸入與輸出④精度:精度格式以“.”開頭,后跟10進制整數(shù),用來指示保留幾位小數(shù)。⑤長度修飾符:常用的長度修改符為h、l兩種,英文字母h表示輸出項按短整型數(shù)據(jù)輸出,英文字母l表示輸出項按長整型數(shù)據(jù)輸出。 ⑥類型:類型字符用來表示待輸出數(shù)據(jù)的類型,必須用半角英文字符。格式字符d(或i)ox(或X);u;c;s;f;lf;e(或E);g(或G);%%(輸出一個%符號)。大學計算機基礎網(wǎng)絡信息中心教研室1123.4.2格式輸入與輸出【例3-1】數(shù)據(jù)在內(nèi)存中的存儲與8進制輸出。【程序分析與解答】#include<stdio.h>main(){ unsignedshortinta=-1;
printf("%d,%o\n",a,a);}大學計算機基礎網(wǎng)絡信息中心教研室113輸出結(jié)果為:65535,1777773.4.2格式輸入與輸出
輸入函數(shù)scanf格式:scanf("格式控制字符串",地址表列)地址表列中給出各變量的地址,地址是由地址運算符“&”后跟變量組成,但對字符號串的輸入例外。大學計算機基礎網(wǎng)絡信息中心教研室114格式輸入函數(shù)scanf()23.4.3文件操作中的輸入與輸出fprintf(文件指針,格式字符串,輸出表列);fscanf(文件指針,格式字符串,輸出表列);大學計算機基礎網(wǎng)絡信息中心教研室1153.5常用函數(shù)舉例1.求絕對值函數(shù)
(1)intabs(intx);(2)doublefabs(doublex);
2.求自然對數(shù)值函數(shù)
doublelog(doublex);
3.冪函數(shù)doublepow(doublex,doubley);
4.求平方根函數(shù)
doublesqrt(doublex);
5.產(chǎn)生隨機數(shù)函數(shù)intrand(void);
大學計算機基礎網(wǎng)絡信息中心教研室1163.5常用函數(shù)舉例【例3-2】產(chǎn)生10~100間的隨機整數(shù),并輸出。#include<stdio.h>#include<math.h>#include<time.h>main(){inta,b;srand(time(0));/*時間作為隨便數(shù)種子,每運行一次,隨機值均不同*/a=rand()%91+10;/*rand()返回隨機整數(shù),該數(shù)對91求余,數(shù)據(jù)范圍是0-90*/b=rand()%91+10;/*因為rand()是隨機的,求余結(jié)果亦隨機*/printf("a=%d,b=%d\n",a,b);}大學計算機基礎網(wǎng)絡信息中心教研室117大學計算機基礎網(wǎng)絡信息中心教研室1183.6編譯預處理1宏定義
2文件包含
3.6.1宏定義
C語言中常用的預處理功能有兩種,分別是宏定義和文件包含。合理使用編譯預處理功能編寫程序,便于程序閱讀、修改、移植和調(diào)試,也便于開發(fā)小組協(xié)同開發(fā)程序。C語言中編譯預處理命令以“#define”開頭,且每行末尾不能加分號。宏定義
在C源程序中允許用一個標識符來表示一個字符串,稱為“宏”。在C語言中,“宏”分為有參數(shù)和無參數(shù)兩種。下面分別討論這兩種“宏”的定義和調(diào)用。
大學計算機基礎網(wǎng)絡信息中心教研室1193.6編譯預處理不帶參數(shù)的宏的一般定義方式為:
#define標識符字符串 說明:(1) “#define”為宏定義的關鍵字,“標識符”表示定義的宏名,“標識符”用大寫字母,以便區(qū)分于變量名或函數(shù)名,也可以用小寫字母;(2)宏定義的末尾不可以";"作為結(jié)束,如果不小心加了分號,會將分號一起替換;(3)“字符串”是一個字符系列,對于整型,實型常量可直接書寫,對于字符型常量,需要添加單引號,對于字符串常量,需要添加雙引號?!白址边€可以是一個表達式。大學計算機基礎網(wǎng)絡信息中心教研室120不帶參數(shù)的宏定義13.6編譯預處理【例3-14】宏定義中的數(shù)據(jù)格式#defineCH'c'#defineSTRING"Programming"#defineR1/*這是數(shù)字1*/#definePI3.14159#defineL2*PI*R#defineSPI*R*R#include<stdio.h>main(){printf("%c,%s\n",CH,STRING);printf("L=%f,S=%f\n",L,S);}大學計算機基礎網(wǎng)絡信息中心教研室121輸出結(jié)果:c,ProgrammingL=6.283180,S=3.1415903.6編譯預處理帶參數(shù)的宏定義不是進行簡單的字符串替換,還要進行參數(shù)替換。其定義的一般形式為#define宏名(參數(shù)表)字符串字符串中包含在括弧中所指定的參數(shù)。如:#defineS(a,b)a*barea=S(3,2);定義矩形面積S,a和b是邊長。在程序中用了S(3,2),把3、2分別代替宏定義中的形式參數(shù)a、b,即用3、2代替S(3,2)。因此賦值語句展開為area=3*2;大學計算
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個人店面租賃合同租賃費用調(diào)整辦法
- 二零二五年度高層建筑消防改造勞務分包合同范本2篇
- 二零二五年度內(nèi)部承包合作協(xié)議范本12篇
- 《特種設備安全法》解析-浙江
- 酒店管理工作中的客戶服務
- 科技應用在小班教育中的探索計劃
- 二零二五年度個人租賃山地別墅及園林使用權(quán)合同4篇
- 二零二五年度寵物領養(yǎng)合同范本3篇
- 二零二五年度企業(yè)收入證明修訂協(xié)議3篇
- 二零二五年度離婚方式適用條件及技巧解析合同3篇
- 微信小程序用戶服務協(xié)議和隱私政策-帶目錄
- 復工復產(chǎn)六個一方案模板
- 江蘇省徐州市、宿遷市2025年高三下期末測試化學試題含解析
- 要分手費的分手協(xié)議書(標準)
- 2024夏季廣東廣州期貨交易所招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 浙江省2024年高考化學模擬試題(含答案)2
- 2024新人教七年級英語上冊 Unit 2 Were Family!(大單元教學設計)
- 碳排放管理員 (碳排放核查員)技能考核內(nèi)容結(jié)構(gòu)表三級、技能考核要素細目表三級
- DB12T 1339-2024 城鎮(zhèn)社區(qū)公共服務設施規(guī)劃設計指南
- 電競賽事策劃全解析
- 中國醫(yī)美行業(yè)2024年度洞悉報告-德勤x艾爾建-202406
評論
0/150
提交評論