C語言程序設(shè)計_03順序結(jié)構(gòu)程_第1頁
C語言程序設(shè)計_03順序結(jié)構(gòu)程_第2頁
C語言程序設(shè)計_03順序結(jié)構(gòu)程_第3頁
C語言程序設(shè)計_03順序結(jié)構(gòu)程_第4頁
C語言程序設(shè)計_03順序結(jié)構(gòu)程_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章 順序結(jié)構(gòu)程序設(shè)計3.1 C的語句3.2 賦值運算與賦值語句3.3 數(shù)據(jù)輸入/輸出3.4 順序結(jié)構(gòu)程序舉例本章小結(jié)3.1 C 的 語 句C語言中語句的分類如圖3-1所示。 圖3-1 C語句的分類3.1.1 簡單語句1表達式語句在表達式之后加上分號就構(gòu)成表達式語句。一般形式為:表達式;最典型的表達式語句是由賦值表達式構(gòu)成的語句。例如:M+=X;I=J=K=5;都是由賦值表達式構(gòu)成的表達式語句。由賦值表達式構(gòu)成的語句習(xí)慣稱為賦值語句。其他表達式加分號也構(gòu)成了語句。例如:X+Y-Z;也是一個語句。不過從語義上講,該語句沒有實際意義。因為求表達式X+Y-Z的值之后,沒有保留,對變量X、Y、Z的值

2、也沒有影響。另一種典型的表達式語句是函數(shù)調(diào)用之后加分號,一般形式為:函數(shù)調(diào)用;該表達式語句未保留函數(shù)調(diào)用的返回值。但該表達式語句中的函數(shù)調(diào)用引起實參與形參的信息傳遞和函數(shù)體的執(zhí)行,將使許多變量的值被設(shè)定或完成某種特定的處理。如調(diào)用輸入函數(shù)使指定的變量獲得輸入數(shù)據(jù),調(diào)用輸出函數(shù)使輸出項輸出等。2空語句空語句是什么也不做的語句,它只有一個分號。C語言引入空語句是出于兩個實用上的考慮:一是為了構(gòu)造特殊控制的需要。如循環(huán)控制結(jié)構(gòu)需要一個語句作為循環(huán)體,當需循環(huán)執(zhí)行的動作已全部由循環(huán)控制部分完成時,就需要一個空語句的循環(huán)體;二是在復(fù)合語句的末尾設(shè)置一個空語句,以便能用GOTO語句將控制轉(zhuǎn)移到復(fù)合語句的末

3、尾。另外,C語言引入空語句使程序中連續(xù)出現(xiàn)多個分號不再是錯誤,編譯系統(tǒng)遇到這種情況,就認為后繼的分號都是空語句。3.1.2 復(fù)合語句用花括號將若干個語句括起來就構(gòu)成了復(fù)合語句。它將若干個語句變成一個順序執(zhí)行的整體,從邏輯上講它相當于一個語句,能用作其他控制結(jié)構(gòu)的成分語句。例如交換兩個整型變量A、B的值,作為一個復(fù)合語句寫成: INT T; T=A; A=B; B=T;在構(gòu)造復(fù)合語句時,為完成復(fù)合語句所要完成的操作,可能需要臨時工作單元。如上面例子中的變量T。在C語言的復(fù)合語句中,在語句序列之前可以插入變量定義,引入只有在復(fù)合語句內(nèi)部才可使用的臨時單元。注意:復(fù)合語句的“”后面不能出現(xiàn)分號,而“

4、”前復(fù)合語句中最后一條語句的分號不能省略。例如:T=A; A=B; B=T;和T=A; A=B; B=T第一個復(fù)合語句語句后面加了分號,實際上構(gòu)成了一個空語句,即相當于寫了兩個語句,一個是復(fù)合語句,另一個是空語句。第二個復(fù)合語句中的第三個語句沒有分號,因此是錯誤的復(fù)合語句。3.1.3 流程控制語句C語言中控制程序流程的語句有3類,共9種語句。1選擇語句選擇語句有IF語句和SWITCH語句兩種。IF語句根據(jù)實現(xiàn)選擇分支的多少又有多種格式,包括單分支、雙分支和多分支IF語句。SWITCH語句能實現(xiàn)多個分支流程。2循環(huán)語句循環(huán)語句有WHILE、DOWHILE和FOR語句3種。當循環(huán)語句的循環(huán)控制條件

