C語(yǔ)言程序設(shè)計(jì)課件.ppt_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩271頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

c語(yǔ)言程序設(shè)計(jì),教材分析,本書(shū)內(nèi)容共有11章,可分為三部分。 第1、2章為第一部分,為初學(xué)者的入門知識(shí),使讀者對(duì)c語(yǔ)言編寫(xiě)程序的步驟、方法和程序結(jié)構(gòu)及算法描述有一個(gè)大致的了解。 第3第5章為第二部分,是程序設(shè)計(jì)的基礎(chǔ)部分,使讀者詳細(xì)了解c語(yǔ)言的基本數(shù)據(jù)類型和表達(dá)式以及c語(yǔ)言的控制結(jié)構(gòu)。掌握了第一、二部分的內(nèi)容,讀者可以完成簡(jiǎn)單的程序設(shè)計(jì)。 第6章第11章為第三部分,講述了模塊化程序設(shè)計(jì)的概念和實(shí)現(xiàn)的方法,為程序設(shè)計(jì)提供了更多、更方便的途徑,為進(jìn)行綜合程序設(shè)計(jì)奠定了基礎(chǔ)。每一個(gè)章節(jié)里都有詳細(xì)的程序范例來(lái)說(shuō)明程序的設(shè)計(jì)思想、語(yǔ)句的概念、作用、含義和使用方法,使學(xué)生能夠由淺入深系統(tǒng)地學(xué)習(xí)c語(yǔ)言的知識(shí),同時(shí)掌握一定的編程方法。,成績(jī)考核,成績(jī)考核方法: 期末成績(jī)=平時(shí)成績(jī)20%+期末考試80%; 注:平時(shí)成績(jī)包括:上課情況、作業(yè)情況、上機(jī)作業(yè)完成情況等。,學(xué)習(xí)c的忠告,上機(jī)實(shí)踐(編程)! (try!),c語(yǔ)言程序設(shè)計(jì)教程,第1章 引言 第2章 程序的簡(jiǎn)單算法制定 第3章 基本程序語(yǔ)句 第4章 選擇結(jié)構(gòu) 第5章 循環(huán)結(jié)構(gòu) 第6章 函數(shù)與編譯預(yù)處理 第7章 數(shù)組 第8章 指針 第9章 構(gòu)造數(shù)據(jù)類型 第10章 文件 第11章 位運(yùn)算,c語(yǔ)言程序設(shè)計(jì)課程的任務(wù),1. 指導(dǎo)學(xué)生掌握 c 程序設(shè)計(jì)語(yǔ)言的基礎(chǔ)知識(shí); 2.培養(yǎng)學(xué)生綜合分析并編制程序解決實(shí)際應(yīng)用問(wèn)題的能力; 3.培養(yǎng)學(xué)生契而不舍的解決問(wèn)題的精神以及認(rèn)真的學(xué)習(xí)態(tài)度。 通常我們把設(shè)計(jì)、書(shū)寫(xiě)及檢查調(diào)試程序的過(guò)程稱為程序設(shè)計(jì)。應(yīng)當(dāng)指出,簡(jiǎn)單的程序設(shè)計(jì)應(yīng)包括以下幾個(gè)部分: 確定數(shù)據(jù)結(jié)構(gòu) 確定算法 編寫(xiě)代碼 調(diào)試并運(yùn)行 整理并寫(xiě)出文檔資料,第一章 引 言,1.1 c語(yǔ)言的特點(diǎn) 1.2 簡(jiǎn)單的c語(yǔ)言程序介紹 1.3 c語(yǔ)言程序的結(jié)構(gòu) 1.4 c程序設(shè)計(jì)語(yǔ)言的執(zhí)行,1.1 c語(yǔ)言的特點(diǎn),c語(yǔ)言有9種控制語(yǔ)句,32個(gè)關(guān)鍵字。 運(yùn)算符豐富。共有34種運(yùn)算符 數(shù)據(jù)結(jié)構(gòu)類型豐富。 具有結(jié)構(gòu)化的控制語(yǔ)句 語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。 c語(yǔ)言允許直接訪問(wèn)物理地址,能進(jìn)行位操作,可以直接對(duì)硬件進(jìn)行操作。 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。 c語(yǔ)言編寫(xiě)的程序可移植性好。,1.2 簡(jiǎn)單的c語(yǔ)言程序介紹,/*ex101.c-在屏幕上輸出this is a c program. */ #include void main( ) printf(“this is a c program.n”); ,注釋 /*ex101.c-在屏幕上輸出this is a c program. */,c程序中的“/* */”之間的內(nèi)容稱為注釋,是程序編寫(xiě)者給程序閱讀者留下的一些說(shuō)明(注釋),以幫助閱讀者理解程序。編譯器不對(duì)注釋進(jìn)行編譯,只將它們當(dāng)作空白看待。 本程序的第1行中的注釋為“ex101.c”,是說(shuō)明本書(shū)編寫(xiě)時(shí)將這個(gè)程序保存在文件ex101.c中。,庫(kù)函數(shù)與文件包含命令include #include ,庫(kù)函數(shù):系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù),程序可直接使用; 使用庫(kù)函數(shù)必須將其有關(guān)說(shuō)明信息寫(xiě)入程序。為了用戶方便,系統(tǒng)定義庫(kù)函數(shù)時(shí),把一類相關(guān)庫(kù)函數(shù)的說(shuō)明信息,分別寫(xiě)在一些文件中。本例中使用了庫(kù)函數(shù)printf ,其有關(guān)說(shuō)明信息寫(xiě)在文件stdio.h中。所以在程序的開(kāi)始加入了#include 使用c語(yǔ)言的庫(kù)函數(shù),要在程序前面加上類似#include 的預(yù)處理命令, main函數(shù),任何c程序都必須有且只能有一個(gè)主函數(shù)main(),它是程序的入口,也是程序的出口。其中,main是函數(shù)名,()內(nèi)可以包含一些參數(shù); 的內(nèi)容稱為函數(shù)體,其包含若干條c程序語(yǔ)句;不同語(yǔ)句之間用分號(hào)分隔;一般情況下,每個(gè)程序都由一至多個(gè)函數(shù)組成;,void main( ) printf(“this is a c program.n”); ,演示ex101,語(yǔ)句 printf(“this is a c program.n”);,c語(yǔ)言的主函數(shù)體由一些語(yǔ)句組成。每個(gè)語(yǔ)句由一個(gè)分號(hào)結(jié)束。如本例中,主函數(shù)的一個(gè)語(yǔ)句: printf (“this is a c program.n”);,說(shuō)明: 函數(shù)printf是系統(tǒng)提供的一個(gè)庫(kù)函數(shù),printf函數(shù)的功能是向顯示器 輸出一段信息,具體內(nèi)容括在雙引號(hào)內(nèi); 參數(shù)中的“n”代表一個(gè)命令:輸出完這行字符后換行,不是要求顯示的文字。,例2 寫(xiě)出以下程序的運(yùn)行結(jié)果,寫(xiě)出以下程序的輸出結(jié)果 #include void main( ) printf(“hellon”); printf(“world!n”); 演示 ex102,例3 四則運(yùn)算編程,#include int add(int x,int y); main() int a,b,c; scanf(“%d %d“,演示ex103 演示ex104 討論減、乘、除的編程,輸入函數(shù) scanf(),函數(shù)說(shuō)明,函數(shù)定義,1.4 c程序設(shè)計(jì)語(yǔ)言的執(zhí)行,對(duì)于c語(yǔ)言程序來(lái)說(shuō),這一過(guò)程一般分為4步: 第1步:編輯源程序; 第2步:編譯; 第3步:鏈接; 第4步:執(zhí)行;,(整個(gè)過(guò)程如下圖),filename.c,filename.obj,filename.exe,出錯(cuò),出錯(cuò),出錯(cuò),出錯(cuò),調(diào)試debug,編 譯,編譯就是把用c語(yǔ)言描述的程序翻譯成計(jì)算機(jī)可以直接理解并執(zhí)行的機(jī)器語(yǔ)言命令組成的程序。c語(yǔ)言的編譯過(guò)程分為兩個(gè)階段:首先是編譯預(yù)處理,系統(tǒng)要先掃描程序,處理所有預(yù)處理命令,如把文件包含命令要求的文件包含(嵌入)到程序中。然后才開(kāi)始編譯。編譯后得到的文件稱為目標(biāo)文件。目標(biāo)文件就是用機(jī)器語(yǔ)言描述的文件。c語(yǔ)言的目標(biāo)文件的后綴為.obj。目標(biāo)文件的主文件名,一般與源程序文件名相同。 在編譯過(guò)程中,還要對(duì)源程序中的語(yǔ)法和邏輯結(jié)構(gòu)進(jìn)行檢查。編譯任務(wù)是由稱做編譯器(compiler)的軟件完成的。程序在編譯過(guò)程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)要重新進(jìn)入編輯器進(jìn)行編輯。,鏈 接,鏈接是將與當(dāng)前程序有關(guān)的、已經(jīng)有的幾個(gè)目標(biāo)模塊鏈接在一起,形成一個(gè)完整的程序代碼文件。這些已經(jīng)有的目標(biāo)模塊有: 庫(kù)函數(shù):如前面使用的printf; 對(duì)于大的程序,常常分成幾個(gè)模塊,分別編寫(xiě)、編輯和編譯,形成不同的目標(biāo)模塊。 經(jīng)正確鏈接所生成的文件才是可執(zhí)行文件??蓤?zhí)行文件的文件名后綴為.exe(有的系統(tǒng)為.out)。完成鏈接過(guò)程的軟件稱為鏈接器(linker)。 程序在連接過(guò)程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)也要重新進(jìn)入編輯器進(jìn)行編輯。,執(zhí) 行,鏈接后得到的可執(zhí)行文件名,對(duì)操作系統(tǒng)來(lái)說(shuō),相當(dāng)于一條命令。在操作系統(tǒng)提供的命令界面上打入這個(gè)命令,就可以開(kāi)始執(zhí)行這個(gè)程序。,c語(yǔ)言的集成開(kāi)發(fā)環(huán)境,turbo c 2.0 turbo c+(選用)vc+等 (1)打開(kāi)turbo c+運(yùn)行環(huán)境。界面如圖:,從圖可以看到在集成環(huán)境的上部,有一行“主菜單”,其中包括下面10個(gè)菜單項(xiàng): file edit search run compile project options debug window help 分別代表:文件操作、編輯、查找、運(yùn)行、編譯、項(xiàng)目文件、選項(xiàng)、調(diào)試、窗口、幫助等功能。用戶可通過(guò)以上菜單項(xiàng)來(lái)選擇使用turbo c集成環(huán)境所提供的各項(xiàng)主要功能。 (2)編輯源程序。 在file菜單下選擇new子菜單項(xiàng)命令,系統(tǒng)的光標(biāo)處于等待輸入c源程序狀態(tài)。輸入完源程序后,選擇file菜單下選擇save as子菜單項(xiàng)命令進(jìn)行保存,在隨后彈出的保存文件對(duì)話框中,輸入文件名*.c后按“” (3)編譯源程序 選擇compile主菜單項(xiàng)并在其下拉子菜單中選擇compile 命令,則進(jìn)行編譯。若源程序無(wú)語(yǔ)錯(cuò)誤,生成可執(zhí)行文件exe;若源程序有語(yǔ)法錯(cuò)誤,在message窗口顯示錯(cuò)誤信息,此時(shí)沒(méi)有生成可執(zhí)行文件,應(yīng)回到第2步,修改程序的錯(cuò)誤,直到無(wú)語(yǔ)法錯(cuò)誤、生成可執(zhí)行文件。,返回,(4) 連接程序 在compile菜單中,選擇link子菜單項(xiàng)命令,程序?qū)⒈贿B接成可執(zhí)行程序。 注:按f9鍵,可一次完成編譯和連接。 (5) 執(zhí)行程序。選擇run子菜單命令,或按快捷鍵ctrl+f9。 (6) 看結(jié)果。程序運(yùn)行后看結(jié)果必須選擇file菜單下的dos shell命令 或者按快捷鍵alt+f5,才能看到運(yùn)行的結(jié)果。 如程序未得到預(yù)期的結(jié)果,應(yīng)回到第2步,修改程序的錯(cuò)誤。 (7) 退出turbo c+,file-quit菜單命令或按alt+x。,總結(jié):簡(jiǎn)單c語(yǔ)言程序設(shè)計(jì)步驟,分析問(wèn)題,設(shè)計(jì)解決方案 了解和編寫(xiě)c語(yǔ)言程序代碼,上機(jī)調(diào)試(編輯、編譯、鏈接、執(zhí)行),理論課的主要內(nèi)容,實(shí)驗(yàn)課的主要內(nèi)容 上述每個(gè)步驟都可能出現(xiàn)很多錯(cuò)誤,具體有三種錯(cuò)誤:語(yǔ)法錯(cuò)誤、邏輯錯(cuò)誤、運(yùn)行錯(cuò)誤??傊霈F(xiàn)錯(cuò)誤就要進(jìn)行調(diào)試。,作 業(yè),1、在屏幕上輸出如下圖形: 25 要求:寫(xiě)出程序,并上機(jī)調(diào)試,盡量保證程序能夠得到正確結(jié)果。復(fù)習(xí)本講內(nèi)容(第一章),預(yù)習(xí)教材第二章。,第二章 程序的簡(jiǎn)單算法制定,2.1 結(jié)構(gòu)化程序的算法制定 2.2 結(jié)構(gòu)化程序的算法描述 2.3 算法制定的范例,2.1 結(jié)構(gòu)化程序的算法制定,利用計(jì)算機(jī)處理問(wèn)題簡(jiǎn)述,2.1 結(jié)構(gòu)化程序的算法制定,例2.1 從鍵盤輸入3個(gè)數(shù),找出其中最小的那個(gè)數(shù)。 分析:1、需變量的個(gè)數(shù)-3個(gè) 2、先比較a,b的值,把小的存在min中。 3、再用min與c比較,把數(shù)值小的存放在min中。 如果 ab 則 min=a,否則min=b; 如果cmin則min=c, 否則不變。 畫(huà)出對(duì)應(yīng)的流程圖。 演示程序ex201,【例】讓某學(xué)生解方程 ax2+bx+c=0 求解過(guò)程:,分析問(wèn)題 這是一個(gè)一元二次方程(代數(shù)問(wèn)題,須中學(xué)代數(shù)知識(shí)) 確定處理方案 用求根公式 確定解題步驟 確定a、b、c的值 求出b2 -4ac的值 如果 b2 -4ac0(雙實(shí)根) x1= x2= 如果 b2 -4ac=0(單實(shí)根) x1=x2= 如果 b2 -4ac0(雙復(fù)根) x1= x2= 根據(jù)上述步驟計(jì)算 寫(xiě)出答案,整理、分析結(jié)果,2.2 結(jié)構(gòu)化程序的算法描述,什么是算法 為解決一個(gè)問(wèn)題所采取的方法和步驟稱為算法。 算法的特性 有窮性、確定性、有零個(gè)或多個(gè)輸入、有一個(gè)或多個(gè)輸出、有效性。 算法有兩個(gè)很重要的方面: (1)按什么順序或步驟執(zhí)行 (2)用什么語(yǔ)句來(lái)實(shí)現(xiàn),2.2 結(jié)構(gòu)化程序的算法描述,自然語(yǔ)言 特點(diǎn):易懂、冗長(zhǎng)、易產(chǎn)生歧義 流程圖 n-s結(jié)構(gòu)化流程圖 pad圖 偽代碼 計(jì)算機(jī)語(yǔ)言,偽碼語(yǔ)句示例之一 if students grades greater than or equal to 60 display ” passed” else display ”failed”,偽碼語(yǔ)句示例之二 如果學(xué)生成績(jī)大于或等于60 顯示”及格” 否則 顯示 ”不及格”,c語(yǔ)言源程序段示例 if (grade=60) printf(“passed!”); else printf(“failed”);,算法可采用自然語(yǔ)言、流程圖、n-s圖、pad圖、偽代碼等方法來(lái)描述。 示例:根據(jù)學(xué)生成績(jī)輸出評(píng)定結(jié)果。,一、算法(algorithm),二、算法與流程圖傳統(tǒng)流程圖,特點(diǎn): 直觀形象; 使用流線。 缺點(diǎn): 占面積大,使用流線任意轉(zhuǎn)移,易出現(xiàn)“亂麻”現(xiàn)象,造成編程與閱讀程序困難。,二、算法與流程圖n-s結(jié)構(gòu)化流程圖,77年美學(xué)者i.nassi和b.scheiderman提出。 特點(diǎn) 取消流線 不允許流程任意轉(zhuǎn)移,只能從上而下順序執(zhí)行 規(guī)定三種基本結(jié)構(gòu)的流程圖單元,由這些基本結(jié)構(gòu)象搭積木似的組成各種算法(結(jié)構(gòu)化設(shè)計(jì))。 優(yōu)點(diǎn) 算法清晰,流程不會(huì)無(wú)規(guī)律亂轉(zhuǎn)移。,二、算法與流程圖三種基本結(jié)構(gòu),通常情況下,程序中的語(yǔ)句是以所編寫(xiě)的順序一句接一句地執(zhí)行,這種執(zhí)行方法稱為“順序執(zhí)行”。許多c語(yǔ)句能夠讓程序員指定不按編寫(xiě)順序執(zhí)行下一條執(zhí)行語(yǔ)句,這種執(zhí)行方法稱為“控制轉(zhuǎn)移”。 bohm和jacopini的研究證實(shí),所有的程序都能夠只用三種控制結(jié)構(gòu)編寫(xiě),即 順序結(jié)構(gòu) 選擇結(jié)構(gòu)(selection structure) 循環(huán)結(jié)構(gòu)(repetition structure) 順序結(jié)構(gòu)是c語(yǔ)言的基本結(jié)構(gòu),除非指示轉(zhuǎn)移,否則計(jì)算機(jī)自動(dòng)以語(yǔ)句編寫(xiě)的順序一句一句地執(zhí)行c語(yǔ)句。 任何c語(yǔ)言程序都是由七種控制結(jié)構(gòu)(順序結(jié)構(gòu)、三種選擇結(jié)構(gòu)和三種循環(huán)結(jié)構(gòu))構(gòu)成的。,二、算法與流程圖三種基本結(jié)構(gòu),順序結(jié)構(gòu) a塊、b塊順序執(zhí)行(每塊代表一個(gè)或一組操作),二、算法與流程圖三種基本結(jié)構(gòu),選擇結(jié)構(gòu) 條件p成立時(shí)執(zhí)行a塊(否則執(zhí)行b塊) if 選擇結(jié)構(gòu) 條件為真時(shí)執(zhí)行某個(gè)指定的操作,條件為假時(shí)跳過(guò)該操作(單路選擇) ifelse選擇結(jié)構(gòu) 條件為真時(shí)執(zhí)行某個(gè)指定的操作,為假時(shí)執(zhí)行另一個(gè)指定的操作(雙路選擇) switch選擇結(jié)構(gòu) 根據(jù)表達(dá)式的值執(zhí)行眾多不同操作中的某個(gè)指定的操作(多路選擇),二、算法與流程圖三種基本結(jié)構(gòu),循環(huán)結(jié)構(gòu) 分當(dāng)型和直到型兩類。 當(dāng)型 先判斷,只要條件為真就反復(fù)執(zhí)行a塊,為假則結(jié)束循環(huán)。 直到型 先執(zhí)行a塊,再判斷條件是否為真,為真則繼續(xù)執(zhí)行循環(huán)體,為假則結(jié)束循環(huán)。 c語(yǔ)言提供了三種循環(huán)結(jié)構(gòu),即while循環(huán)結(jié)構(gòu),dowhile循環(huán)結(jié)構(gòu)和for循環(huán)結(jié)構(gòu)。,2.2.3 pad圖,pad(problem analysis diagram)另一種被廣泛使用的一種算法的圖形表示法。 pad圖可以看成是二維的,它能展現(xiàn)算法的層次結(jié)構(gòu)。(順序結(jié)構(gòu)很簡(jiǎn)單,在此未畫(huà)圖。),2.3 算法制定范例,例2.4 把從鍵盤輸入的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母,輸出結(jié)果。 問(wèn)題: 1、描述算法 2、根據(jù)算法編寫(xiě)c程序 3、運(yùn)行檢查程序是否正確。 演示ex202,2.3 算法制定范例,例2.5 已知實(shí)數(shù)a和b,計(jì)算u的值:u=(r+s)2。其中,當(dāng)ab時(shí),r=a2-b2,s=a/b;當(dāng)ab時(shí),r=b2-a2,s=a/b+4。 算法(自然語(yǔ)言描述): 從鍵盤輸入實(shí)數(shù)a和b。 如果ab,則r=a2-b2,s=a/b;否則,r=b2-a2,s=a/b+4。 計(jì)算u的值: u=(r+s)2。 輸出u的值。,開(kāi)始,輸入a,b,ab,t,f,r=a*a-b*b,s=a/b,r=b*b-a*a,s=a/b+4,結(jié)束,u=(r+s)*(r+s),輸出u的值,流程圖,輸入實(shí)數(shù)a,b,ab,f,t,r=a*a-b*b s=a/b,r=b*b-a*a s=a/b+4,計(jì)算的值:u=(r+s)*(r+s),輸出u的值,n-s圖,輸入實(shí)數(shù)a,b,ab,r=a*a-b*b,s=a/b,r=b*b-a*a,s=a/b+4,計(jì)算u=(r+s)*(r+s),輸出u的值,pad圖,/*例2.5*/ #include main() float a,b,r,s,u; printf(“請(qǐng)輸入變量a、b的值:“); scanf(“%f %f“, ,c語(yǔ)言描述,小結(jié): 本章主要介紹了程序算法的制定方法:自然語(yǔ)言、流程圖、n-s圖和pad圖。通過(guò)用這些方法表示解題思路。 作業(yè): 用流程圖、 n-s圖和pad圖描述問(wèn)題的算法: 從鍵盤輸入3個(gè)整數(shù)a,b,c,輸出其中的最大的數(shù)。,第三章 基本程序語(yǔ)句,c語(yǔ)言的數(shù)據(jù)類型簡(jiǎn)介 幾個(gè)基本概念 c語(yǔ)言的三種基本數(shù)據(jù)類型 基本運(yùn)算符和表達(dá)式 c基本語(yǔ)句 數(shù)據(jù)的輸出 數(shù)據(jù)的輸入 簡(jiǎn)單程序設(shè)計(jì)舉例,3.1 c語(yǔ)言的數(shù)據(jù)類型簡(jiǎn)介,c語(yǔ)言的數(shù)據(jù)結(jié)構(gòu),字符型(char) 整型(short,int,long,unsigned) 單精度型(float) 實(shí)型 雙精度型(double) 枚舉類型(enum) 數(shù)組類型( ) 構(gòu)造類型 結(jié)構(gòu)體類型(struct) 共用體類型(union) 指針類型(*) 空類型(void),3.2 幾個(gè)基本概念,3.2.1 標(biāo)識(shí)符 1標(biāo)識(shí)符概念:是用來(lái)標(biāo)識(shí)名稱的,可以用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、類型名、數(shù)組名、文件名等。c語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線組成,且第一個(gè)字符必須是字母或下劃線。如:day ,month ,student ,name_1 ,s2 ,_12 ,_t13 注意: c語(yǔ)言中大寫(xiě)字母和小寫(xiě)字母被認(rèn)為是兩個(gè)不同的字符,大寫(xiě)字母a與小寫(xiě)字母a則表示不同的標(biāo)識(shí)符。 采用“見(jiàn)名知義”的原則,3.2 幾個(gè)基本概念,3.2.1 標(biāo)識(shí)符 2標(biāo)識(shí)符的分類 關(guān)鍵字(代表固定含義,不能另做他用。書(shū)p21) 分為三類 預(yù)定義標(biāo)識(shí)符(有特定含義,包括c語(yǔ)言庫(kù)函數(shù)名 和變異預(yù)處理命令允許另做他用,但標(biāo)識(shí)符失去原義) 用戶標(biāo)識(shí)符(用戶自己定義,不能使用關(guān)鍵字,可 以使用預(yù)定義標(biāo)識(shí)符,建議不要使用預(yù)定義標(biāo)識(shí)符),3.2 幾個(gè)基本概念,3.2.2 常量 在程序運(yùn)行中,其數(shù)值不能被改變的量 1直接常量:是在程序中直接引用的數(shù)據(jù) 2符號(hào)常量:符號(hào)常量是用標(biāo)識(shí)符來(lái)代表一個(gè)數(shù)據(jù) 符號(hào)常量的定義形式: #define 符號(hào)常量標(biāo)識(shí)符 常量數(shù)據(jù) 例如: #define pi 3.14159,3.2 幾個(gè)基本概念,3.2.3 變量 變量是指以標(biāo)識(shí)符為名字,其值可以改變的量。,變量分為整型、實(shí)型、字符型等。,1、定義形式:類型標(biāo)識(shí)符 變量名1 ,變量名2,變量名3.; 例如: int a,b,c ; float x,y; char c1,c2; 或 int c1,c2;,3.2 幾個(gè)基本概念,3.2.3 變量 2、變量初始化 在說(shuō)明變量的同時(shí)給變量一個(gè)初始值。 int a=5, b=3; int a,b,c; a=b=c=3; int a=b=c=3; ,例如,注意:在同一程序塊中,變量不能被重復(fù)定義;使用變量時(shí)必須“先定義,后使用”。,3.3 c語(yǔ)言的三種基本數(shù)據(jù)類型,3.3.1 整型數(shù)據(jù) 1、整型常量: (1) 十進(jìn)制形式: 與數(shù)學(xué)上的整數(shù)表示相同; 例如: 12, -100, 0 (2) 八進(jìn)制形式: 在數(shù)碼前加數(shù)字0; 例如: 012=1*81+2*80=10(十進(jìn)制) (3) 十六進(jìn)制形式: 在數(shù)碼前加0x(數(shù)字0和字母x)。 例如: 0x12=1*161+2*160=18(十進(jìn)制) * 八進(jìn)制的數(shù)碼范圍為07; 018 * 十六進(jìn)制的數(shù)碼除了數(shù)字09外, 還使用英文字母a f (或a f)表示1015。 如:0x1e ,注意!,3.3 c語(yǔ)言的三種基本數(shù)據(jù)類型,2、整型變量 ()整型變量分類 根據(jù)數(shù)據(jù)所占的二進(jìn)制位數(shù)分為:int、short、long; 同樣存儲(chǔ)長(zhǎng)度的數(shù)據(jù)又分unsigned、signed; 故可組合出六種類型。 ()整型數(shù)據(jù)的存儲(chǔ)方式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存儲(chǔ)的。 c語(yǔ)言中,一個(gè)int型數(shù)據(jù)通常用兩個(gè)字節(jié)存放,其中最高位用來(lái)存放整數(shù)的符號(hào),若最高位為0則表示該數(shù)為正數(shù),若最高位為1則表示該數(shù)為負(fù)數(shù)。 如:int i=-1; 則存放形式為:,3.3 c語(yǔ)言的三種基本數(shù)據(jù)類型,3、值域:變量允許存放的數(shù)值范圍 由機(jī)器中數(shù)據(jù)的存儲(chǔ)長(zhǎng)度決定。 vc 6.0 所支持的整型數(shù)據(jù),3.3 c語(yǔ)言的三種基本數(shù)據(jù)類型,例3.1:p24 思考:運(yùn)行結(jié)果是否正確,說(shuō)明理由!,#include main() int a,b,c,d; unsigned u,v; a=1;b=3;c=6;d=-7; u=a+b;v=c+d; printf(“u=%d,v=%un“,u,v);,3.3 c語(yǔ)言的三種基本數(shù)據(jù)類型,3.3.2 實(shí)型數(shù)據(jù) 1、實(shí)型常量: (1) 十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成; 例如: 3.4 , 4. , .3 (2) 指數(shù)形式:“十進(jìn)制小數(shù)”+“ e(或e)”+“十進(jìn)制數(shù)整數(shù)”。 例如: 12.5e-6 表示12.510-6 。 規(guī)范化指數(shù)形式: 小數(shù)點(diǎn)不能單獨(dú)出現(xiàn); 0. .0 . e或e的兩邊必須有數(shù),且其后面必須為整數(shù); 如: 6e0.2 e5 2、實(shí)型變量(分類和值域): 關(guān)鍵字 字節(jié)數(shù) 取值范圍 精度(位) float 4 3.410-38 3.41038 7 double 8 1.710-308 1.710308 15,注意,3.3 c語(yǔ)言的三種基本數(shù)據(jù)類型,3.3.3字符型數(shù)據(jù) 1、常量: (1) 用單引號(hào)括起來(lái)的一個(gè)字符;如:a、1、?等。 (2) 用單引號(hào)括起來(lái)的由反斜杠()引導(dǎo)的轉(zhuǎn)義字符。 字符形式 功能 n 換行 t 橫向跳格 b 退格 r 回車 反斜杠字符 單引號(hào)字符 ddd 8進(jìn)制數(shù)表示的ascii碼對(duì)應(yīng)的字符 xhh 16進(jìn)制數(shù)表示的ascii碼對(duì)應(yīng)的字符 例如:字符a的ascii碼為: 65d(十進(jìn)制)=41h(十六進(jìn)制)=101q(八進(jìn)制) 字符a可以表示為a、x41、101。,#include main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“a%c b%ctc%ctabcn“,c1,c2,c3); printf(“tb%c %c“,c4,c5);,轉(zhuǎn)義字符的應(yīng)用,演示ex304,3.3 c語(yǔ)言的三種基本數(shù)據(jù)類型,2、變量的分類和值域: 分類: char 和 unsigned char; 值域: 每個(gè)字符型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié);包括ascii字符表中的所有字符(可顯示字符和非顯示字符)。 3、字符串常量: 是用一對(duì)雙引號(hào)括起來(lái)的字符序列。 如:“shanghai”,“fghijk”,“china”。 字符串常量的存放: 每個(gè)字符均以其ascii碼存放,且在最后加一個(gè)“空字符” a與“a”的區(qū)別。,注意,3.4 基本運(yùn)算符和表達(dá)式,3.4.1 c運(yùn)算符簡(jiǎn)介 按操作功能運(yùn)算符大致可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、按位運(yùn)算符以及其它運(yùn)算符如賦值運(yùn)算符、條件運(yùn)算符、逗號(hào)運(yùn)算符等。 表達(dá)式是由操作數(shù)和運(yùn)算符組成的序列。 算術(shù)運(yùn)算符 + - * / % 關(guān)系運(yùn)算符 = = = != 邏輯運(yùn)算符 ! & 位運(yùn)算符 | & 賦值運(yùn)算符 = 條件運(yùn)算符 ?: 逗號(hào)運(yùn)算符 , 指針運(yùn)算符 * 和 & 求字節(jié)數(shù)運(yùn)算符 sizeof 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 分量運(yùn)算符 下標(biāo)運(yùn)算符 其它運(yùn)算符號(hào),3.4 基本運(yùn)算符和表達(dá)式,3.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式 1、 基本的算術(shù)運(yùn)算符 +(加):3+4、 +3 -(減):3-5、 -5 *(乘):3*5 /(除):5/2的值為2;5.0/2的值為2.5; %(取余):5%3的值為2; -5%3的值為-2; 5%(-3)的值為2; -5%(-3)的值為-2; 12.3%3 若a能被b整除,則有:a%b=0 整型數(shù)據(jù)相除,結(jié)果整型。5/3為1 求余運(yùn)算兩側(cè)為整型數(shù)據(jù) 參與運(yùn)算的數(shù)有一個(gè)是實(shí)型,則結(jié)果為實(shí)型,3.4 基本運(yùn)算符和表達(dá)式,2.算術(shù)表達(dá)式 用算術(shù)運(yùn)算符和括符將操作數(shù)連接起來(lái)的式子。 優(yōu)先級(jí):() *、/、% +、- 結(jié)合性:從左至右; 表達(dá)式的值: 數(shù)值型(int、long、unsigned、double); 例如: 已知: float a=2.0; int b=6,c=3; 求解: a*b/c-1.5+ a+(b-5)=?,float a=2.0; int b =6,c =3; a*b/c -1.5 +a + (b-5),12.0/3,1,4.0 - 1.5,2.5 + 97(int),99.5 + 1,100.5(double),3.4 基本運(yùn)算符和表達(dá)式,3.4.3 賦值運(yùn)算符和賦值表達(dá)式 1、賦值運(yùn)算符 = 2、賦值表達(dá)式:用賦值運(yùn)算符將變量和表達(dá)式連接起來(lái)的式子 一般形式為: 賦值運(yùn)算符 優(yōu)先級(jí): 賦值運(yùn)算符的優(yōu)先級(jí)比算術(shù)運(yùn)算符低。 結(jié)合性:自右至左(右結(jié)合性)。 求值規(guī)則: 先計(jì)算“=”右邊表達(dá)式的值,再將其值賦給左邊的變量。 表達(dá)式的值:賦值號(hào)左邊變量的值即為賦值表達(dá)式的值。,例如: (1) x=(y=12)/4 y值為12,x值為3,表達(dá)式的值為3 (2) x=y=12/4 y值為3,x值為3,表達(dá)式的值為3 (3) x=(y=12/4) y值為3,x值為3,表達(dá)式的值為3 (4) (x=y)=12/4 ,3.4 基本運(yùn)算符和表達(dá)式,3、復(fù)合賦值運(yùn)算符 *=、/=、 %=、 +=、 -=等 注意: 復(fù)合運(yùn)算符是一個(gè)運(yùn)算符,但功能上,是兩個(gè)運(yùn)算符功能的組合。 例如: (1) a+=b 相當(dāng)于 a=a+b a*=b 相當(dāng)于 a=a*b a*=b+c 相當(dāng)于 a=a*(b+c) 而不是 a=a*b+c (2) 設(shè)a=12,計(jì)算表達(dá)式a+=a-=a*12和a+=a-=a*=12的值,3.4 基本運(yùn)算符和表達(dá)式,4賦值時(shí)的類型轉(zhuǎn)換 實(shí)型數(shù)據(jù)賦給整型(字符型)變量:去掉小數(shù)部分; 如:int f=23.457; 變量f的值為23。 整型(字符型)數(shù)據(jù)賦給實(shí)型變量: 補(bǔ)足有效位。 字符型數(shù)據(jù)賦給整型變量:將字符數(shù)據(jù)(8位)放到整型變量的低8位中,高8位進(jìn)行“符號(hào)擴(kuò)展”。 一個(gè)int、short、long、unsigned型數(shù)據(jù)賦給一個(gè)char 型變量:截取低8位賦給字符型變量。 帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量:進(jìn)行符號(hào)擴(kuò)展。 帶符號(hào)的long型數(shù)據(jù)賦給int型變量時(shí),只截取低16位賦給int變量。 unsigned int 型數(shù)據(jù)賦給long int變量:高位補(bǔ)0。 int 型數(shù)據(jù)賦給unsigned int變量:內(nèi)存情況不變,但若是負(fù)數(shù),其符號(hào)位也作為數(shù)值賦給unsigned 型變量。,3.4 基本運(yùn)算符和表達(dá)式,5、自增與自減運(yùn)算符 單目運(yùn)算符,運(yùn)算對(duì)象是變量,不是表達(dá)式或者常量 +i,-i:先使變量i的值增1(或減1),再使用變量i的值作為整個(gè)表達(dá)式的值來(lái)參加其它的運(yùn)算; i+,i-:先使用變量i的值進(jìn)行其它運(yùn)算,再使變量i的值增1(或減1)。 (1) i+; +i; (2) i=3; j=i+; (3) i=3; j=+i;,等價(jià)于 i=i+1;,j=i;i+; 所以i的值為4,j的值為3。,i+;j=i; 所以i的值為4,j的值為4。,例如:,3.4 基本運(yùn)算符和表達(dá)式,5、自增與自減運(yùn)算符 結(jié)合性:自右至左。 如: i = 2; j = -i+; 等價(jià)于:j=-(i+); 即: j=-i; i+; “+”與”-“是同優(yōu)先級(jí) 所以i的值為3,j的值為-2。 注意 “+”或“-”自增與自減運(yùn)算符的使用。 設(shè)i=3,k=(i+)+(i+)+(i+),k=? 設(shè)i=3,k=(i+)+(+i)+(+i), k=? 設(shè)i=3,j=4,k=i+j,k=? 設(shè)i=3; printf(“%d %d”,i,-i+);結(jié)果為?,3.4 基本運(yùn)算符和表達(dá)式,3.4.4 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 1. 6種關(guān)系運(yùn)算符:= = != 2. 關(guān)系表達(dá)式:用關(guān)系運(yùn)算符將表達(dá)式連接起來(lái)的式子 優(yōu)先級(jí): (= )( = != ) 結(jié)合性:自左至右; 表達(dá)式的值: 若為真,則結(jié)果為1; 若為假,則結(jié)果為0。 35 的值為 0; 32 的值為 0; 3+(43 的值為1; ah的值為1 算術(shù)運(yùn)算符優(yōu)先級(jí)高于關(guān)系運(yùn)算符 關(guān)系運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,例如,3.4 基本運(yùn)算符和表達(dá)式,3.4.5 邏輯運(yùn)算符和邏輯表達(dá)式 1. 3種邏輯運(yùn)算符:& | ! 邏輯量:可以是整型、實(shí)型、字符型和指針類型, 0假 非0真; 如:0,0.0,0,null都代表假。 2. 邏輯表達(dá)式:用邏輯運(yùn)算符將表達(dá)式連接起來(lái)的式子 優(yōu)先級(jí): !&| 結(jié)合性:自左至右; 表達(dá)式的值: 若為真,則結(jié)果為1; 若為假,則結(jié)果為0。,3.4 基本運(yùn)算符和表達(dá)式,int a=5; float b=3.5; !a (0) !(a 0) (0) (a 0) (1),例如,結(jié)論: &:只要有一個(gè)為假,結(jié)果則為假; |:只要有一個(gè)為真,結(jié)果則為真;,! 高 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 &和| 賦值運(yùn)算符 低,4 - 0,1 & 2,8 4,1,0,1,5 3 & 2 | 8 4 - !5,3.4 基本運(yùn)算符和表達(dá)式,注意: 在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。 例如: (1)a = 0; b = 1; c = a+ 結(jié)果: a為0,b為0,c為0,d為1。,3.4 基本運(yùn)算符和表達(dá)式,邏輯表達(dá)式一般用于控制語(yǔ)句中的條件: 例如: (1) n是小于m的偶數(shù): (2)year是閏年: (能被4整除但不能被100整除或能被400整除),nm&n%2=0,(year%4=0&year%100!=0)|year%400=0,3.4 基本運(yùn)算符和表達(dá)式,3.4.6 條件運(yùn)算符 1、條件運(yùn)算符 ?和: ,它們與三個(gè)操作數(shù)組成三目運(yùn)算。 2、形式為: ? : 3、求值規(guī)則和表達(dá)式的值: 真(非0),求解表達(dá)式2 求解表達(dá)式1 條件表達(dá)式的值 假(0),求解表達(dá)式3,例如: int max, a=5, b=3; max=ab?a:b ab?a:b+1,又如: -a = b+ ? a+ : b+ (a=a-1;)4 = 3(b=b+1;)?a+:b+ a為4 b為4 0 4(b=b+1;) 表達(dá)式值為4 b為5 a值為4,b值為5,條件表達(dá)式的值為4。 4、 優(yōu)先級(jí): 邏輯條件賦值,驗(yàn)證:printf(“%d %dn“,-a=b+?a+:b+,b ); 運(yùn)行結(jié)果:4 5,3.4 基本運(yùn)算符和表達(dá)式,5、 結(jié)合性:自右至左; y = x10 ? x/10 : x0 ? x: -x; 等價(jià)于: y = x10 ? x/10 :(x0? x: -x); 思考:當(dāng)x的值為15時(shí),表達(dá)式的結(jié)果為: 當(dāng)x的值為5時(shí),表達(dá)式的結(jié)果為:,1,5,3.4 基本運(yùn)算符和表達(dá)式,3.4.7逗號(hào)運(yùn)算符: , 形式: 逗號(hào)表達(dá)式1,逗號(hào)表達(dá)式2,逗號(hào)表達(dá)式n 求值規(guī)則: 從左至右依次計(jì)算各表達(dá)式的值; 優(yōu)先級(jí): 最低; 結(jié)合性:自左至右; 表達(dá)式的值:最后一個(gè)表達(dá)式的值。,3.4 基本運(yùn)算符和表達(dá)式,例如: a b y 表達(dá)式 y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10 注意: c語(yǔ)言常用逗號(hào)作為分隔符, 例如: int a=3,b=4,c=5; printf(“%d,%d,%d”,(a,b,c); printf(“%d,%d,%d”,a,(a,b,c),c); 結(jié)果為3,5,5,3.4 基本運(yùn)算符和表達(dá)式,3.4.8 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 強(qiáng)制類型轉(zhuǎn)換:指將表達(dá)式的類型強(qiáng)制轉(zhuǎn)換為指定的類型, 其一般形式為: (類型名)表達(dá)式 其作用:將表達(dá)式的結(jié)果的類型強(qiáng)制轉(zhuǎn)換為類型名所指的類型。 例如 (int)(3.4+2.8) 的值為6 強(qiáng)制類型轉(zhuǎn)換時(shí),得到所需類型的中間變量,而原來(lái)變量的類型不會(huì)改變。,注意:,3.4 基本運(yùn)算符和表達(dá)式,例如: int a=2,b=5; float x=4.4; 則有: 表達(dá)式 結(jié)果 b/a 2 (float)b/a 2.5 (float)(b/a) 2.0 (int)x%a+x 4.4 (int)x%(a+x) 不合法,3.5 c基本語(yǔ)句,c語(yǔ)言的語(yǔ)句可分為以下四類: 簡(jiǎn)單語(yǔ)句(包括輸入/輸出語(yǔ)句) 空語(yǔ)句 復(fù)合語(yǔ)句 流程控制語(yǔ)句,3.5 c基本語(yǔ)句,3.5.1簡(jiǎn)單語(yǔ)句 1. 表達(dá)式語(yǔ)句就是一個(gè)表達(dá)式加上一個(gè)分號(hào)。 如:a+; x=1; 函數(shù)調(diào)用語(yǔ)句由函數(shù)調(diào)用表達(dá)式加分號(hào)構(gòu)成。 printf(“%d”,a); 3. 空語(yǔ)句 用一個(gè)分號(hào)表示,其一般形式為: ;,3.5 c基本語(yǔ)句,c 語(yǔ)言有豐富的標(biāo)準(zhǔn)函數(shù)庫(kù), 可提供各類函數(shù)供用戶調(diào)用,完成預(yù)先設(shè)定好的操作.,#include #include main() int a = 2 , b = 4; float x , y; x = a / 2 + sqrt( b ); /*x=3.0 */ a+ ; /*a=3 */ y = x * a ; /*y=9.0 */ printf(“x=%6.2f, y= %6.2f ”, x, y); ,3.5 c基本語(yǔ)句,常用標(biāo)準(zhǔn)庫(kù)函數(shù)求數(shù)學(xué)函數(shù)值: fabs(x) (求x的絕對(duì)值)、pow(x,y)(計(jì)算x的y次冪)、 sin(x) 、cos(x) 、 exp(x) (求ex ) 、log(x)(求lnx)等。,調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)要注意以下幾點(diǎn): 在程序中要包含相應(yīng)的頭文件 例如: 要使用標(biāo)準(zhǔn)的輸入/輸出函數(shù)printf()等需包含頭文件 #include 要使用數(shù)學(xué)函數(shù)sqrt()等需包含頭文件 #include 調(diào)用規(guī)則: 函數(shù)名(參數(shù)表),3.5 c基本語(yǔ)句,3.5.2 復(fù)合語(yǔ)句 用一對(duì)花括號(hào)將多條語(yǔ)句組合在一起,在語(yǔ)法上相當(dāng)于一 條語(yǔ)句。 1、一般形式: 內(nèi)部數(shù)據(jù)說(shuō)明; 語(yǔ)句1; 語(yǔ)句n; 注意: (1)在復(fù)合語(yǔ)句中說(shuō)明的變量,是局部變量, 僅在復(fù)合語(yǔ)句中有效。 (2)復(fù)合語(yǔ)句的 之后,不能有分號(hào)。,3.5 c基本語(yǔ)句,復(fù)合語(yǔ)句(程序塊) 示例【例3.3】 main( ) int x=1; int x=2; int x=3; printf(“x=%d”, x); printf(“x=%d”, x); printf(“x=%d”, x); ,3.6 數(shù)據(jù)的輸出,1格式輸出函數(shù) printf( ) 格式: printf( “”,輸出項(xiàng)1,輸出項(xiàng)2, ,輸出項(xiàng)n ); 例:printf( “x=%d,y=%fn” , x , x+3 );,格式控制 (用雙引號(hào)括起來(lái),控制輸出項(xiàng)的格式和輸出一些提示信息 ),輸出表列 (用逗號(hào)分隔的數(shù)據(jù)組,可選項(xiàng)),格式控制分為兩個(gè)部分: 普通字符原樣輸出(轉(zhuǎn)義字符按表3-4輸出) 格式說(shuō)明%+格式字符 (替換輸出),格式說(shuō)明的一般形式: % - 0 m.n l(或h) 格式字符 - 左對(duì)齊輸出 0 數(shù)字前的空位填0 m 輸出域?qū)挘ㄩL(zhǎng)度,包括小數(shù)點(diǎn)) 如數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格 如數(shù)據(jù)的位數(shù)大于m,則按實(shí)際位數(shù)輸出 n 輸出精度(小數(shù)位數(shù)) l 或 h 長(zhǎng)度修正符 l 長(zhǎng)整型及雙精度 注:long型的數(shù)據(jù)宜用%ld,double型宜用%lf h 表示短整型 如 %hd %hx,3.6 數(shù)據(jù)的輸出,格式字符(規(guī)定了輸出的數(shù)據(jù)形式): %d 輸出十進(jìn)制整數(shù) %x 以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù) %o 以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù) %u 以無(wú)符號(hào)十進(jìn)制數(shù)形式輸出整數(shù) %f 輸出小數(shù)形式浮點(diǎn)數(shù)(double型用%lf ) %s 輸出字符串 %c 輸出單字符,3.6 數(shù)據(jù)的輸出,【例1】求運(yùn)行結(jié)果。 main() int a=30; printf(“%d,%o,%x,%u,%c“,a,a,a,a,a); ,結(jié)果: 30,36,1e,30,,結(jié)論: 格式字符與對(duì)應(yīng)輸出項(xiàng)類型要一致,否則正確的運(yùn)算結(jié)果不能得到正確的顯示結(jié)果。,3.6 數(shù)據(jù)的輸出,【例】若float y=1234.9999;printf(“%d”,y);則輸出結(jié)果為何?,printf函數(shù)使用注意事項(xiàng): 在格式控制字符串中,格式說(shuō)明與輸出項(xiàng)從左到右在類型上必須一一對(duì)應(yīng)匹配。 在格式控制字符串中,格式說(shuō)明與輸出項(xiàng)的個(gè)數(shù)應(yīng)該相同。 如果要輸出百分號(hào)(%),則在格式控制串中用兩個(gè)連續(xù)的百分號(hào)(%)來(lái)表示。 在調(diào)用printf函數(shù)時(shí),輸出項(xiàng)有自增(自減)運(yùn)算時(shí),計(jì)算輸出項(xiàng)的順序從右至左。,3.6 數(shù)據(jù)的輸出,【例】 .格式輸出函數(shù)示例程序 #include main() int i = 97; char ch = a; printf (“i=%d,%cn”, i, i ); 輸出結(jié)果: i =97,a 兩個(gè)輸出項(xiàng)都是變量i , 但以不同的格式輸出,一個(gè)是輸出的整型數(shù),一個(gè)輸出的是字符a. 其格式是由%d與%c控制的.,3.6 數(shù)據(jù)的輸出,字符輸出函數(shù) 格式: putchar(c) 其中 c為字符型或整型的常量、變量及其表達(dá)式 功能: 每次向屏幕輸出一個(gè)字符供顯示。,【例】求以下程序運(yùn)行結(jié)果 #include main() char x=a; putchar(x); putchar(b); putchar(x+2); putchar(b+2); ,結(jié)果:abcd,1格式輸入函數(shù)scanf() 格式: scanf( “”,,3.7 數(shù)據(jù)的輸入,格式控制 (需要輸入數(shù)據(jù)的類型),地址列表 (簡(jiǎn)單變量要用&開(kāi)頭),格式說(shuō)明的一般形式: % * m l (或h) 格式字符 & 求地址的運(yùn)算符 &a 表示該變量所占空間的首地址 * 抑制字符(“虛讀”,即讀入數(shù)據(jù)后不送給任何變量),注意: scanf( )函數(shù)沒(méi)有輸出功能(即不會(huì)向屏幕顯示任何字符) 也不能規(guī)定小數(shù)位數(shù)(m.n) 典型錯(cuò)誤: scanf( “a=%d,b=%d,c=%d n”,3.7 數(shù)據(jù)的輸入,正確語(yǔ)句: printf( “ input a,b,c=“); scanf( “%d, %d, %d”, ,scanf()注意事項(xiàng),字符輸入函數(shù) 格式: getchar( ) 功能: 從鍵盤上讀入一個(gè)字符,getchar( )包含在stdio.h中。,3.7 數(shù)據(jù)的輸入,【例一】 #include main() char a,b; a=getchar(); b=getchar(); printf(“a=%c,b=%cn”,a,b); 運(yùn)行時(shí),如果 輸入:student 輸出結(jié)果為 a=s,b=t,例3.13 輸入圓的半徑,輸出圓的周長(zhǎng)和面積。 分析: 1.定義實(shí)型變量r、l、s用于存放半徑、周長(zhǎng)、面積; 2.調(diào)用輸入函數(shù),輸入r: 3.分別利用周長(zhǎng)公式和面積公式求出l、s; 4.調(diào)用輸出函數(shù)輸出l、s。,3.8 程序舉例,例3.10輸入圓的半徑,輸出圓的周長(zhǎng)和面積,#include void main() float r,l,s; scanf(“ %f ”,&r); /*輸入一個(gè)浮點(diǎn)數(shù)據(jù),存入地址&r */ l = 2 * 3.14159 * r; /*計(jì)算周長(zhǎng),賦值給l */ s = 3.14159 *r * r; /*計(jì)算面積,賦值給s */ printf(“n l=%8.4f”,l); /*周長(zhǎng)占8個(gè)字符寬,4位小數(shù)*/ printf(“n s=%8.4f”,s); /*輸出面積,數(shù)據(jù)共占8個(gè)字符寬,4位小數(shù)*/ ,3.8 程序舉例,3.8 程序舉例,例3.12從鍵盤輸入一個(gè)學(xué)生的3門課程的成績(jī),求其平均并輸 出,保留一位小數(shù)。,例3.11從鍵盤輸入一個(gè)小寫(xiě)字母,用大寫(xiě)形式輸出該字母。,例3.13 從鍵盤輸入兩個(gè)整數(shù)給兩個(gè)變量x和y,交換變量x和y的值,然后輸出。,程序流程控制,順序結(jié)構(gòu)程序設(shè)計(jì),順序結(jié)構(gòu):自頂向下順序執(zhí)行語(yǔ)句 例:交換兩個(gè)數(shù)的值,before :x=3,y=4; after :x=4,y=3;,#include main() int x=3,y=4,t; printf(“before :x=%d,y=%dn”,x,y); t=x; x=y; y=t; printf(“after:x=%d,y=%dn”,x,y); ,例:從鍵盤輸入一個(gè)小寫(xiě)字母,輸出其對(duì)應(yīng)的大寫(xiě)字母及其相應(yīng)的ascii碼值。 程序如下: #include main() char ch1,ch2; ch1=getchar(); ch2=ch1-32; printf(“n letter:%c,ascii=%d“,ch1,ch1); printf(“n letter:%c,ascii=%d“,ch2,ch2); ,scanf(“%c”,運(yùn)行結(jié)果為: a letter:a,ascii=97 letter:a,ascii=65,第四章 選擇結(jié)構(gòu)程序設(shè)計(jì),if語(yǔ)句: 1.單分支if語(yǔ)句 2.雙分支if語(yǔ)句 3.多分支if語(yǔ)句,選擇結(jié)構(gòu)有兩種:,switch 語(yǔ)句,按給定條件進(jìn)行判斷,按判斷后的不同情況進(jìn)行不同處理。,形式二(一般形式): 格式:if (expression) statement1 else statement2 執(zhí)行過(guò)程:,if語(yǔ)句常用的兩種形式 形式一(缺省形式): 格式:if (expression) statement 執(zhí)行過(guò)程:,例:if (xy) printf(“%d”,x);,例:if (xy) max=x; else max=y;,if語(yǔ)句(條件分支語(yǔ)句),【例4-1】在兩個(gè)數(shù)中取大數(shù)。,main() int num1,num2,max; printf(“n input two numbers: “); scanf(“%d%d“, ,main() int num1,num2; printf(“n input two numbers: “); scanf(“%d%d“, ,如:if(a=b,else要與if配對(duì)使用 if后面的表達(dá)式類型任意,語(yǔ)句可以是復(fù)合語(yǔ)句 同一個(gè)條件的多種表達(dá)方式 如:if(x) if(x!=0) if(!x) if(x=0),例 考慮下面程序的輸出結(jié)果: #include main() int x,y; scanf(“%d,%d”, ,compile error!,說(shuō)明:,錯(cuò)誤信息: misplac

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論