


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE3C語言程序設(shè)計模塊一認(rèn)識C語言能力標(biāo)準(zhǔn):能力標(biāo)準(zhǔn):了解C語言的作用;熟悉C程序結(jié)構(gòu);掌握TC知識點:C語言是人和計算機(jī)交流的一種工具;C語言程序的執(zhí)行過程。1.C語言的發(fā)展C一種計算機(jī)語言,誕生于1972年,是由美國電話電報公司貝爾實驗室的Dennis.MRitchieC語言誕生至今已30ALGOL(1960)-CPL(1963年—1970年C(1972年)的演變過程。人機(jī)交流解釋編譯方式。用C語言進(jìn)行人和計算機(jī)交編譯:編程首先人將和計算機(jī)交流的內(nèi)容按要求,用C語言寫成任務(wù),如要計算機(jī)計算#include #include main(){float k=5;m=1;for(j=1;j<=k;j++)m=m*j;printf(“%f!=%f\n”,k,m);}上述用C語言表示的任務(wù),稱為程序.所謂程序指由一系指令組成,完成某個具體功能的指令集合。編譯計算機(jī)本身是一堆零件,它只知道高低電平,對應(yīng)到二進(jìn)制就是“0”和“1"這兩個符和“1機(jī)器語言程序編譯.連接為了方便程序的編寫,專業(yè)人員已經(jīng)將許多常用的功能寫成了固定的程序,并已進(jìn)行編接.執(zhí)行經(jīng)過上述三步之后生成的機(jī)器語言程序TurboC目標(biāo)程序把目標(biāo)程序交并把執(zhí)行的結(jié)果輸出在輸出設(shè)備上,供人來閱讀,從而實現(xiàn)人機(jī)交流.編程.c編譯.obj連接.exe執(zhí)行件擴(kuò)展名是.c。obj。exe.編程.c編譯.obj連接.exe執(zhí)行鍵盤輸入輸出結(jié)果圖圖1.1人機(jī)交流的過程語言程序的基本結(jié)構(gòu)下面通過幾個C語言程序的實例,介紹C語言程序的基本構(gòu)成和書寫格式?!纠?-1】已知圓的半徑,請編程求圓的面積./*/*求圓的面積*/#include main(){float r=5.365;s=3.14*r*r;/*r,s*//*給半徑賦值*//*計算面積*/printf(“s=%f\n”,s); 輸出面積*/}【例1-2】請編程求兩個整數(shù)中的大數(shù)。/*/*求兩個整數(shù)中的大數(shù)#include <stdio.h>main(){int num1,num2,m;/*num1,num2m*/scanf(“%d%d”,&num1,&num2); /*輸入兩個整數(shù)*/m=max(num1,num2); /*調(diào)用max函數(shù)求大數(shù)存入m變量printf(“max=%d\n”,m); /*輸出大數(shù)*/}/*用戶設(shè)計的函數(shù)max*/intmax(intx,inty){if(x>y)return x; /*比較返回大數(shù)*/elsereturn y;}結(jié)合以上示例,可見C語言程序由以下幾部分組成:C每個函數(shù)完成相對獨立的功能,函數(shù)是C語言程序的基本模塊單元。main和max是函數(shù)名,x,y是函數(shù)max的形式參數(shù);一個C語言程序總是從main函數(shù)執(zhí)行結(jié)束,程序執(zhí)行即結(jié)束;C語言程序的開頭部分一般是編譯預(yù)處理命令(命令)語句。語言程序的書寫格式C語言的語句以分號“長語句也可分在多行書寫;,者一個水平制表符;4.注釋由“/*”開始,由“*/”結(jié)束;{”括起來;。人機(jī)交流過程的演示(TC集成調(diào)試環(huán)境的使用)TurboC是美國Borland公司的產(chǎn)品,Borland1987TurboC1.0TurboC20則是該公司1989,TurboC2。0com(數(shù)據(jù)、代碼、堆棧處在同一64K內(nèi)存中)文件,還可對數(shù)學(xué)協(xié)處理器(8087/80287/80387TurboC0C5。1 TurboC2.0基本配置要求TurboC2.0可運行于IBM—PCXT,ATIBM兼容機(jī)。此時要求DOS2.0448K的RAM,可在任何彩、單色80也可進(jìn)行浮點仿真,這將加快程序的執(zhí)行。TurboC2.0的啟動DOSTurboC。0安裝完畢,將在C盤根目錄下建立一個TC,TC下還建立了LIB和INCLUDE,LIB子目錄中存放庫文件,INCLUDETurboC。0TC子目錄下鍵入TC并回車即可進(jìn)入TurboC2.0.TurboC。0窗口介紹TurboC2.01.2TC其中頂上一行為TurboC2.0考行。這四個窗口構(gòu)成了TurboC2.0的主屏幕,以后的編程、編譯、調(diào)試以及運行都將在這個主屏C語言程序的編輯編輯一個新文件如果要輸入或編輯一個新的C語言程序,應(yīng)該先選File菜單,然后選擇子菜單new,編輯窗口被清主菜單編輯區(qū)信息窗口參考行圖1.2TC工作窗口空,光標(biāo)定位在左上角LineColNONAM。CInsertFile菜單的子菜單Save,1.3c”不可省略。一旦用新的文件C”被改為新的文件名。編輯一個已存在的文件如果要重新編輯一個已經(jīng)存在的文件,應(yīng)選擇File菜單下的子菜單Load,這時會彈出一個類似于圖1.3的對話框,當(dāng)用戶輸入要打開的文件名和路徑后,即打開了此文件,這時用戶就可對其進(jìn)行重新編輯并保存.編輯窗口這時會顯示打開的文件名。重命名一個文件如果要對正在編輯的文件重命名,請選擇File菜單下的子菜單Writeto。3.5。5 C語言程序的編譯和連接.在TurboC進(jìn)行編譯、也可以將編譯和連接合起來作;4圖1.3圖1.4行,也可以一次對多個文件模塊的程序進(jìn)行編譯、連接和運行。1.對單文件程序的編譯和連接編譯選擇CompileComplieto譯后,目標(biāo)文件將保存在當(dāng)前工作目錄或配置文件TCCONFIG.TC所指定的輸出目錄中.連接有了目標(biāo)文件后,還不能直接運行,還要將目標(biāo)文件與系統(tǒng)提供的庫函數(shù)和包含文件等連接成一個可執(zhí)行文件(擴(kuò)展名為。exe)才,能運行這個.exe文件.選擇Compile菜單的子菜單LinkEXEfilTCCONFIGTC成一個可執(zhí)行文件。應(yīng)注意的是,必須是在編譯沒有錯誤的情況下才能進(jìn)行連接。一次完成編譯和連接選擇Compile菜單下的子菜單MakeEXEfie即可一次完成編譯和連接,從而在當(dāng)前工作目錄或者配置文件TCCONFIG.TC所指定的輸出目錄中生成一個目標(biāo)文件和一個可執(zhí)行文件.實現(xiàn)菜單的功能。如進(jìn)行存盤操作,需要選擇菜單的子菜單F2鍵,相當(dāng)于進(jìn)行了上面的選擇。對多個程序文件進(jìn)行編譯和連接TurboC提供了多個程序文件進(jìn)行編譯和項目文件中包含這些文件,然后將該項目文件交付編譯和連接,就可以得到可執(zhí)行文件了。具體步驟如下:1)在TurboC.pr。4SaveWriteopr,以表示建立的是項目文件。3)建立項目。選擇Projec菜單的子菜單Projectnae輸入剛建立的項目文件名。CompileMakeEXEMakeEXEProject中指定了項目文件,則系統(tǒng)優(yōu)先編譯該項目文件,而不是編譯編輯窗口中的文件。應(yīng)特別注意,在處理完一個多程序文件的編譯和連接后,應(yīng)及時將清空,否則就會在編譯連接時仍然把項目文件當(dāng)做編譯對象,而不是編譯編輯窗口中的源文件。5編譯和連接過程中的顯示信息圖1.5(1)15所示,窗口最上方的Compiling一行表示編譯的主文件是HELLO.C;第二行正在編譯的是正在編輯的文件HELLO。C;接下來表示220,警告0個,錯誤1個;下面一行表示占用的存儲空間為299KB成功(Success)或者有錯誤(Errors),請用戶按任意鍵繼續(xù)。需要解釋的是,只有編譯沒有錯誤時,才可以進(jìn)行連接,否則仍需要進(jìn)行編輯,再編譯。連接過程中出現(xiàn)的信息如圖1.6,,0,才表示連接成功,并且最下面也有文字提示Success.圖1.65。6 C語言程序的運行.下幾種方法:TC的集成環(huán)境中運行6PAGEPAGE21選擇Run菜單下的子菜單Run,即可運行程序。DOS環(huán)境下運行在DOS提示符下,輸入可執(zhí)行文件的文件名和路徑,即可運行程序。WINDOWS環(huán)境下運行(1)選擇WINDOWS(2).5.7 TC集成環(huán)境中查看運行結(jié)果在TC集成環(huán)境中有一個用戶屏幕Screen),換到用戶屏幕,選擇Run菜單下的子菜單UserScreen,或用快捷鍵Alt+F5屏幕按任意鍵即可進(jìn)入編輯窗口。語言學(xué)習(xí)要求;勤于思考,多查閱資料;多進(jìn)行實踐;具有團(tuán)隊協(xié)作精神;分組學(xué)習(xí)。實驗一TC集成調(diào)試環(huán)境的初識實驗?zāi)康腡C集成調(diào)試環(huán)境;TCC語言程序的過程;C語言程序的組成及書寫格式。7。2實驗要求普通微機(jī);TC集成調(diào)試環(huán)境.7.3實驗內(nèi)容及步驟TC集成調(diào)試環(huán)境的熟悉啟動TC集成調(diào)試環(huán)境;熟悉各菜單項;1。3熟悉各功能鍵;1.4熟悉編輯窗口各部分的意義;1。5退出TC集成環(huán)境。1。1】程序并記錄相關(guān)信息2。1輸入【例1.1】程序,輸入時省略注釋部分.源程序:2。2用program1.c文件名保存文件在自己的目錄下。23編譯program1c源程序文生成program1obj目標(biāo)文該步可能需要反復(fù)進(jìn)行編譯提示信息: 修改情況記錄:錯誤原因分析:連接程序,生成可執(zhí)行文件。exe(2。3和。4兩步可能需要反復(fù)進(jìn)行連接提示信息: 修改情況記錄:錯誤原因分析:信息.
執(zhí)運)program1。exe運行結(jié)果:2。6修改【例1。1】程序,求半徑為6.2圓的面積,重復(fù)2.1~2.5步驟,并記錄每一步相關(guān)1.2】程序并記錄相關(guān)信息program2。c2.。5!,并調(diào)試該程序,記錄每一步相關(guān)信息.7.4思考題C語言程序調(diào)試的步驟。為什么程序修改后需要重新進(jìn)行編譯、連接和運行?TC為什么稱為集成調(diào)試環(huán)境?課后練習(xí)(要求所有程序必須上機(jī)運行通過)模仿講議中C.模仿講議中C語言程序,編寫程序求兩個整數(shù)中的小數(shù)。上機(jī)運行下列程序,并記錄輸出結(jié)果。#include #include main(){printf(“Hello C program world!\n”);printf(“I am an university student}3題的程序,編程輸出下列圖形。**** *******4題的程序,編程輸出下列圖形(可選做)** ** **********C?其程序的基本單位是什么?補(bǔ)充閱讀9。1計算機(jī)語言的發(fā)展過程第一代語言-———機(jī)器語言(低級語言)機(jī)器語言是由0、1組成的機(jī)器指令集合,是面向機(jī)器的語言.要使計算機(jī)按人的意圖工作,就必須使計算機(jī)懂得人的意圖,接收人向它發(fā)出的命令和信息。人要和機(jī)器交換信息就要解決一個“語言”的問題。計算機(jī)并不懂人類的語言(無論是中文或英文),例如,我們要寫y=2x+30和11,01讓計算機(jī)執(zhí)行各種不同的操作。01,所以,通常稱之為機(jī)器語言.但是,對于使用計算機(jī)的人來說,這是十分難懂的語,,,,人們研究了一種匯編語言。第二代語言-—--匯編語言(低級語言)匯編語言也叫符號語言,它是把用二進(jìn)制數(shù)表示的指令,用一些符號來表示,例如,用表示操作的英文縮寫來代替匯編語言指令代碼。下面是一段匯編語言代碼。LDAA取出AADDBA和B相加STAC存入CPRINTC打印CSTOP停止就叫匯編語言。像LDAADD記符用匯編語言編寫的程序,稱為匯編語言程序。.,匯編后產(chǎn)生的機(jī)器代碼稱為目標(biāo)程序。翻譯可由人手工完成,也可用計算機(jī).匯編過程如圖1。7所示。匯編程序(事先放入計算機(jī))匯編程序(事先放入計算機(jī))匯編語言機(jī)器指令(輸入)源程序(匯編)目標(biāo)程序(執(zhí)行)結(jié)果輸出圖1.7匯編過程匯編語言使程序設(shè)計工作前進(jìn)了一大步,但是仍然存在很多缺點:第一,不便于我們求解問題過程的描述,如一個數(shù)學(xué)公式,匯編語言的表達(dá)式與人們的習(xí)慣表達(dá)形式差距很大;第它仍然是面向.第三代語言--——算法語言(高級語言)算法語言是更接近人的自然語言和數(shù)學(xué)表達(dá)式的一種語言,由表達(dá)不同意義的“關(guān)鍵字"和“表達(dá)式”按照一定的語法語義規(guī)則組成、完全不依賴機(jī)器的指令系統(tǒng)。這樣的高級語言為人們提供了很大的方便,,,BASICALGOLCOBOLC等都是高級語言。計算機(jī)不能直接理,,一種叫解釋方式,另一種叫編譯方式。源程序輸入計算機(jī),編譯程序就把源程序整個翻譯成用機(jī)器指令表示的目標(biāo)程序,然后執(zhí)行該目標(biāo)程18所示。編譯程序(事先放入計算機(jī))編譯程序(事先放入計算機(jī))高級語言機(jī)器指令(輸入)源程序(匯編)目標(biāo)程序(執(zhí)行)結(jié)果輸出圖1.8編譯過程,翻譯,譯出一句立即執(zhí)行,即邊解釋邊執(zhí)行。其過程如圖19所示。C語言采用的是編譯方式.地使用高級語言編寫程序進(jìn)行各種科學(xué)計算和事務(wù)處理,并且由于采用編譯(解釋)程序代替人工翻目前,世界上已有100多種高級語言,比較流行的有幾十種之多,比如:Translator的縮寫,1954.COBOL(CommonBusinessLanguage的縮寫).PASCAL語言是最早出現(xiàn)的結(jié)構(gòu)化語言,適用于計算機(jī)教學(xué)。PL/1.Ada適用于大型軟件工程。C適用于編寫系統(tǒng)軟件。BASIC語言是一種簡單會話式語言,在世界上應(yīng)用最廣泛。第四代語言——--非過程化語言(高生產(chǎn)率語言)非過程化語言就是目前比較流行的面向?qū)ο笳Z言,該語言只需要編程人員對問題進(jìn)行描述。比如C++/VisualC++,JAVA語言等。解釋程序(事先放入計算機(jī))解釋程序(事先放入計算機(jī))高級語言計算機(jī)執(zhí)行(輸入)源程序(解釋并執(zhí)行)結(jié)果輸出圖1.9解釋過程目前也出現(xiàn)了智能化語言,主要用于人工智能等領(lǐng)域。比較有代表性的有LISP語言和PROLOG語言。9。2C語言的特點C語言是一種出現(xiàn)比較晚的高級語言,它吸取了早期高級語言的長處,克服了某些不足,形成了自己的風(fēng)格和特點。總的來說,C語言是一種簡潔、功能強(qiáng)大、可移植性好的結(jié)構(gòu)化程序設(shè)計語言。C語言具有如下特點:C語言簡潔、緊湊;C;C語言具有豐富的數(shù)據(jù)類型;C;C語言可以直接對硬件進(jìn)行操作;雖然C語言具有靈活簡煉的特點,但在有些方面也存在不足,了解其不足有助于使用,避免出現(xiàn)錯誤。其不足簡單概括如下:運算符多,難于記憶;C在許多情況下不做檢查,對類型要求不夠嚴(yán)格;C判定越界,這樣容易造成數(shù)據(jù)存儲方面的混亂??傊?C語言有誘人的優(yōu)點,也有值得注意的不足,使用時應(yīng)特別加以注意。模塊二C語言程序設(shè)計入門能力標(biāo)準(zhǔn):能力標(biāo)準(zhǔn):1.2.知識點:1.2.3.能編寫、分析基本的C語言程序;熟練掌握程序的多種調(diào)試方法。基本數(shù)據(jù)類型;各種運算符及表達(dá)式;三種基本的程序結(jié)構(gòu)。案例一一個經(jīng)典C語言入門程序—helloworld。c教學(xué)目的:C語言程序結(jié)構(gòu);printf函數(shù)輸出字符串的功能;clrscr函數(shù)的功能與使用;熟悉用編譯預(yù)處理命令#include命令包含頭文件。/*Helloworld!*/#include main(){printf(“Helloworld!\n”);}Cmainmain/*Helloworld!*/#include main(){printf(“Helloworld!\n”);}一、案例分析“/*Helloworld!*/”行是一個注釋行,用來說明該段程序的功能。一般如果在程序的開頭,.“#include〈stdio。h#include”是編譯預(yù)處理命令,其作用是將一個C語言源程序文件的全部內(nèi)容包含到當(dāng)前這段程序中stdio.h>include#include#include命令行應(yīng)放在程序的開頭位置,故有時也把被包含的文件稱為頭文件。h”作為擴(kuò)展名(后綴,如stdih,“?!被蚱渌臄U(kuò)展名。,系統(tǒng)先到存放C庫函數(shù)頭文件文件,若找不到,再按標(biāo)準(zhǔn)方式查找。一般地,如果是調(diào)用庫函數(shù)而用#include命令來包含相關(guān)的頭(通常存放在當(dāng)前目錄中則用雙引號。stdioh文件是C語言的標(biāo)準(zhǔn)輸入輸出頭文件printf函數(shù)、scanf函數(shù)、getchar函數(shù)、putchar函數(shù).[函數(shù)返回類型]{函數(shù)體;}函數(shù)名([形式參數(shù)定義])/*函數(shù)的首部*//*函數(shù)的實現(xiàn)部分*/”為止是主函數(shù)main(首部,main是一個特殊的函數(shù),它的首部標(biāo)準(zhǔn)格式是[in]mai([intargc,int*arg[,“in”說明main函數(shù)的返回值是整型maiintargc,int*argv]是main函數(shù)的形式(”是函數(shù)定義不可缺少的部分。在目前我們的使用中只需要使用main函數(shù)最簡單的定義形式,即“main[函數(shù)返回類型]{函數(shù)體;}函數(shù)名([形式參數(shù)定義])/*函數(shù)的首部*//*函數(shù)的實現(xiàn)部分*/本例中的mainprintfHelloworl!\”Helloworld二、C語言函數(shù)簡介C,,用戶自定義函數(shù)需要編程者自己編寫。比如我們前面見過的printf.任何一個函數(shù)都需要先定義,然后被調(diào)用。函數(shù)的定義同上述main函數(shù)的定義,函數(shù)的調(diào)用格式如下:函數(shù)名(實際參數(shù))對于庫函數(shù)printf,其定義包含在stdio.h頭文件中,因此我們要使用它時,需要用#include命令把stdio。h文件包含到當(dāng)前的程序中,然后才能調(diào)用printf函數(shù).printf函數(shù)的一種調(diào)用格式如下:printf(“字符串")world!,顯world!.”字符的作用是換行,即下一個printf字符串123studen三、顯示學(xué)生管理系統(tǒng)的主菜單在未講到C,.****student management ****student management system**********InputstudentrecordsOutputstudentrecordsInsertanewstudentDeleteastudentmenu********FindastudentonnameornumberSortonscoreSavetofileImportfile0.ExitPleaseinputyourchoice(0~8):*************************************************根據(jù)上述要求,我們需要編程輸出這樣的菜單,通過我們已學(xué)的知識,可以寫一個主函數(shù),函數(shù)體就是用printf輸出每一行即可.程序如下:/*/*學(xué)生管理系統(tǒng)輸出主菜程序*/#include<stdio.h>main(){printf(“****student management systemprintf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*InputstudentrecordsOutputstudentrecordsInsertanewstudentDeleteastudentmenu****\n”);*\n”);*\n”);*\n”);*\n”);FindastudentonnameornumberSortonscoreSavetofileImportfile0.ExitPleaseinputyourchoice(0~8):*\n”);*\n”);*\n”);*\n”);*\n”);*\n”);printf(“*******************************************\n”);}通過這個實例我們可以看到,在實際應(yīng)用中,要輸出系統(tǒng)菜單,主要是調(diào)用printf函數(shù),一行一行輸出字符串。四、clrscr函數(shù)如果在TC,,可以看到顯示器上連續(xù)重復(fù)顯示主菜單,主菜單總是顯示在屏幕的上方。為此我們需要在主菜單顯示前,先擦除原來的clrscr函數(shù),它的定義在conio.h頭文件中,因此將前述的程序作如下修改如下():斜體部分是新增加的語句行include<conih”行是將clrscr函數(shù)的定義文件包含進(jìn)當(dāng)前clrsc(行是通過調(diào)用庫函數(shù)clrscr,也不需要返回值。五、實驗二printfclrscr函數(shù)實驗?zāi)康倪M(jìn)一步熟悉TCCC掌握用printfclrscr/*/*學(xué)生管理系統(tǒng)輸出主菜程序*/#include<stdio.h>#include<conio.h>main(){clrscr();printf(“****student management systemprintf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*printf(“*InputstudentrecordsOutputstudentrecordsInsertanewstudentDeleteastudentmenu****\n”);*\n”);*\n”);*\n”);*\n”);FindastudentonnameornumberSortonscoreSavetofileImportfile0.ExitPleaseinputyourchoice(0~8):*\n”);*\n”);*\n”);*\n”);*\n”);*\n”);printf(“*******************************************\n”);}實驗內(nèi)容及步驟1.調(diào)試“Helloworld!"程序,并做以下記錄。程序:編譯結(jié)果: 修改記錄:運行結(jié)果:2。連續(xù)運行三次上述程序,記錄輸出結(jié)果。運行結(jié)果:如果去除print“Helloworl!\n\n2.1.1程序:編譯結(jié): 修改記錄:輸出結(jié)果:輸出結(jié)果:6。調(diào)試添加clrscr函數(shù)后的“顯示學(xué)生管理系統(tǒng)主菜單"程序,連續(xù)運行三次,記錄結(jié)果并與5運行結(jié)果比較,分析輸出結(jié)果不同的原因。輸出結(jié)果:7。編程輸出下圖.**** ******程序:編譯結(jié)果:修改記錄:輸出結(jié)果:5。3思考題(1)clrscr函數(shù)有沒有將屏幕全部擦干凈?為什么有時屏幕的下部擦不干凈?六、習(xí)題編程輸出下列圖形。8888888888888888(a)8888888888888888(b)8888888888(c)88888888(d)請編程輸出下列表頭。********常州輕工職業(yè)技術(shù)學(xué)院學(xué)生成績表********學(xué)號姓名班級語文數(shù)學(xué)英語政治計算機(jī)總分名次學(xué)號姓名班級語文數(shù)學(xué)英語政治計算機(jī)總分名次案例二求任意兩個數(shù)之和(差、積、商)教學(xué)目的:掌握整型和實型變量的定義;掌握整型和實型變量的數(shù)據(jù)范圍;掌握用scanf掌握用printfC數(shù)整型實型,在程序編寫上有所區(qū)別整型:/*/*求兩個整數(shù)的和*/#include<stdio.h>#include<conio.h>main(){intnum1,num2,sum;clrscr();sum=0;/*定義三個整型變量*//*清除屏幕*//*和的初值置為0*/printf(“Pleaseinputtwointegers:”);顯示提示字符scanf(“%d”,&num1); /*輸入第一個整數(shù)*/scanf(“%d”,&num2); /*輸入第二個整數(shù)*/sum=num1+num2; /*求兩個整數(shù)的和,并存入變量sum中printf(“num1andnum2is:%d\n”,sum); /*輸出和值*/}一、案例分析上述程序的功能是通過鍵盤輸入兩個整數(shù),數(shù)?!癷ntnum1,num2,sum;”行根據(jù)注釋可知是定義了三個整型的變量。變量就是如同數(shù)學(xué)中用到的、y等,可以改變它們的值,在C,且第一個符號不能是數(shù)字。如“_sum,num,score"等都是合.123,-7,34.6,—0.76等都是常量,前兩個稱為整型常量,后兩個稱為實型常量。整型變量的定義C語言中整型變量又分為基本整型int、短整型shortint或shor、長(longintlong)(unsignedunsignedshortint/unsignedunsignedlongint/unsigned如:intnum1,num2,sum; 表示定義了三個基本的整型變量;shorta;或者shortint;表示定義了短整型變量a;longint;或者long;表示定義了長整型變量c;unsingedint表示定義了基本的無符號整型變量各種整型變量在不同的計算機(jī)機(jī)型中存放的數(shù)的范圍不同,也即表示數(shù)所用的字節(jié)數(shù)不同,見表2-1.表2-1 整型變量所占用字節(jié)數(shù)和數(shù)的范圍數(shù)據(jù)類型數(shù)據(jù)類型int所占字節(jié)數(shù)(二進(jìn)制位數(shù))2(16)數(shù)的范圍-32768~32767即shortint/short2(16)(215-1)-3276~32767即—21(15—1)longint/long4(32)—2147483648~2147483647即—231~(231—1)unsignedint2(16)0~65535即(0~216-1)unsignedshortint/unsignedshort2(16)0~65535即(0~216—1)unsignedlongint/unsignedlong4(32)04294967295即0(232-)“sum=0;”行是給存放和值的變量賦初值0?!皃rint(“Pleaseinputtwointegers:”;Pleaseinputtwointegers”,以提示用戶輸入兩個整數(shù)。num1中。scanf函數(shù)scanf,scanf義包含在stdioh.scanf函數(shù)調(diào)用格式scanf(格式串,地址列表)scanf式串是由“%”開始,其后跟不同的類型格式符。具體格式符見表2—2.表2-2 scanf函數(shù)的格式符格式符格式符d,iuoX,xcs說明fe輸入有符號十進(jìn)制整數(shù)輸入無符號十進(jìn)制整數(shù)輸入無符號十六進(jìn)制整數(shù)(大小寫作用相同)輸入單個字符輸入實數(shù),可以是小數(shù)形式及指數(shù)形式與f作用相同,可以互換“&num這個地址就是變量num1在內(nèi)存中分配的存儲單元的首地址“scanf,&numscan(&num1行的作用等待用戶從鍵盤給變量num2輸入值。上述兩條語句也可合并為一條語句scanf%d%d"&num,&num;<tab〉進(jìn)行分隔。sum=num1+num”行是求num1和num2并把和存入變量sum中。andnum2is:sum的值這里我們見到了printf函數(shù)的第二種調(diào)用形式:printf(“控制字符串”,輸出項列表)格式串printf,printf2—3。表2-3 printf函數(shù)的格式符格式符格式符d,iu說明以帶符號的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號)以無符號十進(jìn)制形式輸出整數(shù)ooX,xcsfE,eG,g以八進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0)(不輸出前導(dǎo)符0x則在輸出十六進(jìn)制數(shù)的a—f時以小寫形式輸出;用X時則以大寫字母輸出以字符形式輸出,只輸出一個字符輸出字符串以小數(shù)形式輸出單、雙精度型數(shù),隱含輸出6位小數(shù)以指數(shù)“e"或“E”形式輸出實數(shù)(如1。2e+02或1。2E+02)選用%f或%e格式中輸出寬度較短的一種格式,0,用G數(shù)形式輸出時,則指數(shù)以大寫表示普通字符串在printf原樣顯示。如andis:%d,sumnum1andnum2inum1andnum2idnum1andnum2is,然后輸出sum%d表示輸出整型數(shù)據(jù)項。8.案例運行結(jié)果回車62回車輸出結(jié)果:num1andnum2is:96二、應(yīng)用舉例上述案例是求兩個整型數(shù)據(jù)的和,如果要求的是兩個實數(shù)的和,應(yīng)如何編寫程序呢?【例2-1】請編程求兩個實數(shù)的和.分析C實數(shù)的和,同樣也需要事先定義實型變量,然后再求和。其編程方法同求整數(shù)和一樣,只是現(xiàn)在的對象是實數(shù)。實型變量的定義Cfloa(doubl。float;表示定義了單精度類型變量;表示定義了雙精度類型變量型數(shù)據(jù)占用的存儲字節(jié)數(shù)和表示的數(shù)的范圍是不同的。其中float4個字節(jié)(32個二進(jìn)制位),。4e—38~3。4e+38,但只能提供7位有效數(shù)字;double型占8個字節(jié)64個二進(jìn)制位1.7—3017e+30,可提供16位有效數(shù)字。intfloat;printf%d%f。/*求兩個實數(shù)的和/*求兩個實數(shù)的和*/#include<stdio.h>#include<conio.h>main(){float f_num1,f_num2,f_sum;/*定義三個實型變量*/clrscr(); /*清除屏幕*/f_sum=0; /*和的初值置為printf(“Pleaseinputtwo顯示提示字符scanf(“%f”,&f_num1); /*輸入第一個實數(shù)*/scanf(“%f”,&f_num2); /*輸入第二個實數(shù)*/f_sum=f_num1+f_num2; /*求兩個實數(shù)的和,并存入變量f_sum中printf(“f_num1andf_num2is:%f\n”,f_sum); /*輸出和值*/}【例2-2】請編程求兩個實數(shù)的差。本例只需要將例2—1程序中語句“f_sum=f_num1+f_num2;"中的“+”改為“—"即可?!纠?—3】請編程求兩個實數(shù)的商及積。本例同例2-2,修改一下運算符即可。【例2—4】請編程求兩個整數(shù)的商。根據(jù)前面的例題,我們自然可以很輕松地將案例程序中的“+"改為“/”即可。程序如下:/*/*求兩個整數(shù)的商*/#include<stdio.h>#include<conio.h>main(){intnum1,num2,sum;clrscr();sum=0;/*定義三個整型變量*//*清除屏幕*//*和的初值置為0*/printf(“Pleaseinputtwointegers:”);顯示提示字符scanf(“%d”,&num1); /*輸入第一個整數(shù)*/scanf(“%d”,&num2); /*輸入第二個整數(shù)*/sum=num1/num2; /*求兩個整數(shù)的商,并存入變量sum中printf(“num1dividenum2is:%d\n”,sum); /*輸出商值*/}運行上述程序,如果輸入:16回車4回車則輸出結(jié)果為:num1dividenum2is:4如果輸入:16回車5回車則輸出結(jié)果:num1dividenum2is:3結(jié)果分析:C語言規(guī)定兩個整數(shù)相除的結(jié)果還是整數(shù),所以16除5的結(jié)果是3。三、小結(jié).C.C語言的變量有類型之分,而且分得比較細(xì),要根據(jù)需要選擇不同的類型。printfscanf這兩個庫函數(shù),定義了多種格式,需要針對不同的對象選擇不同的格式符。四、實驗三求兩個數(shù)和、差、積、商4。1實驗?zāi)康恼莆照汀嵭妥兞康亩x方法;printfscanf%d%f熟悉實型、整型變量所表示數(shù)的范圍。實驗內(nèi)容及步驟程序:編譯結(jié): 修改記:輸入數(shù)據(jù): 運行結(jié)果:2-1程序:編譯結(jié)果: 修改記錄:輸入數(shù)據(jù): 運行結(jié)果:2-22-3編譯結(jié)果: 修改記錄:輸入數(shù)據(jù): 運行結(jié):2-4,記錄結(jié)果,并分析為什么結(jié)果不精確編譯結(jié)果: 修改記錄:輸入數(shù): 運行結(jié)果:5.編程求兩個整數(shù)的并調(diào)試。程序:編譯結(jié)果: 修改記錄輸入數(shù)據(jù)1:12和18輸出結(jié)果:輸入數(shù)據(jù)2:56和87輸出結(jié)果:輸入數(shù)據(jù)3:32765和3245輸出結(jié)果:4。3思考題:請驗證2.5?把所有printffe的功能區(qū)別。如果把printf()五、習(xí)題(所有程序必須上機(jī)調(diào)試通過).根據(jù)商品原價和折扣率,編程計算商品的實際售價。=(-32)*5/9案例三求多個不同類型數(shù)的和(平均值等)教學(xué)目的:;進(jìn)一步熟悉整型和實型變量的定義。后兩位,第三位進(jìn)行四舍五入。程序如下:/*/*求兩個整數(shù)的平均值*/#include<stdio.h>#include<conio.h>main(){intnum1,num2;floatave;clrscr();ave=0;/*定義兩個整型變量*//*清除屏幕*//*平均值變量的初值置為0*/printf(“Pleaseinputtwointegers:”);顯示提示字符*/scanf(“%d%%d”,&num1,&num2); /*輸入兩個整*/ave=(num1+num2)/2.0; /*求平均值,并存入變量ave中*/ave=(int)((ave*100+0.5))/100.0; 對平均值進(jìn)行四舍五入精確到小數(shù)點后兩printf(“average is:%f\n”,ave); /*輸出平均值*/}一、案例分析根據(jù)實際需要,定義了兩個整型變量,用于存放兩個整數(shù)值,一個單精度變量ave,用于存放兩個整數(shù)的平均值。ave=(num1+num2)/?!毙惺怯嬎銉蓚€整數(shù)的平均值,先計算num1+num2的和,和值仍為整數(shù),然后計算num1+num22.02,將計算的平均值賦給變量ave.混合類型數(shù)據(jù)運算的類型轉(zhuǎn)換規(guī)則當(dāng)不同類型的數(shù)據(jù)進(jìn)行混合運算時,需要先把不同類型的數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一的類型,然后再進(jìn)行運算。高低doublefloatlongunsignedintchar,short圖2.1高低doublefloatlongunsignedintchar,short圖2.1標(biāo)準(zhǔn)類型數(shù)據(jù)轉(zhuǎn)換規(guī)則22PAGEPAGE41圖中橫向向左的箭頭表示必定發(fā)生的轉(zhuǎn)換,如短整型數(shù)據(jù)必須先轉(zhuǎn)換成整型0”表達(dá)式中,先進(jìn)行的“num1+num2”運算,不需要進(jìn)行類型轉(zhuǎn)換,在進(jìn)行“(num1+num2)/2.0”double型,2.0double型,然后進(jìn)行運算,結(jié)doubleave,ave變量是float,準(zhǔn),因此先將double類結(jié)果的轉(zhuǎn)換為float類型,再賦給變量ave。ave(int(ave*100+5))/10100倍,然后加05,目的是進(jìn)行四舍五入,第三步是對ave*100+05取整,取整操作是用C(int)進(jìn)行轉(zhuǎn)換,即(int)((ave*100+0。5),實現(xiàn)取整運算,舍去小數(shù)部分,最后是將前面運算得到的整數(shù)縮小100倍,保留兩位小數(shù)。本案例的其余部分同前。二、應(yīng)用舉例【例3-1】假設(shè)銀行定期存款的年利率rate為2。25%,并已知存款期限為n年,存款本金為capital元,試編程計算n年后可得到的本利之和deposit。(保留小數(shù)點后兩位)分析:本例存款額的計算公式為deposit=capital(1+rate)n。pow函數(shù):math.hpow(x,y)xy,xy次冪其調(diào)用形式為pow(x,y),返回值為double型.(1+rate)n計算,調(diào)用pow(1+rate,n)程序如下:本例中與其它程序有一個重要的區(qū)別是多了“#include〈math。h>”行,其作用是把math.h頭文件包含進(jìn)行來,目的是在程序中需要調(diào)用pow函數(shù),來計算(1+rate)n值。/*/*計算整存整取的本利*/#include<stdio.h>#include<math.h>#include<conio.h>main(){intn; /*nfloatrate,capital,deposit;clrscr(); /*清除屏幕rate=0.0225;printf(“Pleaseinputcapitalandyears:”);/*顯示提示字符*/scanf(“%f%%d”,&capital,&n);/*輸入存款額和年限*/deposit=capital*pow(1+rate,n);deposit=(int)((deposit*100+0.5))/100.0;printf(“deposit is:%f\n”,deposit);/*對本利進(jìn)行四舍五入精確到小數(shù)點后兩位*//*輸出本利值*/}三、習(xí)題已知三角形的三條邊a,b,c,請編程求三角形的面積(math.hsqrt函數(shù))分析下列程序的執(zhí)行結(jié)果。#include<stdio.h>#include<math.h>#include#include<stdio.h>#include<math.h>#include<conio.h>main(){inta=1,b=2,c=2;floatx=10.5,y=4.0,z;clrscr();z=(a+b)/c+aqrt((int)(y))*1.2/x+x;printf(“z=%f\n”,z);}已知一元二次方程的三個系數(shù)a,b,c,并且該方程存在實數(shù)根,請編程求實根。四、實驗四不同類型數(shù)的混合運算4。1實驗?zāi)康恼莆照?、實型?shù)據(jù)的混合運算;powsqrt函數(shù);掌握四舍五入的處理方法。4。2實驗內(nèi)容及步驟程序:編譯結(jié)果: 修改記:輸入數(shù)據(jù): 運行結(jié)果:。023。運行【例3—1】的程序,并記錄相關(guān)信息。程序:編譯結(jié)果: 修改記錄輸入數(shù): 運行結(jié):4。調(diào)試習(xí)題1的程序。程序:編譯結(jié)果: 修改記錄輸入數(shù): 運行結(jié)果:5。調(diào)試習(xí)題2的程序。程序:編譯結(jié)果: 修改記錄:輸入數(shù)據(jù): 運行結(jié)果:思考題.查閱附錄,熟悉stdio。h,math。h兩個頭文件所包含的函數(shù)的定義。234.56781)案例四比較兩個數(shù)的大小教學(xué)目的:掌握基本的if……else……語句格式。#include<stdio.h>#include<conio.h>main(){intnum1,num2,max;clrscr();#include<stdio.h>#include<conio.h>main(){intnum1,num2,max;clrscr();scanf(“%d%d”,&num1,&num2);if(num1>num2) /*max中max=num1;elsemax=num2;printf(“maximumis=%d\n”,max);}一、案例分析該案例中我們唯一不熟悉的語句是if……else……,其功能是首先計算表達(dá)式“num1>num2”的值,然后根據(jù)計算結(jié)果決定執(zhí)行某一分支。if……else……語句的基本格式if(表達(dá)式)語句組}[else{語句組2]if……else……語句的執(zhí)行過程當(dāng)執(zhí)行到if……else……語句時,其過程如下:if表達(dá)式;表達(dá)式0,表達(dá)式02.else部表達(dá)式0時,什么也不做;,程序接著執(zhí)行if……else……語句的下一條語句。if……else……語句執(zhí)行過程的圖形表示稱為流線,表示程序執(zhí)行流向;稱為判斷框,它使程序出現(xiàn)兩個分支;稱為處理框;…………0計算表達(dá)式的值012……4.1if……else……語句執(zhí)行圖解根據(jù)if……else……語句的執(zhí)行過程圖解4.1可知,在一次執(zhí)行if……else,只可能執(zhí)行語句組1或者執(zhí)行語句組2.if……else……410.表達(dá)式等.C豐富+(”等運算符,這類運算符稱為算術(shù)運算符。4。1運算符的優(yōu)先級當(dāng)一個表達(dá)式中出現(xiàn)不同的運算符時,級別高的運算符先做.如算術(shù)運算“+ - * / ()”從左到右級別依次升高。運算符的結(jié)合性當(dāng)一個運算對象兩側(cè)運算符的優(yōu)先級相同時,這時根據(jù)運算符的結(jié)合性來合性。如3+5-85+合C語言中定義的關(guān)系運算符、<=優(yōu)先級相同,前四個的優(yōu)先級高于后兩種。4.3。10假真".〉30,也就是真5>5的值為假5>=5非,即為真。43.2關(guān)系表達(dá)式用關(guān)系運算符連接起來的式子稱為關(guān)系表達(dá)式。如5+8==7-2達(dá)式中,既有關(guān)系運算符,又有算術(shù)運算符,算術(shù)運算符優(yōu)先于關(guān)系運算符,所以先進(jìn)行算術(shù)運算,然.(關(guān)鍵是注意關(guān)系運算必須是同類型的量才能進(jìn)行比較,即關(guān)系運算)括起來。本案例中if……else……語句的執(zhí)行if(num1〉num2)max=num1;elsemax=num2;〉num2”的值,如果num1大于num20真0假;非0,則將num1的值賦給變量max,即執(zhí)行“max=num1;"max=num”語句;不管執(zhí)行“max=num1;max=num2”分支,最后都接著執(zhí)行“printf(“maximumis=%fd\n"max);.……0num1>num2……0num1>num20max=num1max=num2……圖圖4.2案例四if……else……語句執(zhí)行圖解if……else,ifelse12要向后縮進(jìn)一定的字符。二、應(yīng)用舉例【例4—1】用省略else部分的if語句改寫本案例。程序如下:#include<stdio.h>#include#include<stdio.h>#include<conio.h>main(){intnum1,num2,max;clrscr();scanf(“%d%d”,&num1,&num2);max=num2;if(num1>num2) /*max中max=num1;printf(“maximumis=%fd\n”,max);}上述的改寫是先假設(shè)num2,如果num1num2,即表達(dá)式“num1>num2”的值為0num1較大,num1maxnum2max不需要再賦值了。上述if4—3所示.【例4-2】請編程輸入學(xué)生成績,并且根據(jù)成績判斷其是否通過考試,如果成績大于等于60passefailepassefaile".成績的輸入用scanfscore然后判斷scoreelse并輸出相應(yīng)的提示字符。程序如下:…………0num1>num20max=num1……圖4.3if……語句執(zhí)行圖解#include<stdio.h>#include#include<stdio.h>#include<conio.h>main(){floatscore;clrscr();scanf(“%f”,&score);if(score>=60) /*scoreprintf(“passed\n”);elseprintf(“failed\n”);}【例4—3】對于用if……else.#include<stdio.h>#include<conio.h>main(){intnum1,num2,max;clrscr();scanf(“%d%d”,&num1,&num2);max=(num1>num2)?num1:num2;printf(“maximumis=%d\n”,max);}條件運算符其使用形式為(表達(dá)式1?表達(dá)式(表達(dá)式,其計算10(真2算表達(dá)式;如果表達(dá)式1的值為0#include<stdio.h>#include<conio.h>main(){intnum1,num2,max;clrscr();scanf(“%d%d”,&num1,&num2);max=(num1>num2)?num1:num2;printf(“maximumis=%d\n”,max);}注:條件運算符是右結(jié)合性。三、習(xí)題如果將【例41max=num2max=num將案例改成比較兩個實數(shù)的大小。。5。510,按批發(fā)價計算。設(shè)某顧客購買該商品weight千克?四、實驗五基本if……else……語句實驗4。1實驗?zāi)康膇f……else……語句的功能;熟悉關(guān)系運算符及關(guān)系表達(dá)式的運算;4.2單步運行程序,TCF7鍵程序執(zhí)行一行,在程序執(zhí)行userscreen案例程序為例講解單步調(diào)試程序的方法。輸入程序,并保存;編譯程序;連接;添加觀察變量Alt+B打開Break/watch菜單;addwatch命令;輸入變量num1;重復(fù)上述三步二次,加入變量num2max;添加了觀察變量后,TC界面的下部就出現(xiàn)了一個watch窗口,所添加的觀察變量都在watch窗口。用F7運行程序,每按一次,觀察并記錄watchif……else……語句所構(gòu)成的分支結(jié)構(gòu)程序。,userscreen,watch窗口所看到的max的值進(jìn)行比較。if……else根據(jù)表達(dá)式值的不同,選擇不同的分支。4。3實驗內(nèi)容及步驟用單運行程序的方法,執(zhí)行【例.程序:編譯結(jié)果:修改記錄:1:3456回車第一次按F7鍵,num1=,num2=,max=,語句:第二次按F7鍵,num1=,num2=,max=,語句:第三次按F7鍵,num1=,num2=,max=,語句:……輸入數(shù)據(jù)2:78回車-10回車第一次按F7鍵,num1=,num2=,max=,語句:第二次按F7鍵,num1=,num2=,max=,語句:第三次按F7鍵,num1=,num2=,max=,語句:……用單步運行程序的方法,執(zhí)行【例4—2程序:編譯結(jié)果:修改記錄:輸入數(shù)據(jù)1:68回車第一次按F7鍵,score=,語句:第二次按F7鍵,score=,語句:第三次按F7鍵,score=,語句:輸入數(shù)據(jù)2:57回車第一次按F7鍵,score=,語句:第二次按F7鍵,score=,語句:第三次按F7鍵,score=,語句:……31,2,3,(自己設(shè)計記錄格式。4。用同樣的方法調(diào)試?yán)?-3的程序,并做好記錄。4。4思考題:兩次運行程序,應(yīng)如何選擇數(shù)據(jù)才能保證if語句的分支分別被執(zhí)行到?是不是每個變量的值都需要進(jìn)行觀察?為什么?單步運行程序的作用是什么?案例五100分制成績與等級制成績轉(zhuǎn)換教學(xué)目的:掌握嵌套if……else……語句的一種格式;switch#include<stdio.h>#include<conio.h>main(){floatscore;clrscr();scanf(“%f”,&score);if(score>=90)printf(“A”);elseprintf(“#include<stdio.h>#include<conio.h>main(){floatscore;clrscr();scanf(“%f”,&score);if(score>=90)printf(“A”);elseprintf(“B”);elseprintf(“C”);elseprintf(“D”);elseprintf(“E”);}E,90分以為分為B,70~79分為分為分以下為。程序如下:一、案例分析本案例是利用if……else處理多分支,不可以出現(xiàn)其它的次序。if……else……語句的嵌套格式之一if(條件A){語句組1;}elseif(條件B)語句組elseC){語句組3;}……else語句組}注:if后的條件可以是任何的表達(dá),包括前面已經(jīng)涉及到的算術(shù)表達(dá)式和關(guān)系表達(dá)式.嵌套if……else……語句的執(zhí)行過程A的值1后if的下一條語句;A0,則計算條件B,022后,程if的下一條語句;依次類推,直到所有條件的值都為0,則執(zhí)行語句組nif語句.嵌套if……else……語句的執(zhí)行過程圖解…………非真)條件A0(假)1非真)條件B0(假)2非真)條件B0(假)3…………5.1嵌套if……else……語句執(zhí)行圖解本案例嵌套if……else……語句執(zhí)行過程圖解(52)…………非真)score>=900(假)printf(“A”)非真)score>=800(假)printf(“B”)非真)score>=700(假)printf(“C”)非真)score>=60……0(假)printf(“D”)printf(“E”)……5.2本案例嵌套if……else……語句執(zhí)行圖解案例執(zhí)行過程演示如果一個學(xué)生的成績是7575,這時對于用嵌套的if……else……語句所構(gòu)成的多分支結(jié)構(gòu)程序的執(zhí)行如圖5.3紅色部分(虛體)執(zhí)行的語句就是斜體所示的語句。對于分支結(jié)構(gòu)程序,我們上機(jī)調(diào)試程序時需要注意選擇輸入數(shù)據(jù),保證每個分支至少執(zhí)行次,如9080~8970~7960~6960分以下五個數(shù)據(jù),運行程序五次,分別輸入這五個數(shù)據(jù),以觀察程序執(zhí)行的代碼,從而可初步確認(rèn)程序基本正確。如果要比較完(即邊界值這里還請大家注意,一般情況下我們的程序只能說到目前為止沒有發(fā)現(xiàn)錯誤,不能說一個程序完全正確?!钦妫﹕core>=900(假)printf(“A”)非真)score>=800(假)printf(“B”)非真)score>=700(假)printf(“C”)非真)score>=60……0(假)printf(“D”)printf(“E”)……5.375時分支選擇情況#include<stdio.h>#include#include<stdio.h>#include<conio.h>main(){floatscore;clrscr();scanf(“%f”,&score);if(score>=90)printf(“A”);elseif(score>=80)printf(“B”);elseif(score>=70)printf(“C”);elseif(score>=60)printf(“D”);elseprintf(“E”);}二、用switch語句改寫案例switch語句是C語言中專門用來實現(xiàn)多分支結(jié)構(gòu)的語句.使用switch語句實現(xiàn)多分支結(jié)構(gòu)比用嵌套的if……else……要方便靈活。switch語句格式switch(表達(dá)式{case 常量:語句組1;[brea]case 常量2:語句組case 常量3:語句組3;[break;]……case nn;[break;][default:語句組n+]}switch語句執(zhí)行過程switch.C單引號“’單個字符等。根據(jù)表達(dá)式的值,從上到下依次判斷表達(dá)式的值是否與case后的某個常量匹配(相同,程casebreak語句,則從入口處一直執(zhí)行程序至switch止.則從defaultbreak語句或switch語句外層的“}”止.常量:指在程序的執(zhí)行過程中其值不變量的量。如整型常量56,-123,實型常量5。67,-0。98,3。2e+6,字符常量’w’,'2’,’M’。格式中用“[]”括起來的部分是可選部分,根據(jù)需要進(jìn)行選擇。breakbreak,沒有參數(shù),其作用是結(jié)束switchswitch的下一條語句執(zhí)行。#include<stdio.h>#include#include<stdio.h>#include<conio.h>main(){floatscore;clrscr();scanf(“%f”,&score);switch((int)(score)/10{case10:case9:printf(“A”);break;case8:printf(“B”);break;case7:printf(“C”);break;case6:printf(“D”);break;default:printf(“E”);}}用switch語句改寫的關(guān)鍵是switch后表達(dá)式的確定及casescore0~10之間。常量109說明score90分以上,所以當(dāng)score90分以上時,將會從case10:case9處找到Abreak語句,結(jié)束switch語句的執(zhí)行。當(dāng)輸入其它分?jǐn)?shù)時,根據(jù)計算的值找到相應(yīng)case入口,輸出對應(yīng)符號,然后結(jié)束switch語句的執(zhí)行。三、應(yīng)用舉例【例5—1】分別用嵌套if……else……語句和switch路程:s<500,沒有折扣500<=s〈1000,5%折扣1000〈=s〈1500,10%折扣1500<=s〈2000,15%折扣s>=2000,20%折扣假設(shè)每公里每噸貨物的基本運費為p,貨物重量為,距離為折扣率為d,則總運費f式為:f=p*w*s*(1—d)if……else第一個條件是s第二個條件是s<1000,第三個條件是s<1500,依次遞進(jìn)。然后根據(jù)條件,選擇折扣d,用f=p*w*s*#include<stdio.h>#include<conio.h>main(){float clrscr();#include<stdio.h>#include<conio.h>main(){float clrscr();scanf(“%f”,&p);輸入基本運費;scanf(“%f”,&w);輸入貨物重量;scanf(“%f”,&s);if(s<500)d=0;elseif(s<1000)d=0.05;elseif(s<1500)d=0.1;elseif(s<2000)d=0.15;elsed=0.2;f=p*w*s*(1-d);printf(“weight=%f,distance=%f,fee=%f”,w,s,f);輸入運輸距離;}#include<stdio.h>#include<conio.h>main(){float clrscr();scanf(“%f”,&p);輸入基本運費;scanf(“%f”,&w);輸入貨物重量;scanf(“%f”,&s);switch((int)(s)/500){case0:d=0;break;case1:case2:d=0.1;break;case3:d=0.15;break;default:d=0.2;}f=p*w*s*(1-d);printf(“weight=%f,distance=%f,fee=%f”,w,s,f);}如果用switch語句實現(xiàn),關(guān)鍵是找到運輸距離和折扣之間的關(guān)系,距離每增加500公里,折扣率增加5%,因此把距離除以500作為switch的表達(dá)式,case后的常量是從0開始的整數(shù)。程序如上。本例在運行輸入數(shù)據(jù)時,必須保證輸入的都是正數(shù)。四、習(xí)題分別用嵌套if……else……語句和switch.根據(jù)體重與身高,得出體指數(shù)t=體重W/(身高h(yuǎn))2 (w單位為kg,h單位為標(biāo)準(zhǔn)如下當(dāng)t〈18時,為低體重;當(dāng)18<=t〈25時,為正常體重;當(dāng)25<=t<27時,為超重體重;當(dāng)t>=27時,為肥胖。26,23(Lower(Middleclas),5歲、6歲孩子進(jìn)大班Higherclas。請編程輸入孩子年齡,輸出年齡及進(jìn)入的班號。輸入三個整數(shù)、bc,請編程按從大到小順序輸出它們。五、實驗實驗六switch和嵌套if語句5。1實驗?zāi)康恼莆涨短譱f……else……語句的使用;switch實驗內(nèi)容及步驟1。用單步運行程序的方法調(diào)試案例程序,準(zhǔn)備好多組數(shù)據(jù),保證每個分支至少執(zhí)行一次。程序:編譯結(jié)果:修改記錄:輸入數(shù)據(jù)1:第一次按F7鍵,score=,語句:第二次按F7鍵,score=,語句:第三次按F7鍵,score=,語句:……輸入數(shù)據(jù)2:第一次按F7鍵,score=,語句:第二次按F7鍵,score=,語句:第三次按F7鍵,score=,語句:……2。用單步運行程序的方法調(diào)試用switch語句修改后的案例程序,準(zhǔn)備好多組數(shù)據(jù),保證每個case入口至少進(jìn)入一次。程序:編譯結(jié)果:修改記錄:輸入數(shù)據(jù)1:第一次按F7鍵,score=,語句:第二次按F7鍵,score=,語句:第三次按F7鍵,score=,語句:……輸入數(shù)據(jù)2:第一次按F7鍵,score=,語句:第二次按F7鍵,score=,語句:第三次按F7鍵,score=,語句:……3。用單步運行程序的方法調(diào)試【例5—1】的兩種程序,準(zhǔn)備好多組數(shù)據(jù),保證每條語句至少執(zhí)行一次。自己設(shè)計記錄格式。12、3,自己設(shè)計記錄格式。思考題(switch和嵌套的i……els?實現(xiàn)多分支結(jié)構(gòu)的優(yōu)缺點。if……else……還可怎樣嵌套?(3)什么時候需要在switch語句中使用break案例六求1~100的和教學(xué)目的:熟悉循環(huán)結(jié)構(gòu)程序;掌握實現(xiàn)循環(huán)結(jié)構(gòu)的for(;;)語句。#include<stdio.h>#include<conio.h>main(){int i,sum;clrscr();sum=0;/*存放和值的變量賦初值0*/for(i=1;i<=100;i++)sum=sum+i; /*循環(huán)體printf(“%d\n”,sum);}在日常工作或生活中,我們經(jīng)常碰到需要重復(fù)進(jìn)行某種操作,如求1+2+3+#include<stdio.h>#include<conio.h>main(){int i,sum;clrscr();sum=0;/*存放和值的變量賦初值0*/for(i=1;i<=100;i++)sum=sum+i; /*循環(huán)體printf(“%d\n”,sum);}一、案例分析上述程序中出現(xiàn)了一個新的語句for,其作用是實現(xiàn)某些語句按需要的次數(shù)重復(fù)運行.for語句格式fo[表達(dá)式1;表達(dá)式[表達(dá)式)重復(fù)執(zhí)行的循環(huán)體語句組;for語句執(zhí)行過程1;2;若表達(dá)式2真)表示循環(huán)的條件成立,則轉(zhuǎn)3)20(假)表示循環(huán)條件不滿足,則結(jié)束循環(huán),轉(zhuǎn)5);執(zhí)行循環(huán)體語句組;計算表達(dá)式3;然后轉(zhuǎn)2;結(jié)束循環(huán),執(zhí)行for.for6.1)……10(假)0(真)2for之后的語句循環(huán)體3圖6.1for語句執(zhí)行圖解案例程序執(zhí)行演示i+i=i+變量的值增加11。例設(shè)變量a6,執(zhí)行a,a7,設(shè)變量b54。單個變量的運算符,因此是單目,這兩個運算符前置和后置時,對于整個表達(dá)式值的影響是不同的。如:設(shè)變量ab5,b是前置,要先對變量進(jìn)行自增運算,即ba--是后置,先取a的值進(jìn)行表達(dá)式的運算,完了之后再使a1,4,6。平時使用時要注意自增自減運算符的前置與后置的問題,單目運算符的優(yōu)先級高于雙目運算符及三目運算符,雙目運算符是指一個運算符的運算對象為兩個,三目運算符的運算對象為三個。根據(jù)for語句的執(zhí)行過程圖解,可以把案例的for語句執(zhí)行也用圖來表示,見圖6.2.for1起,然后判斷i1001i=1當(dāng)然滿足條件,因語句,i++,3,然后判斷i100,當(dāng)然這次i=2i++后,i=100,再次判斷i是否小于等于100,還是滿足條件的再次執(zhí)行“sum=sum+i;后,i=101時,判斷i100了,因此退出循環(huán),執(zhí)行for1~100.,sum=sum+sum=i=1";2i=100”;循環(huán)控制是使循環(huán)的條件趨向不滿足,使循環(huán)最終能結(jié)束,本例是“表達(dá)式,即i+本例循環(huán)體共執(zhí)行了100次。……i=1i=10(假)0(真)i<=100for之后的語句sum=sum+ii++圖6.2本案例for語句執(zhí)行圖解for語句注意點for,;當(dāng)表達(dá)式2真,注意下面for語句的執(zhí)行:for(j=0;j;j++);for(j=;;j+;二、應(yīng)用舉例【例6-1】編程求正整數(shù)n的階乘n!。其中n由鍵盤輸入。分析:在本課一開始,我們就見過了求5!的程序。其實求階乘和求1~100需要將sum的初值改為1,〈=100改為=,將sum=sum+in值sum的類型定義為float,修改后的程序如下:【例6—2】編程求1+1/2+1/4+1/6+……+1/50的值.分析:該例同案例相似,也是求和,求的是1除以偶數(shù)的和,因此i值的改變每次是加2,并且其初值為2,到50為止,另外存放和值變量的類型是應(yīng)該定義為實型。程序如下:【例【例6-1】程序#include<stdio.h>#include<conio.h>main(){int i,n;float clrscr();scanf(“%d”,&n);sum=1;/*1*/for(i=1;i<=n;i++)sum=sum*i; /*循環(huán)體printf(“%f\n”,sum);}【例6-2】程序#include<stdio.h>#include<conio.h>main(){int j;float clrscr();sum=1; /*1,這時需要注意for(j=2;j<=50;j=j+2)sum=sum+1.0/j; /*循環(huán)體printf(“%f\n”,sum);}三、習(xí)題1.編程求1000以奇數(shù)的和。2.編程求1+!+ 88888888888888888888888888888888888888888888編程打印下圖(思考題)*********四、實驗 實驗七for語句構(gòu)成的循環(huán)結(jié)構(gòu)程序4。1實驗?zāi)康恼莆昭h(huán)結(jié)構(gòu)程序的調(diào)試方法;掌握實現(xiàn)循環(huán)結(jié)構(gòu)的for4。2設(shè)置斷點調(diào)試程序的方法單步執(zhí)行程序的方法能有效地、一行一行地執(zhí)行并檢查感興趣變量的值,但是如果程序很長,是難以逐行進(jìn)行檢查的.,,程序執(zhí)行到斷點處,如此一段一段地檢查;若在某斷點處發(fā)現(xiàn)錯誤,則修改程序,再次重復(fù)執(zhí)行,直到得到正確的結(jié)果.這斷點設(shè)置的方法是:將光標(biāo)移到要設(shè)置斷點的行上,用快捷鍵 CTRL+F8,或者是使用菜單Break/watch下的子菜單Toggle取消斷點和設(shè)置斷點的方法一快捷鍵和菜單命令也一樣下面仍然通過一個例子來講解斷點的設(shè)置和調(diào)試程序的方.【例】求解一元二次方程式ax2+bx+c=0的根.#include“math.h”#include“stdio.h”#includemain(){floata,b,c,disc,p,q,x1,x2;scanf(“%f,%f,%f”,&a,&b,&c);clrscr();disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf(“x1=%d,x2=%d\n”,x1,x2);}這個源程序沒有語法錯誤,順利通過編譯和連接.運行時輸入:1,2,1↙輸出結(jié)果為:x1=0,x2=0這個結(jié)果顯然不對。為了找出問題所在,我們通過分析決定在“p=-b/(2*a);”和“printf(“x1=%d,x2=%d\n”,x1,x2);”語句行設(shè)置斷點,結(jié)果如圖6。3所示,這兩行以紅色顯示。當(dāng)使用Run,.6。4disc0,根”即b=2,a=1,c=1的情況下,disc06.3斷點設(shè)置結(jié)果42,6.5x1為—1,x2為—1,可見圖6.4執(zhí)行到第一個斷點到此程序沒有問題,那為什么輸出結(jié)果為 0呢?剩下只有一條語句行了,問題就應(yīng)重點檢查“printfx1=%d,x2=%d\nx1,x2)語句行了。變量x1和x2的值確實是正確的方程根,輸出時卻是錯誤的這時經(jīng)過仔細(xì)分析發(fā)現(xiàn)問題出在輸出格式,x1和x2都是實型可printf中卻用的格式輸出,所以出現(xiàn)錯誤。將printf函數(shù)中的“%d”改成“%f",再次運行程序,輸出結(jié)果為:x1=-1。000000,x2=-1.000000),這次輸入、bc的值改為2,3,5。執(zhí)行到第一,可以看到變量disc-31,當(dāng)disc的值為負(fù)時,在計算平方根時會出現(xiàn)錯誤。繼續(xù)運行程序,當(dāng)執(zhí)行到“q=sqrt(disc)(2*;"時,屏幕閃了一下(這是程序向用戶屏幕輸出信息,然后又切換到TC窗口而產(chǎn)生的圖6.5執(zhí)行到第二斷點43PAGEPAGE50通過用戶屏幕可以看到提示的出錯信息:sqrt:DOMAINerror這個錯誤提示表示sqrt函數(shù)調(diào)用時,要求的參數(shù)是大于等于0,而本例sqrt而引起溢出錯誤。當(dāng)然這個錯誤是由于輸入abc不需要修改程序。一旦程序調(diào)試通過,所設(shè)置的斷點就可清除。斷點的設(shè)置是有所選擇的,一般選擇一些關(guān)鍵變量值的改變處,比如上例中disc調(diào)試程序之前需要做好準(zhǔn)備工作,全面熟悉程序,做好靜態(tài)分析,然后再進(jìn)行動態(tài)調(diào)試。動態(tài)調(diào)試時實驗內(nèi)容及步驟11~1001~5程序:編譯結(jié): 修改記:第一次按F7,i= ,sum= 語句:第二次按F7鍵,i= ,sum= 語句第三次按F7,i= ,sum= 語句:……sum=sum+i”行設(shè)成斷點。2。1~100sum=sum+i”行設(shè)成斷點。編譯結(jié)果: 修改記錄:Run命令,i=,sum=語句:Run命令,i=,sum=語句:Run,i=,sum=語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安職業(yè)技術(shù)學(xué)院《工管運籌學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025河北省安全員C證考試題庫
- 云南中醫(yī)藥大學(xué)《農(nóng)業(yè)推廣學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧特殊教育師范高等??茖W(xué)?!妒覂?nèi)專題項目生態(tài)性居住空間設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年江西省建筑安全員-A證考試題庫附答案
- 銅仁幼兒師范高等??茖W(xué)校《口腔組織病理學(xué)實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼陽職業(yè)技術(shù)學(xué)院《外貿(mào)函電與單證》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京協(xié)和醫(yī)學(xué)院《需求分析與系統(tǒng)設(shè)計(雙語)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川電力職業(yè)技術(shù)學(xué)院《WTO-TBT基礎(chǔ)知識》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅財貿(mào)職業(yè)學(xué)院《先秦散文研讀》2023-2024學(xué)年第二學(xué)期期末試卷
- GA/T 1081-2020安全防范系統(tǒng)維護(hù)保養(yǎng)規(guī)范
- 2023一年級下冊語文教學(xué)工作計劃(2篇)
- 2022年云上貴州大數(shù)據(jù)(集團(tuán))有限公司招聘筆試試題及答案解析
- (虎符銅砭刮痧)基本理論及臨床應(yīng)用課件
- 文件袋、檔案袋密封條模板
- 依圖科技業(yè)務(wù)概述
- 支氣管鏡室工作制度
- 船模制作教程(課堂PPT)課件(PPT 85頁)
- 防腐檢查培訓(xùn)教材ppt課件
- 肺炎鏈球菌肺炎醫(yī)學(xué)PPT課件
- 小學(xué)英語微課ppt
評論
0/150
提交評論