5、為真時,反復(fù)執(zhí)行指定操作,是C語言中專門用來構(gòu)造循環(huán)結(jié)構(gòu)的語句。3轉(zhuǎn)移語句轉(zhuǎn)移語句有BREAK、CONTINUE、RETURN和GOTO共4種。它們都能改變程序原來的執(zhí)行順序并轉(zhuǎn)移到其他位置繼續(xù)執(zhí)行。例如,循環(huán)語句中BREAK語句終止該循環(huán)語句的執(zhí)行,而循環(huán)語句中的CONTINUE語句只結(jié)束本次循環(huán)并開始下次循環(huán),RETURN語句用來從被調(diào)函數(shù)返回到主調(diào)函數(shù)并帶回函數(shù)的運算結(jié)果,GOTO語句可以無條件轉(zhuǎn)向任何指定的位置執(zhí)行。3.2 賦值運算與賦值語句賦值語句是高級語言中用來實現(xiàn)運算的一個重要語句,而且賦值語句可以將運算結(jié)果存起來。C語言將賦值也看作一種運算,賦值運算構(gòu)成賦值表達式,賦值表達式后

6、面加上分號就構(gòu)成了賦值語句。3.2.1 賦值運算1賦值運算的一般形式在C語言中,通常把“=”稱為賦值號,也叫賦值運算符。它是一個雙目運算符,需要連接兩個運算量:左邊必須是變量,右邊則是表達式。賦值運算的一般形式為:變量=表達式賦值運算的意義是先計算表達式的值,然后將該值傳送到變量所對應(yīng)的存儲單元中。即計算表達式的值,并將該值賦給變量。賦值表達式的值即是被賦值變量的值。賦值運算實際上代表一種傳送操作(MOVE),即將賦值號右邊表達式的值傳送到左邊變量所對應(yīng)的存儲單元中。在這里,變量與確定的內(nèi)存單元相聯(lián)系,既具有值屬性,也具有地址屬性,它可以出現(xiàn)在賦值運算符的左邊,故稱為左值(LEFT VALUE

7、)表達式。將常量、變量、函數(shù)等運算對象用運算符連接起來的表達式,只有值屬性而無地址屬性,它只能出現(xiàn)在賦值運算符的右邊,故稱為右值(RIGHT VALUE)表達式。注意:賦值運算符左邊一定要求是左值表達式,它代表一定的內(nèi)存單元,顯然只有內(nèi)存單元才能存放表達式的值。賦值右邊可以是任何表達式。2復(fù)合賦值運算在程序設(shè)計中,經(jīng)常遇到在變量已有值的基礎(chǔ)上作某種修正的運算。如X=X+5.0。 這類運算的特點是:變量既是運算對象,又是賦值對象。為避免對同一存儲對象的地址重復(fù)計算,C語言還提供了10種復(fù)合賦值運算符:+=、-=、*=、/=、%=、=、&=、|=、=其中,前5種是常用的算術(shù)運算,后5種是關(guān)于位運算

8、的復(fù)合賦值運算符。一般地,記為一個雙目運算符,復(fù)合賦值運算的格式為:X=E其等價的表達式為:X=X(E)注意:當E是一個復(fù)雜表達式時,等價表達式的括號是必需的。即E表示表達式,使用復(fù)合賦值運算符連接兩個運算量時,要把右邊的運算量視為一個整體。例如,X*=Y+5表示X=X*(Y+5),而不是X=X*Y+5。自增運算符+和自減運算符-是復(fù)合賦值運算符中的特殊情況,它們分別相當于+=和-=。例如,X+包含有賦值運算X+=1,-K包含有賦值運算K-=1。3賦值運算的優(yōu)先級各種賦值運算符都屬于同一優(yōu)先級,且優(yōu)先級僅比逗號運算符高,比其他所有運算符都低。例如:X=13Y,7+(Y=8)表達式中有算術(shù)運算符

