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

下載本文檔

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

文檔簡介

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

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

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

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

5、為真時(shí),反復(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ù)的運(yùn)算結(jié)果,GOTO語句可以無條件轉(zhuǎn)向任何指定的位置執(zhí)行。3.2 賦值運(yùn)算與賦值語句賦值語句是高級(jí)語言中用來實(shí)現(xiàn)運(yùn)算的一個(gè)重要語句,而且賦值語句可以將運(yùn)算結(jié)果存起來。C語言將賦值也看作一種運(yùn)算,賦值運(yùn)算構(gòu)成賦值表達(dá)式,賦值表達(dá)式后

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論