C程序基礎(chǔ)與程序結(jié)構(gòu).ppt
《C程序基礎(chǔ)與程序結(jié)構(gòu).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《C程序基礎(chǔ)與程序結(jié)構(gòu).ppt(51頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
程序設(shè)計(jì)基礎(chǔ)(C),第2章程序設(shè)計(jì)基礎(chǔ)與程序結(jié)構(gòu),C程序基礎(chǔ),1.C語(yǔ)言的發(fā)展歷程2.C語(yǔ)言程序的基本結(jié)構(gòu)3.C程序運(yùn)行過(guò)程4.C語(yǔ)言基本語(yǔ)法成分5.C語(yǔ)言數(shù)據(jù)類型6.數(shù)據(jù)的輸入與輸出7.C語(yǔ)言中的宏定義8.C語(yǔ)言中的文件包含9.C語(yǔ)言中的條件編譯10.位運(yùn)算及其應(yīng)用,1.C語(yǔ)言的產(chǎn)生、發(fā)展及特點(diǎn),C語(yǔ)言的產(chǎn)生及發(fā)展ALGOL60→CPL→BCPC→B→C→標(biāo)準(zhǔn)C→ANSIC→ISOC,常見(jiàn)的C語(yǔ)言版本有:Borland公司:TurboC,TurboC++,BorlandC++,C++BuilderMicrosoft公司:MicrosoftC,VisualC++,自學(xué),1.C語(yǔ)言的產(chǎn)生、發(fā)展及特點(diǎn),C語(yǔ)言的特點(diǎn)1.C語(yǔ)言的語(yǔ)言成分簡(jiǎn)潔、緊湊、書(shū)寫(xiě)形式自由。2.C語(yǔ)言擁有豐富的數(shù)據(jù)類型。3.C語(yǔ)言的運(yùn)算符豐富、功能更強(qiáng)大。4.C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。5.C語(yǔ)言對(duì)語(yǔ)法限制不嚴(yán)格,程序設(shè)計(jì)靈活。6.C語(yǔ)言編寫(xiě)的程序具有良好的可移植性。7.C語(yǔ)言可以實(shí)現(xiàn)匯編語(yǔ)言的大部分功能。8.C語(yǔ)言編譯后生成的目標(biāo)代碼小,質(zhì)量高,程序的執(zhí)行效率高。,自學(xué),2.C語(yǔ)言程序的基本結(jié)構(gòu),認(rèn)識(shí)C語(yǔ)言程序,例1-1在屏幕上輸出一行信息,#include/*預(yù)處理命令*/voidmain()/*主函數(shù)*/{printf("ThisisaCprogram!\n");},文件包含命令,其功能是將頭文件stdio.h的內(nèi)容包含到用戶當(dāng)前的源程序中。,每個(gè)C程序必須有主函數(shù)main。main是函數(shù)名,main后的圓括號(hào)不能省略,void是一種數(shù)據(jù)類型,說(shuō)明該函數(shù)沒(méi)有返回值。,printf是標(biāo)準(zhǔn)輸出函數(shù),因?yàn)橐{(diào)用它所以前面必須加#include命令。printf函數(shù)的作用是將雙引號(hào)中的內(nèi)容輸出到顯示器屏幕上,其中\(zhòng)n是換行符,它使光標(biāo)跳到下一行行首,2.C語(yǔ)言程序的基本結(jié)構(gòu),#includevoidmain(){intx,y,a,b;x=5;y=3;a=x+y;b=x-y;printf("a=%d\n",a);printf("b=%d\n",b);},輸出結(jié)果:a=8b=2,例1-2求兩數(shù)之和與兩數(shù)之差,,這是4個(gè)賦值語(yǔ)句,x=5;的作用是將5賦給變量x,即變量x的值變?yōu)?;a=x+y;的作用是將x,y變量的值相加,再將結(jié)果賦值給變量a,/*變量聲明,聲明了4個(gè)整數(shù)類型的變量,C語(yǔ)言的變量必須先聲明再使用*/,/*雙引號(hào)中的a=是原樣輸出的,%d為格式控制符,在這個(gè)位置將對(duì)應(yīng)輸出整型變量a的數(shù)值*/,2.C語(yǔ)言程序的基本結(jié)構(gòu),例1-3輸入兩個(gè)數(shù),求兩數(shù)中較大的數(shù)并輸出,#includevoidmain(){inta,b,c;scanf("%d%d",},scanf是標(biāo)準(zhǔn)輸入函數(shù),%d表示輸入十進(jìn)制整數(shù),voidmain(){inta,b,c;scanf("%d%d",},例1-4,/*這個(gè)程序由2個(gè)函數(shù)組成,一個(gè)是main函數(shù),一個(gè)是用戶自己定義的max函數(shù)*/,這是函數(shù)聲明,它的作用是告訴編譯系統(tǒng)該程序要使用一個(gè)max函數(shù),/*調(diào)用max函數(shù),求出a和b中較大的數(shù),然后將結(jié)果賦值給變量c*/,/*max函數(shù)的定義,max前的int表示該函數(shù)最后會(huì)返回一個(gè)整數(shù)值,max后括號(hào)中定義了2個(gè)整型參數(shù)x和y,參數(shù)的作用是在函數(shù)調(diào)用時(shí)傳遞數(shù)據(jù)*/,//將計(jì)算結(jié)果返回(返回到main中調(diào)用max的位置),2.C語(yǔ)言程序的基本結(jié)構(gòu),C語(yǔ)言程序的基本結(jié)構(gòu),編譯預(yù)處理命令函數(shù)聲明部分//聲明用戶自己定義的函數(shù)voidmain()//主函數(shù)的定義{聲明部分//包括變量的聲明和函數(shù)的聲明執(zhí)行部分//主要是C語(yǔ)句}其他函數(shù)定義//可能有多個(gè)函數(shù)定義{聲明部分執(zhí)行部分},思考?,,,,2.C語(yǔ)言程序的基本結(jié)構(gòu),1、函數(shù)是C程序的基本單位①一個(gè)C源程序一般由一個(gè)主函數(shù)和若干其他函數(shù)構(gòu)成,注意一個(gè)C程序必須包含且只能包含一個(gè)main函數(shù)。②C程序從main函數(shù)開(kāi)始執(zhí)行,調(diào)用其他函數(shù)后再返回到main函數(shù)。main函數(shù)可以調(diào)用其他函數(shù),其他函數(shù)之間也可以互相調(diào)用,注意其他函數(shù)不能調(diào)用main函數(shù)③C函數(shù)分為標(biāo)準(zhǔn)函數(shù)和用戶自定義函數(shù)兩種形式在調(diào)用標(biāo)準(zhǔn)函數(shù)時(shí),要注意加文件包含命令用戶自定義函數(shù)是用戶根據(jù)程序需要,自己編寫(xiě)的函數(shù),C程序結(jié)構(gòu)的簡(jiǎn)要說(shuō)明:,2.C語(yǔ)言程序的基本結(jié)構(gòu),C程序結(jié)構(gòu)的簡(jiǎn)要說(shuō)明:2、函數(shù)的基本結(jié)構(gòu)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);},①函數(shù)首部定義格式:返回值類型函數(shù)名(參數(shù)列表),②函數(shù)體函數(shù)首部下面用一對(duì){}括起來(lái)的部分。函數(shù)體一般包括聲明部分和執(zhí)行部分。聲明部分:定義本函數(shù)中所使用的變量。執(zhí)行部分:由若干條語(yǔ)句組成。,2.C語(yǔ)言程序的基本結(jié)構(gòu),C語(yǔ)言的語(yǔ)句,1.控制語(yǔ)句(9種):完成一定的控制功能if()~else~條件語(yǔ)句(雙分支選擇語(yǔ)句)switch多分支選擇語(yǔ)句for()~while()~循環(huán)語(yǔ)句do~while()continue結(jié)束本次循環(huán)語(yǔ)句break中止語(yǔ)句goto轉(zhuǎn)向語(yǔ)句return從函數(shù)返回語(yǔ)句,,2.C語(yǔ)言程序的基本結(jié)構(gòu),2.函數(shù)調(diào)用語(yǔ)句:由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成例:printf("ThisisaCprogram!\n");scanf("%d%d",,3.表達(dá)式語(yǔ)句:由表達(dá)式加分號(hào)構(gòu)成例:x=5(賦值表達(dá)式)加;?x=5;(賦值表達(dá)式語(yǔ)句),變量賦值:變量=表達(dá)式(1)=是賦值運(yùn)算符(又稱賦值號(hào))(2)表達(dá)式包括:常量,變量,函數(shù),其他合法的C語(yǔ)言表達(dá)式(3)賦值運(yùn)算符為右結(jié)合性,先計(jì)算賦值號(hào)右邊的表達(dá)式的值,再將值賦給左邊的變量,例:intx,y,z,a,b,c;x=5;y=3;z=x;a=abs(y-x);b=x+y;c=b=a;,?先算b=a;再算c=b;,2.C語(yǔ)言程序的基本結(jié)構(gòu),變量賦值的特點(diǎn):①變量必須先定義,后使用。,②變量被賦值前,值是不確定的。,③對(duì)變量的賦值過(guò)程是“覆蓋”過(guò)程,即用新值去替換舊值。,例:intx,y;x=6;y=23;z=y-x;,例:inti;while(iy){inttemp;temp=x;x=y;y=temp;},注意:1.復(fù)合語(yǔ)句是一個(gè)整體,相當(dāng)于一個(gè)語(yǔ)句2.一個(gè)復(fù)合語(yǔ)句中可以包含其他復(fù)合語(yǔ)句3.在復(fù)合語(yǔ)句的花括號(hào)后不要加分號(hào)4.復(fù)合語(yǔ)句中可定義變量,但此變量只在該復(fù)合語(yǔ)句內(nèi)有效,3.C程序運(yùn)行過(guò)程,程序的有關(guān)概念,程序:程序是一組計(jì)算機(jī)可以識(shí)別和執(zhí)行的指令,每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。,源程序:用高級(jí)語(yǔ)言或匯編語(yǔ)言編寫(xiě)的程序稱為源程序。源程序不能直接在計(jì)算機(jī)上執(zhí)行,需要經(jīng)過(guò)“編譯”將其翻譯為二進(jìn)制形式的代碼。,目標(biāo)程序:源程序經(jīng)過(guò)“編譯”所得到的二進(jìn)制代碼為目標(biāo)程序。其擴(kuò)展名為“.OBJ”。目標(biāo)代碼盡管已經(jīng)是機(jī)器指令,但是還不能運(yùn)行,因?yàn)樗€沒(méi)有解決函數(shù)調(diào)用問(wèn)題。,可執(zhí)行程序:目標(biāo)程序與庫(kù)函數(shù)進(jìn)行連接,形成完整的可在操作系統(tǒng)下獨(dú)立執(zhí)行的程序稱為可執(zhí)行程序。其擴(kuò)展名為“.EXE”,3.C程序運(yùn)行過(guò)程,①編輯:將源程序輸入到計(jì)算機(jī)中,并將源程序保存在磁盤(pán)文件中(注意BC環(huán)境下的擴(kuò)展名為.cpp)②編譯:將源程序翻譯成二進(jìn)制的目標(biāo)代碼,同時(shí)對(duì)源程序進(jìn)行語(yǔ)法檢查,如果有錯(cuò)誤則修改源程序,然后再編譯,反復(fù)該過(guò)程直到?jīng)]有錯(cuò)誤位置(注意將正確的源程序再保存一遍)③連接:將各模塊的二進(jìn)制目標(biāo)代碼與系統(tǒng)標(biāo)準(zhǔn)模塊連接處理后,得到一個(gè)可執(zhí)行文件(*.exe文件)④執(zhí)行:運(yùn)行可執(zhí)行文件,檢查結(jié)果是否正確,如果有錯(cuò)誤則應(yīng)修改源程序,再重復(fù)以上步驟,直至程序運(yùn)行正確,編輯,編譯,連接,執(zhí)行,C程序的運(yùn)行步驟,編寫(xiě)簡(jiǎn)單的C語(yǔ)言程序,例1-5a瓶裝醬油,b瓶裝醋,請(qǐng)將醬油和醋進(jìn)行交換,即a瓶裝醋,b瓶裝醬油,方法:拿一個(gè)空瓶c,先將a瓶中的醬油倒入c瓶,再將b瓶中的醋倒入a瓶,最后將c瓶中的醬油倒入b瓶,編程思路:a、b、c瓶可以認(rèn)為是3個(gè)變量,醬油和醋假設(shè)用整數(shù)表示,用整數(shù)8表示醬油,5表示醋,a瓶的醬油倒入c瓶可以認(rèn)為是將變量a的值賦給變量c,#includevoidmain(){inta=8,b=5,c;c=a;a=b;b=c;printf(“a=%d,b=%d\n”,a,b);},編寫(xiě)簡(jiǎn)單的C語(yǔ)言程序,#includevoidmain(){inta,b,c;floatave;//變量定義scanf(“%d%d%d”,//輸出平均值},例1-6求任意三個(gè)整數(shù)的平均值,編程思路:首先要有3個(gè)整數(shù),這3個(gè)數(shù)可以用a、b、c3個(gè)整型變量存放其次平均值應(yīng)該用一個(gè)變量保存,該變量應(yīng)該是實(shí)數(shù)類型求任意3個(gè)整數(shù)的平均值,所以這3個(gè)數(shù)應(yīng)該從鍵盤(pán)輸入計(jì)算平均值:(a+b+c)/3.0,因?yàn)镃語(yǔ)言中兩個(gè)整數(shù)相除得到的結(jié)果也是整數(shù)(去掉小數(shù)部分),為保證結(jié)果正確必須用實(shí)數(shù)3.0,編寫(xiě)簡(jiǎn)單的C語(yǔ)言程序,例1-7計(jì)算圓柱體的表面積,計(jì)算公式如下:s=s1+2*s2//s表示圓柱體的表面積s1=2*π*r*h//s1表示側(cè)面積s2=π*r*r//s2表示底面積,編程思路:首先要定義幾個(gè)變量,應(yīng)該定義r、h、s(s1和s2可以不定義)其次r和h應(yīng)該具有數(shù)據(jù),才能進(jìn)行計(jì)算,因此先輸入r和hπ怎么處理?定義一個(gè)符號(hào)常量,令其值為3.1415926按公式計(jì)算:s=2*π*r*h+2*π*r*r輸出結(jié)果,#include#definePI3.1415926//定義一個(gè)符號(hào)常量PIvoidmain(){floatr,h,s;//定義3個(gè)實(shí)數(shù)類型的變量printf(“inputr,h:\n”);//提示用戶輸入r,hscanf(“%f%f”,//輸出表面積},4.C語(yǔ)言基本語(yǔ)法,1、C語(yǔ)言字符集字符是C語(yǔ)言最基本的元素,C語(yǔ)言字符集由字母、數(shù)字、空白、標(biāo)點(diǎn)符號(hào)和特殊字符組成,C程序是用下列字符所組成的字符集寫(xiě)成的:(1)字母:A--Z,a--z(2)數(shù)字:0--9(3)標(biāo)點(diǎn)符號(hào)、特殊字符(28個(gè)):!#%^:?"()[]{},(4)空白符:空格,制表符(Tab跳格健),換行符的總稱??瞻追嗽谧址?、字符串中有意義外,在程序中只起間隔作用,編譯系統(tǒng)會(huì)忽略其它位置的空白符。,4.C語(yǔ)言基本語(yǔ)法,2、標(biāo)識(shí)符標(biāo)識(shí)符是給程序中的實(shí)體所起的名字,標(biāo)識(shí)符的命名規(guī)則①以字母或下劃線開(kāi)頭,由字母,數(shù)字和下劃線組成的字符序列②標(biāo)識(shí)符不能與C語(yǔ)言的關(guān)鍵字重名③建議用戶定義標(biāo)識(shí)符時(shí)盡量不用下劃線開(kāi)頭④注意標(biāo)識(shí)符的有效長(zhǎng)度在bc31中有效長(zhǎng)度為31個(gè)字符⑤標(biāo)識(shí)符中區(qū)分大,小寫(xiě)字母如:sum和SUM是不同的標(biāo)識(shí)符,定義標(biāo)識(shí)符應(yīng)遵循的原則①盡量做到見(jiàn)名知義②一般習(xí)慣上變量名、函數(shù)名用小寫(xiě),而符號(hào)常量用大寫(xiě)③應(yīng)盡量避免使用容易認(rèn)錯(cuò)的字符如:數(shù)字1和小寫(xiě)字母l,4.C語(yǔ)言基本語(yǔ)法,3、關(guān)鍵字關(guān)鍵字是C語(yǔ)言預(yù)先定義的、具有特定意義的標(biāo)識(shí)符,也稱為保留字。C語(yǔ)言包括32個(gè)關(guān)鍵字:,注意:C語(yǔ)言的關(guān)鍵字都是小寫(xiě),不能重新定義關(guān)鍵字,4.C語(yǔ)言基本語(yǔ)法,4、運(yùn)算符運(yùn)算符是用于描述某種運(yùn)算功能的符號(hào),如+-*/等,運(yùn)算符可以由一個(gè)或多個(gè)字符組成。根據(jù)參與運(yùn)算的操作數(shù)個(gè)數(shù),可分為:單目(一元)運(yùn)算符、雙目(二元)運(yùn)算符和三目(三元)運(yùn)算符,逗號(hào)運(yùn)算符:,指針和地址運(yùn)算符:*中的空格和逗號(hào)都起著分隔符的作用,如果沒(méi)有空格程序就會(huì)出錯(cuò),少了逗號(hào)xy就會(huì)被認(rèn)為是一個(gè)變量。,6、其他符號(hào)花括號(hào){}通常用于標(biāo)識(shí)函數(shù)體或一個(gè)復(fù)合語(yǔ)句。/*……*/構(gòu)成一組注釋符。編譯時(shí)系統(tǒng)將忽略注釋。(1)注釋在程序中起提示、解釋作用。(2)在程序調(diào)試過(guò)程中使用注釋可以暫時(shí)屏蔽一些語(yǔ)句。,5.C語(yǔ)言數(shù)據(jù)類型,在c語(yǔ)言中,每個(gè)數(shù)據(jù)都屬于一個(gè)確定的數(shù)據(jù)類型。不同的數(shù)據(jù)類型在數(shù)據(jù)表示形式、取值范圍、占用內(nèi)存空間大小、可參與的運(yùn)算種類等方面都有所不同。,數(shù)據(jù)類型,5.C語(yǔ)言數(shù)據(jù)類型,#include#definePI3.14voidmain(){intr;floatc,s,v;r=3;c=2*PI*r;s=PI*r*r;printf(“%f,%f”,c,s);},例1-9:計(jì)算圓的周長(zhǎng)和面積,,什么是常量和符號(hào)常量?,,,什么是變量、怎樣進(jìn)行變量聲明?什么是整型數(shù)據(jù)、實(shí)型數(shù)據(jù)?,,,整型常量、變量、實(shí)型變量的使用?,,如何使用printf輸出函數(shù)?,5.C語(yǔ)言數(shù)據(jù)類型,,常量:在程序執(zhí)行期間值不發(fā)生變化的量,1、直接常量:15,2.4,‘f’,“asd”,#include#definePI3.14voidmain(){intr;floatc,s,v;r=3;c=2*PI*r;s=PI*r*r;printf(“%f,%f”,c,s);},2、符號(hào)常量:在程序中用標(biāo)識(shí)符代表的常數(shù)定義符號(hào)常量的格式:#define標(biāo)識(shí)符常數(shù),3、使用符號(hào)常量的優(yōu)點(diǎn)(1)含義清楚(2)修改方便,3.14159,5.C語(yǔ)言數(shù)據(jù)類型,1.變量的聲明格式:數(shù)據(jù)類型變量名列表;,如:intr;floatc,s,v;,變量名,變量值,存儲(chǔ)空間,說(shuō)明:①進(jìn)行變量聲明后,計(jì)算機(jī)系統(tǒng)會(huì)為聲明的變量分配存儲(chǔ)空間,用以存放數(shù)據(jù).②變量的存儲(chǔ)空間可能由一個(gè)或多個(gè)字節(jié)組成,內(nèi)存中的每個(gè)字節(jié)都有自己的地址,變量名實(shí)際上是一個(gè)符號(hào)地址,在程序中對(duì)變量的賦值和取值操作實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,然后從對(duì)應(yīng)的存儲(chǔ)空間中讀取數(shù)據(jù),變量:在程序執(zhí)行期間值可以變化的量,5.C語(yǔ)言數(shù)據(jù)類型,整型數(shù)據(jù)1、整型常量的表示方法(1)十進(jìn)制整數(shù)56,-23,0(2)八進(jìn)制整數(shù)以零開(kāi)頭034,012(3)十六進(jìn)制整數(shù)以0 x開(kāi)頭0 x28,0 x1fa9,5.C語(yǔ)言數(shù)據(jù)類型,例1-10:#includevoidmain(){intx,y,z;x=10;y=010;z=0 x10;printf(“x=%d,y=%d,z=%d\n”,x,y,z);printf(“x=%d,y=%o,z=%x\n”,x,y,z);y=017;z=0 x2b;printf(“y=%d,z=%d\n”,y,z);printf(“y=%o,z=%x\n”,y,z);},輸出結(jié)果:x=10,y=8,z=16x=10,y=10,z=10y=15,z=43y=17,z=2b,%o按八進(jìn)制形式輸出數(shù)據(jù)%x按十六進(jìn)制形式輸出數(shù)據(jù),5.C語(yǔ)言數(shù)據(jù)類型,2、整型變量在內(nèi)存的存放形式數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放,一個(gè)整型變量在內(nèi)存中占用2個(gè)字節(jié),每個(gè)字節(jié)有8個(gè)比特(比特只能取0或1),例:intx=10;,說(shuō)明:內(nèi)存中存放的實(shí)際是數(shù)據(jù)的補(bǔ)碼正數(shù)的補(bǔ)碼為其二進(jìn)制形式;負(fù)數(shù)的補(bǔ)碼是將該負(fù)數(shù)絕對(duì)值的二進(jìn)制形式按位取反再加1,例:intx=-10;,x的存放形式:,10的二進(jìn)制形式:,-10在內(nèi)存中的存放形式:,取反,+1,5.C語(yǔ)言數(shù)據(jù)類型,3、整型變量的分類有符號(hào)基本整型[signed]int無(wú)符號(hào)基本整型unsignedint有符號(hào)短整型[signed]short[int]無(wú)符號(hào)短整型unsignedshort[int]有符號(hào)長(zhǎng)整型[signed]long[int]無(wú)符號(hào)長(zhǎng)整型unsignedlong[int],說(shuō)明:[]括起來(lái)的為可選項(xiàng),說(shuō)明變量時(shí)可以省略不寫(xiě),例:intx,y;shorta,b;unsignedlongm;,5.C語(yǔ)言數(shù)據(jù)類型,(1)帶符號(hào)整數(shù):存儲(chǔ)時(shí)最高位表示符號(hào),0為正,1為負(fù)①正數(shù)的補(bǔ)碼為其二進(jìn)制數(shù),(計(jì)算214+213+……+22+21+20=16384+8192+……+4+2+1=32767),int型的正數(shù)最大值為32767?,②負(fù)數(shù)的補(bǔ)碼:用二進(jìn)制表示其絕對(duì)值,然后按位取反,再加1,由二進(jìn)制補(bǔ)碼求十進(jìn)制負(fù)數(shù):補(bǔ)碼先減1,再按位取反,將二進(jìn)制數(shù)化為十進(jìn)制數(shù),最后加上負(fù)號(hào),int型的負(fù)數(shù)的最小值為–32768?,5.C語(yǔ)言數(shù)據(jù)類型,(2)無(wú)符號(hào)整數(shù):最高位與其他位一起表示數(shù)值,只能存放正數(shù)它與同樣長(zhǎng)度帶符號(hào)整數(shù)相比,所能表示的正數(shù)值擴(kuò)大一倍范圍是:0000000000000000----1111111111111111即0----65535(215+214+……+21+20),4、整型數(shù)據(jù)的溢出例:inta,b,c;a=32767;b=a+1;c=b+3;,-32768,-32765,+1,+11,供參考,5.C語(yǔ)言數(shù)據(jù)類型,1、實(shí)型常量的表示方法小數(shù)形式:2.4,-9.6,3.,.75指數(shù)形式:3.14e0,31.4E–1,2、實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式一個(gè)實(shí)型數(shù)據(jù)(float型)在內(nèi)存中占4個(gè)字節(jié),實(shí)型數(shù)據(jù)按指數(shù)形式存儲(chǔ),系統(tǒng)把實(shí)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分。常用的C編譯系統(tǒng)多用1位表示符號(hào),用8位表示指數(shù)部分,用23位表示小數(shù)部分,實(shí)型數(shù)據(jù),小數(shù)點(diǎn)前后的0可以省略,E前面必須有數(shù),且后面的數(shù)必須為整數(shù),5.C語(yǔ)言數(shù)據(jù)類型,3、實(shí)型變量的分類單精度f(wàn)loat雙精度double長(zhǎng)雙精度longdouble,4、實(shí)型數(shù)據(jù)的舍入誤差由于不同類型的實(shí)型數(shù)據(jù)在計(jì)算機(jī)中有效數(shù)字的位數(shù)不同,有時(shí)不能精確表示某個(gè)實(shí)數(shù),只能近似表示,所以應(yīng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加減。,例:#includevoidmain(){floatx,y;x=123456.789e5;y=x+20;printf("x=%f,y=%f\n",x,y);},我們認(rèn)為x=12345678900.00但因?yàn)橛行?shù)字位數(shù)的原因計(jì)算機(jī)上輸出的是:x=12345678848.000000y=12345678848.000000,一個(gè)實(shí)型常數(shù)默認(rèn)為double型;要表示float型數(shù),必須在實(shí)數(shù)后加字母f或F;要表示longdouble型數(shù),必須在實(shí)數(shù)后加字母l或L。,5.C語(yǔ)言數(shù)據(jù)類型,1、字符常量:用單引號(hào)括起來(lái)的一個(gè)字符如:‘s’,‘*’,‘6’,說(shuō)明:1.‘a(chǎn)’和‘A’是兩個(gè)不同的字符2.單引號(hào)內(nèi)不能是單引號(hào)或反斜杠3.轉(zhuǎn)義字符如:‘\n’,‘\\’表示反斜杠,‘\’’表示單引號(hào),2、字符變量例:chara,b,c;a=‘g’;b=‘$’;c=‘6’;,3、字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法(1)字符數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,占1個(gè)字節(jié),如:字符‘A’,其ASCII碼為65,內(nèi)存中存放為,字符型數(shù)據(jù),詳見(jiàn)表1.4,5.C語(yǔ)言數(shù)據(jù)類型,(2)字符數(shù)據(jù)和整數(shù)在一定范圍內(nèi)互相通用,#includevoidmain(){charch;ch=‘a(chǎn)’;printf(“%c\n”,ch);printf(“%d\n”,ch);},輸出:a97,#includevoidmain(){charch;intx;ch=‘A’;x=ch+32;printf(“x=%d,ch=%c\n”,x,ch);printf(“%c\n”,x);},輸出:x=97,ch=Aa,,②字符數(shù)據(jù)與整數(shù)進(jìn)行算術(shù)運(yùn)算,①字符數(shù)據(jù)用整數(shù)形式輸出,5.C語(yǔ)言數(shù)據(jù)類型,4、字符串常量:由一對(duì)雙引號(hào)括起來(lái)的字符序列如:“abcd”,“w123”,“k”,“”,注意:‘k’與“k”是不同的‘k’是字符常量,在內(nèi)存中占1個(gè)字節(jié),“k”是字符串常量,在內(nèi)存中占2個(gè)字節(jié),字符串常數(shù)在存儲(chǔ)時(shí)計(jì)算機(jī)系統(tǒng)會(huì)自動(dòng)在字符串末尾加一個(gè)結(jié)束標(biāo)志‘\0’,因此字符串的實(shí)際長(zhǎng)度為字符個(gè)數(shù)加1,6.數(shù)據(jù)的輸入輸出,一、printf函數(shù)格式:printf(格式控制,輸出表列);如:printf(“%f,%f”,c,s);printf(“x=%d,y=%d,z=%d\n”,x,y,z);,1、格式控制:用“”括起來(lái)的字符串,包括如下兩個(gè)部分(1)普通字符(包括轉(zhuǎn)義字符):需要原樣輸出的字符如:printf(“x=%d,y=%d,z=%d\n”,x,y,z);,(2)格式說(shuō)明:由%和格式字符及附加格式說(shuō)明字符組成%-0m.nl格式字符其作用是將輸出數(shù)據(jù)按指定的格式輸出,C語(yǔ)言的輸入/輸出均由函數(shù)來(lái)實(shí)現(xiàn),在使用輸入輸出函數(shù)時(shí),應(yīng)在程序開(kāi)頭寫(xiě)預(yù)編譯命令:#include,6.數(shù)據(jù)的輸入輸出,①格式字符:指定輸出項(xiàng)的數(shù)據(jù)類型和輸出格式②長(zhǎng)度修正符:輸出長(zhǎng)整型和double型必須加l③域?qū)捈熬让枋龇鹠.n(m控制域?qū)?n控制小數(shù)位數(shù))④數(shù)0用以在指定數(shù)字前的空位是否用0填補(bǔ)(對(duì)整型,實(shí)型可用)⑤負(fù)號(hào)用以指定輸出項(xiàng)是否為左對(duì)齊方式,%-0m.nl格式字符,例3:floatx=6.85;printf(“x=%f\n”,x);printf(“x=%4.2f\n”,x);printf(“x=%8.4f\n”,x);printf(“x=%08.4f\n”,x);printf(“x=%-8.4f\n”,x);,輸出結(jié)果:x=6.850000 x=6.85x=□□6.8500 x=006.8500 x=6.8500□□,6.數(shù)據(jù)的輸入輸出,例:inta=123,b=-1;floatx=12.34;charch=65;printf(“a=%d,b=%d\n”,a,b);printf(“a=%x,b=%x\n”,a,b);printf(“a=%o,b=%o\n”,a,b);printf(“a=%u,b=%u\n”,a,b);,輸出結(jié)果:a=123,b=-1a=7B,b=ffffa=173,b=177777a=123,b=65535,,,6.數(shù)據(jù)的輸入輸出,例:inta=123;floatx=12.345;printf(“a=%5d\n”,a);printf(“a=%-5d\n”,a);printf(“a=%2d\n”,a);printf(“a=%-5X\n”,a);printf(“x=%7.2f\n”,x);printf(“x=%.2f\n”,x);printf(“x=%10.2e\n”,x);printf(“x=%2e\n”,x);printf(“%5.3s\n”,”computer”);printf(“%3s\n”,”computer”);,輸出結(jié)果:a=□□123a=123□□a=123a=7B□□□x=□□12.35x=12.35x=□1.23e+001x=1.234500e+001□□comcomputer,6.數(shù)據(jù)的輸入輸出,2、輸出表列:輸出項(xiàng)可以是常量,變量,表達(dá)式,例:intx=8,y=-2;printf(“%d\n”,25);printf(“x=%d\n”,x);printf(“x*y=%d\n”,x*y);printf(“|y|=%d\n”,fabs(y));,輸出結(jié)果:25x=8x*y=-12|y|=2,6.數(shù)據(jù)的輸入輸出,二、scanf函數(shù)的格式scanf(格式控制,變量地址表列);,1、格式控制(1)格式說(shuō)明%*ml格式字符①m用以指定輸入數(shù)據(jù)的寬度②*是賦值抑制符:表示相應(yīng)的輸入數(shù)據(jù)不賦給對(duì)應(yīng)變量,例:inta,b;scanf(“%d%3d”,,若輸入:453896↙則輸出:a=45,b=389,例:floatx,y;scanf(“%f%4f”,,若輸入:3.48.962↙則輸出:x=3.400000,y=8.960000,6.數(shù)據(jù)的輸入輸出,例:charm,n;scanf(“%3c%c”,,若輸入:abcde↙則輸出:m=a,n=d,例:inta,b;scanf(“%d%*d%d”,,若輸入:453896↙則輸出:a=45,b=96,(2)格式控制中的其他字符:輸入數(shù)據(jù)時(shí)要輸入與其相同的字符如scanf(“a=%d,b=%d”,則輸入必須是:a=12,b=45↙,2、變量地址表列:由變量地址組成變量地址是在變量名前加地址運(yùn)算符“b=‘O’;putchar(a);putchar(b);putchar(‘Y’);},輸出:BOY,注意:putchar函數(shù)只能有一個(gè)參數(shù),6.數(shù)據(jù)的輸入輸出,供參考,四、字符輸入函數(shù)(getchar函數(shù))格式:getchar()(注意它是無(wú)參函數(shù))功能:從鍵盤(pán)輸入一個(gè)字符,例:#includevoidmain(){charch;ch=getchar();putchar(ch);putchar(‘\n’);putchar(getchar());printf(“*\n”);},輸入:ABC↙輸出:AB*,注意:一般要連續(xù)輸入可顯示字符若中間有空格、回車等字符在輸出時(shí)是不可見(jiàn)的,輸入:ABC↙輸出:A*,輸出空格符,6.數(shù)據(jù)的輸入輸出,供參考,Classisover,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序 基礎(chǔ) 程序結(jié)構(gòu)
鏈接地址:http://www.3dchina-expo.com/p-11548932.html