9、、關(guān)系運算符、賦值運算符和逗號運算符,運算順序依次是Y=87+(Y=8)13YX=13YX=13Y,7+(Y=8),運算完成后X的值為0,Y的值為8,整個表達式是一個逗號表達式,表達式的值為15。如果將表達式改成:X=(13Y,7+(Y=8)則整個表達式變成了一個賦值表達式,將右邊逗號表達式的值賦給左邊變量X。賦值表達式的結(jié)合性為從右到左。例如:X=Y=17/2運算時先計算17/2,結(jié)果為8,將8賦給Y,即賦值表達式Y(jié)=17/2的值為8,再將該賦值表達式的值賦給X。整個運算按照自右至左的順序計算。4賦值運算的副作用C語言允許在一個表達式中使用一個以上的賦值類運算符(包括賦值運算符、復(fù)合賦值運算

10、符、自增運算符、自減運算符等),使程序簡潔,但同時也造成了閱讀與理解程序的困難,所以用戶應(yīng)該有限制地使用復(fù)合賦值運算符或者用圓括號加以說明。賦值運算所引起的副作用表現(xiàn)在不易理解和結(jié)果不確定兩個方面。(1)不易理解。(2)結(jié)果不確定。為了提高程序的可移植性,應(yīng)當將表達式分解,使之在任何機器上運行都能得到同一結(jié)果。3.2.2 賦值語句用賦值運算符連接兩個運算量就得到賦值表達式,在賦值表達式后面加分號就構(gòu)成賦值語句。賦值語句的一般形式為:變量=表達式;執(zhí)行賦值語句將實現(xiàn)一個賦值操作,即先計算表達式的值,然后將該值傳送到變量所對應(yīng)的存儲單元中。賦值語句與賦值表達式不一樣,賦值語句可以作為程序中一個獨立

11、的程序行,而賦值表達式是作為一個運算量,可以出現(xiàn)在表達式中。當然,在進行賦值運算時,也實現(xiàn)了一個賦值操作。3.2.3 賦值時的數(shù)據(jù)類型轉(zhuǎn)換賦值表達式的類型就是被賦值變量的類型。當賦值運算符兩邊的數(shù)據(jù)類型不一致時,C編譯系統(tǒng)自動將賦值運算符右邊表達式的數(shù)據(jù)類型轉(zhuǎn)換成與左邊變量相同的類型。轉(zhuǎn)換的基本原則是:(1)將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。(2)將實型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,先舍去實數(shù)的小數(shù)部分,然后賦給整型變量。如A為整型變量,則執(zhí)行A=3.145后,A的值為3。(3)將一個DOUBLE型數(shù)據(jù)賦給FLOAT變量時,截取其前面7位有效數(shù)字,存

12、放到FLOAT變量的存儲單元(4個字節(jié))中,但應(yīng)注意數(shù)值范圍不能溢出。將一個FLOAT型數(shù)據(jù)賦給DOUBLE變量時,數(shù)值不變,有效位數(shù)擴展到16位,在內(nèi)存中以8個字節(jié)存儲。(4)字符型數(shù)據(jù)賦給整型變量時,將字符的ASCII碼值賦給整型變量。(5)將一個占字節(jié)多的整型數(shù)據(jù)賦給一個占字節(jié)少的整型變量或字符變量(如把一個4字節(jié)的LONG型數(shù)據(jù)賦給一個2字節(jié)的SHORT型變量,或?qū)⒁粋€2字節(jié)或4字節(jié)的INT型數(shù)據(jù)賦給1字節(jié)的CHAR型變量),只將其低字節(jié)原封不動地送到該變量(即發(fā)生截斷)。例如:INT I=8808; CHAR CH;CH=I;PRINTF(“%D %CN”,I,CH);程序段運行結(jié)果

13、如下:8808 H在TURBO C 2.0中INT型變量I占2個字節(jié),其中存放整型數(shù)據(jù)8808,二進制存儲格式為:0010001001101000截去高8位后,余下的低8位的值是104,它代表字符H。在VISUAL C+6.0中INT型變量I占4個字節(jié),存儲整型數(shù)據(jù)8808的兩個高位字節(jié)為0,兩個低位字節(jié)與TURBO C 2.0相同。(6)將有符號整數(shù)賦值給長度相同的無符號整型變量時,按字節(jié)原樣連原有的符號位也作為數(shù)值一起賦值。例如:INT A=-1;UNSIGNED INT B; B=A;PRINTF(“%D,%UN”,A,B);在TURBO C 2.0環(huán)境中,INT型變量占2個字節(jié),A為負

14、數(shù)時,按補碼存儲,其二進制存儲格式為16個1,將它轉(zhuǎn)換成UNSIGNED INT型后,將最高位的符號位也視為數(shù)值位,所以其值為65 535(216-1)。由于B是無符號整型變量,因此,不能用%D輸出格式符,而要用輸出無符號數(shù)的%U格式符。在TURBO C 2.0環(huán)境下程序段的運行結(jié)果為:-1,65535在VISUAL C+ 6.0環(huán)境中,INT型變量占4個字節(jié),A為負數(shù)時,按補碼存儲,其二進制存儲格式為32個1,將它轉(zhuǎn)換成UNSIGNED INT型后,將最高位的符號位也視為數(shù)值位,所以其值為4 294 967 295(216-1)。在VISUAL C+ 6.0環(huán)境下程序段的運行結(jié)果為:-1,4

15、294967295(7)將無符號整數(shù)賦值給長度相同的有符號整型變量時,應(yīng)使符號位有效,但注意不要超出有符號整型變量的數(shù)值范圍,否則會出錯。例如:UNSIGNED A;INT B;A=65535;B=A;PRINTF(“%DN”,B);在TURBO C 2.0環(huán)境下執(zhí)行B=A時,將A的2個字節(jié)(全為1)原樣賦給B,由于B的數(shù)值范圍為-32 76832 767,顯然不能正確反映65 535,對一個有符號的整型數(shù)據(jù)來說,第1個二進位是1表示此數(shù)是一個負數(shù),16位全為1是-1的補碼。在TURBO C 2.0環(huán)境下運行,以上程序的輸出結(jié)果為-1。如果在VISUAL C+ 6.0環(huán)境下運行,將A=6553

16、5改為4294967295,輸出結(jié)果也是-1。以上的賦值規(guī)則比較復(fù)雜,涉及到數(shù)據(jù)在計算機內(nèi)部的表示方法。在剛開始學(xué)習(xí)時,不必深究轉(zhuǎn)換細則,只要知道基本的概念即可。3.3 數(shù)據(jù)輸入/輸出3.3.1 格式輸入/輸出1格式輸出函數(shù)PRINTF(1)PRINTF函數(shù)的調(diào)用形式PRINTF函數(shù)的作用是將輸出項按指定的格式輸出。一般調(diào)用形式為:PRINTF(格式控制字符串,輸出項表)其中,格式控制字符串用來確定輸出項的輸出格式和需要原樣輸出的字符。輸出項可以是常量、變量或表達式,輸出項表中的各輸出項之間要用逗號分隔。注意: 輸出項表中的每一個輸出項必須有一個與之對應(yīng)的格式說明。每個格式說明均以%開頭,以一

17、個格式符結(jié)束。輸出項與格式符必須按照從左到右的順序在類型上一一匹配。 當格式符個數(shù)少于輸出項時,多余的輸出項不予輸出。若格式符多于輸出項時,各個系統(tǒng)的處理不同。TURBO C和VISUAL C+對于缺少的項都輸出不定值。 用戶可以根據(jù)需要,指定輸出項的字段寬度,對于實型數(shù)據(jù)還可指定小數(shù)部分的位數(shù)。當指定的域?qū)挻笥谳敵鲰椀膶挾葧r,輸出采取右對齊方式,左邊填空格。若字段寬度前加一個-號,則輸出采取左對齊方式。 格式控制字符串可以包含轉(zhuǎn)義字符,如N、T等。 如果想輸出字符%,則應(yīng)在格式控制字符串中用連續(xù)的兩個百分號(即%)表示。 每次調(diào)用PRINTF函數(shù)后,函數(shù)將得到一個整型函數(shù)值,該值等于正常輸出

18、的字符個數(shù)。(2)格式說明格式說明以字符%開頭,格式符結(jié)束,中間可以插入附加格式說明符。格式說明的一般形式為:%-+#W.PH/L/L格式符其中用方括號括住的內(nèi)容可以缺省。 附加格式說明符W:字段寬度說明。-:左對齊標志。+:適用于帶符號的數(shù)值數(shù)據(jù)輸出,根據(jù)數(shù)值的正、負,在輸出項之前加上符號 + 或 - 。缺省時,只對負數(shù)輸出負號 - ??崭瘢喝魧?yīng)輸出的數(shù)值數(shù)據(jù)是一個正數(shù),符號用空格代替。若 + 和空格同時出現(xiàn),空格附加格式說明被略去。 #:適用于八進制數(shù)、十六進制數(shù)和浮點數(shù)格式輸出。.P:小數(shù)點和P,其中P為十進數(shù)。對于G或E格式輸出,P指明輸出精度(有效數(shù)字位數(shù)),缺省時,P=6。對于F

19、格式輸出,P指出輸出項小數(shù)點之后的數(shù)字個數(shù),缺省時,P=6。對于S格式輸出,P指明最多輸出字符串的前P個字符,多余截斷,缺省時,字符串的內(nèi)容全部輸出。對于D、I、O、U、X,表示至少出現(xiàn)的數(shù)字個數(shù)。同字段寬度說明一樣,P也可以是一個字符 * ,而實際值由后面一個整數(shù)參數(shù)的值給出,若該值為負值,相當于沒有給出P。H/L/L:長度修正符H用于格式符D、I、O、U、X,表示對應(yīng)的輸出項是短整型(SHORT)或無符號短整型(UNSIGNED SHORT)。長度修正符L用于格式符D、I、O、U、X,表示對應(yīng)的輸出項是長整型或無符號長整型。長度修正符L用于格式符E、F、G,表示對應(yīng)的輸出項是LONG DO

20、UBLE型。 格式符D格式符和I格式符:將輸出項作為帶符號整型數(shù)據(jù),并以十進制形式輸出。注意,對于LONG型數(shù)據(jù)輸出,必須在格式符之前插入L 附加格式說明符。O格式符:將輸出項作為無符號整型數(shù)據(jù),并以八進制形式輸出。由于將內(nèi)存單元中的各位值(0或1)按八進制形式輸出,輸出的數(shù)值不帶符號,符號位也一起作為八進制數(shù)的一部分輸出。X格式符:將輸出項作為無符號整型數(shù)據(jù),并以十六進制形式輸出。與O格式符一樣,符號作為十六進制數(shù)的一部分輸出。U格式符:將輸出項作為無符號整型數(shù)據(jù),以十進制形式輸出?!纠?.2】整型數(shù)據(jù)的輸出格式示例。C格式符:將輸出項作為字符,以字符形式輸出。一個整型數(shù)據(jù),只要它的值在02

21、55范圍內(nèi),可以用字符形式輸出,輸出以該整數(shù)為ASCII碼值的字符,反之,一個字符數(shù)據(jù)也可以用整數(shù)形式輸出,輸出該字符的ASCII碼值。S格式符:用于輸出一個字符串。【例3.3】字符型數(shù)據(jù)和字符串輸出格式示例。F格式符:以小數(shù)形式輸出實型數(shù)據(jù)。小數(shù)點后的數(shù)字個數(shù)為P個,P的默認值為6。若P為0,不顯示小數(shù)點。格式轉(zhuǎn)換時有四舍五入處理?!纠?.4】實型數(shù)據(jù)輸出精度測試。E格式符:以指數(shù)形式輸出實型數(shù)據(jù)。指數(shù)形式如下。-X.XXXXXEXX小數(shù)點前有1位非零數(shù)字,小數(shù)點后的數(shù)字個數(shù)為P-1個,P的默認值為6。若P為0, 不顯示小數(shù)點。格式轉(zhuǎn)換時有四舍五入處理。字符E之后是指數(shù),指數(shù)部分至少包含2位

22、數(shù)字。若輸出值的絕對值不少于1E+100,則指數(shù)部分多于2位數(shù)字。G格式符:用于輸出實型數(shù)據(jù),G格式能自動使用%F和%E表示中的較精確者來表示實數(shù)。另外,選擇這種輸出形式時,有無附加格式說明符#也對輸出形式有影響。如#缺省,輸出時,小數(shù)部分無意義的0及小數(shù)點不輸出;如有#,則無意義的0及小數(shù)點照常輸出。【例3.5】實型數(shù)據(jù)輸出格式示例。2格式輸入函數(shù)SCANFSCANF函數(shù)的作用是把從鍵盤上輸入的數(shù)據(jù)傳送給對應(yīng)的變量。一般調(diào)用形式為:SCANF(格式控制字符串,輸入項地址表)其中,格式控制字符串的含義同PRINTF函數(shù)。輸入項地址表是由若干個地址組成,代表每一個變量在內(nèi)存中的地址。格式控制字符

23、串通常包含格式說明,它直接用于解釋輸入字符序列??刂谱址梢园?空格、制表符或換行,它們使輸入讀到下一個非空格類字符。 普通字符(不包括%),它們應(yīng)與輸入串中下一個非空格符相匹配。 格式說明,以%開頭至格式符結(jié)束的字符序列組成。格式說明引導(dǎo)對下一輸入字段進行轉(zhuǎn)換。格式說明的一般形式為:%*WH/L/L格式符其中用方括號括住的內(nèi)容可以缺省,下面來說明它們的意義。 *:賦值抑制符,對應(yīng)的輸入項讀入后不賦予相應(yīng)的變量,即跳過該輸入值。帶星號的格式說明不對應(yīng)輸入項存儲地址,用它來跳過一個輸入數(shù)據(jù)項。 W:字段寬度說明,表示輸入數(shù)據(jù)項的字段寬度。若實際輸入字段寬度小于W,取實際寬度。除格式符C外,

24、輸入字段定義為從下一個非空格字符起(因此可能跳過若干個空格符、制表符或換行符),到一個與所解釋類型相矛盾的字符,或到由字段寬度說明的長度為止。 H/L/L:H修飾格式符D、I、O、U、X,表示讀入的整數(shù)轉(zhuǎn)換成短整型存儲;L修飾格式符D、I、O、U、X時,表示讀入的整數(shù)轉(zhuǎn)換成長整型存儲;L修飾格式符E、F、G時,表示讀入的實數(shù)是按DOUBLE型存儲。L修飾格式符E、F、G時,表示讀入的實數(shù)是按LONG DOUBLE型存儲。函數(shù)SCANF()的格式符很多,下面詳細介紹常用的輸入格式符。 D格式符:用來輸入整型數(shù)據(jù)。將輸入數(shù)據(jù)作為十進制形式的整型數(shù)據(jù)。將其轉(zhuǎn)換成二進制形式后,存儲到對應(yīng)數(shù)據(jù)存儲地址中

25、。一般從鍵盤讀入數(shù)據(jù),不指定輸入數(shù)據(jù)項的字段寬度,數(shù)據(jù)項與數(shù)據(jù)項之間用空格符、制表符或回車分隔。 I格式符:與D格式符一樣,用來輸入整型數(shù)據(jù)。當輸入的數(shù)據(jù)以0開頭時,則將輸入數(shù)據(jù)作為八進制整數(shù);若以0X開頭時,則為十六進制整數(shù);否則,將輸入數(shù)據(jù)作為十進制整數(shù)。 O格式符:除將輸入數(shù)據(jù)作為八進制形式的整型數(shù)據(jù)外,其作用與D格式相同。例如:SCANF(“%3O%O”,&I,&J)如輸入行為:12323將使變量I=83(即八進制數(shù)123),J=19(即八進制數(shù)23)。 X格式符:與O格式符類似,不過將輸入數(shù)據(jù)作為十六進制形式的整型數(shù)據(jù)。例如:SCANF(“%X%X”,&I,&J);如輸入行為:12

26、34將使變量I=18,J=52。 U格式符:用來輸入整型數(shù)據(jù),將輸入數(shù)據(jù)作為無符號整型數(shù)據(jù)。用以上格式為整型變量輸入整數(shù)時,若變量類型為短整型,則必須在格式符之前加長度修飾符H;若變量類型為長整型,則必須在格式符之前加長度修飾符L。 C格式符:用來輸入單個字符。對應(yīng)的輸入項存儲地址必須為字符存儲地址,把下一個輸入字符存于所指的位置。此時,不再有輸入整型數(shù)據(jù)那樣自動跳過空格符的處理,任何輸入字符都能被C格式讀入。 S格式符:用來輸入字符串,對應(yīng)的輸入項存儲地址為字符序列(數(shù)組)首地址,該數(shù)組必須大到足以容納可能輸入的最長字符串。在輸入字符串中,以非空格符(非空格、非制表符和非回車)開始,以后隨的

27、第一個空格符結(jié)束的非空格符字符序列作為一個字符串。SCANF()函數(shù)在輸入的字符序列之后自動添加字符串結(jié)束標志符“0”。 E、F、G格式符:用來輸入實數(shù),對應(yīng)的輸入項存儲地址為實型變量存儲地址。如格式說明中含有長度修飾符L,則為DOUBLE型變量地址;含有長度修飾符L,則為LONG DOUBLE型變量地址;否則,為FLOAT型變量地址。輸入數(shù)據(jù)的格式是由正負號(可省略)、十進制數(shù)字串、帶小數(shù)點的小數(shù)部分(可省略)、以E或E開頭的指數(shù)部分(可省略)組成。即:DDD.DDDEDDD其中DDD表示1個或多個數(shù)字組成的數(shù)字串;表示+(正號)或-(負號);表示其中的內(nèi)容可省略。注意: 格式符的個數(shù)必須與

28、輸入項的個數(shù)相等,類型必須從左至右一一對應(yīng)。 用戶可以指定輸入數(shù)據(jù)的寬度,系統(tǒng)將自動按此寬度截取所讀入的數(shù)據(jù)。但輸入實型數(shù)據(jù)時,用戶不能規(guī)定小數(shù)點后的位數(shù)。 輸入實型數(shù)據(jù)時,可以不帶小數(shù)點,即按整數(shù)方式輸入。 在輸入數(shù)值數(shù)據(jù)時,遇到下述情況時系統(tǒng)認為該項數(shù)據(jù)結(jié)束:遇到空格、回車符或制表符,可用它們作為數(shù)值數(shù)據(jù)之間的分隔符。遇到寬度結(jié)束,如%4D表示只取輸入數(shù)據(jù)的前4列。遇到非法輸入。例如,假設(shè)A為整型變量,CH為字符型變量,對于語句:SCANF(“%D%C”,&A,&CH);若輸入246A,則第一個輸入數(shù)據(jù)對應(yīng)%D格式,輸入246后遇字符A,字符A 對于格式符%D顯然為非法輸入,因此認為第一個

29、數(shù)據(jù)到此結(jié)束,即A的值為246,CH的值為A。 在使用%C格式符時,輸入的數(shù)據(jù)之間不需要分隔符,空格、回車符都將作為有效字符讀入。 如果格式控制字符串中除了格式說明符之外,還包含其他字符,則輸入數(shù)據(jù)時,在與之對應(yīng)的位置上也必須輸入與這些字符相同的字符。 格式說明%*表示跳過對應(yīng)的輸入數(shù)據(jù)項不予讀入。 每次調(diào)用SCANF函數(shù)后,函數(shù)將得到一個整型函數(shù)值,此值等于正常輸入數(shù)據(jù)的個數(shù)?!纠?.6】從鍵盤輸入一個3位整數(shù)N,輸出其逆序數(shù)M。例如,輸入N=127,則M=721。3.3.2 字符輸入/輸出1字符輸出函數(shù)PUTCHARPUTCHAR函數(shù)的作用是把一個字符輸出到標準輸出設(shè)備上。一般調(diào)用形式為:

30、PUTCHAR(CH)其中CH可以是字符型或整型數(shù)據(jù)?!纠?.7】PUTCHAR()函數(shù)應(yīng)用示例。本例說明了PUTCHAR()函數(shù)的使用方法,其參數(shù)可以是字符型常量(包括控制字符和轉(zhuǎn)義字符)、字符型變量、整型變量。2字符輸入函數(shù)GETCHARGETCHAR函數(shù)的作用是從標準輸入設(shè)備上讀入一個字符。一般調(diào)用形式為:GETCHAR()GETCHAR函數(shù)本身沒有參數(shù),其函數(shù)值就是從輸入設(shè)備得到的字符。【例3.8】GETCHAR()函數(shù)應(yīng)用示例。函數(shù)調(diào)用GETCHAR()只能接收一個字符,得到的是字符的ASCII代碼,可以賦給一個字符型變量,也可賦給一個整型變量,也可以不賦給任何變量,或返回值作為表達式的一部分。例

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論