版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、14 4 順序程序設(shè)計(jì)順序程序設(shè)計(jì)24.1 C4.1 C程序結(jié)構(gòu)和語句程序結(jié)構(gòu)和語句一、一、C程序結(jié)構(gòu)程序結(jié)構(gòu)每一個源文件由預(yù)編譯命令和若干函數(shù)組成(對每個文件分別編譯,然后連接)一般地, 一個C程序可由多個源文件組成每一個函數(shù)由說明部分和語句部分組成3C程序結(jié)構(gòu):C 程 序源程序文件1源程序文件i源程序文件n預(yù)編譯命令函 數(shù) 1函 數(shù) n說 明 部 分執(zhí)行部分(語句)4函數(shù)調(diào)用語句函數(shù)調(diào)用語句:如: printf ();二、二、C C 程序程序語句1. 表達(dá)式語句賦值語句賦值語句: 如: i=i+1; i+; x+y;空語句空語句: 任何事情都不做。C程序語句可分為五大類: 如: ;52.
2、控制語句改變語句的執(zhí)行順序 if ( ) else (條件) for ( ) (循環(huán)) while ( ) (循環(huán)) do while (循環(huán)) switch (多分支選擇)( )表示條件, 表示語句6 continue (結(jié)束本次循環(huán)) break (中止整個循環(huán)) return ( 函數(shù)返回)3. 限定轉(zhuǎn)向(無條件轉(zhuǎn)向)語句5. 終止程序運(yùn)行語句4.無條件轉(zhuǎn)移語句goto exit76. 復(fù)合語句(語句體)用 括起來的一系列語句。 如: z=x+y; t=z/100; printf (%f, t); 8三、結(jié)構(gòu)化程序設(shè)計(jì)概念 從結(jié)構(gòu)化程序設(shè)計(jì)角度出發(fā),程序只有三種結(jié)構(gòu):順序結(jié)構(gòu)順序結(jié)構(gòu)選擇
3、結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)91. 順序結(jié)構(gòu)順序結(jié)構(gòu)表示ABAB先執(zhí)行A, 再執(zhí)行B.102. 選擇結(jié)構(gòu)選擇結(jié)構(gòu)表示為ABPTFB TPFA存在某條件P, 若P為真,則執(zhí)行A, 否則執(zhí)行B。11 另一種選擇結(jié)構(gòu)多分支結(jié)構(gòu).KK=K1A1A2AiAnK=K2K=Kn123. 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)表示為PFTAAP為T(1) 當(dāng)型結(jié)構(gòu) 當(dāng)P條件成立時(T),反復(fù)執(zhí)行A,直到P為“ 假”時才停止循環(huán).有兩種結(jié)構(gòu):當(dāng)型和直到型13(2) 直到型APTFA直到P為F 先執(zhí)行A, 再判斷P,若為F,再執(zhí)行A,如此反復(fù),直到P為F. 已證明: 上述三種結(jié)構(gòu)組成的程序可以解決全部的問題,所以任何一種高級語言都具備
4、上述三種結(jié)構(gòu)。14 賦值語句賦值語句是由賦值表達(dá)式賦值表達(dá)式加上一個分號分號構(gòu)成。由于賦值語句應(yīng)用十分普遍,所以專門再討論一下。 C語言中的賦值號“=”作為賦值運(yùn)算符;關(guān)于賦值表達(dá)式與賦值語句的概念。4.2 4.2 賦值語句賦值語句15 作為賦值表達(dá)式賦值表達(dá)式可以被包括在其它表達(dá)式之中,例如 if (ab)0) ta; 其作用是:先進(jìn)行賦值運(yùn)算(將b的值賦給a),然后判斷a是否大于,如大于是,執(zhí)行t=a。在if語句中的“a=b”不是賦值語句賦值語句而是賦值表達(dá)式賦值表達(dá)式,這樣寫是合法的。 如果寫成 if(ab;)0) ta; 就錯了,在if的條件中不能包含賦值語句。16 首先說明,C語言本
5、身不提供輸入輸出語句不提供輸入輸出語句,輸入和輸輸入和輸出操作是由函數(shù)來實(shí)現(xiàn)的出操作是由函數(shù)來實(shí)現(xiàn)的。在C的標(biāo)準(zhǔn)函數(shù)庫中標(biāo)準(zhǔn)函數(shù)庫中(stdio.h)(stdio.h)提供了一些輸入輸出函數(shù),例如,printfprintf函函數(shù)和數(shù)和scanfscanf函數(shù)函數(shù)。 有兩個最基本的輸出函數(shù),它們都以終端(即系統(tǒng)隱含指定的輸出設(shè)備)為對象.它們是字符輸出函數(shù)和格式輸出函數(shù)。4.3 4.3 數(shù)據(jù)輸出數(shù)據(jù)輸出174.3.1 putchar函數(shù)(字符輸出函數(shù))函數(shù)(字符輸出函數(shù)) putchar函數(shù)的作用是向終端輸出一個字符。 例如 putchar(c); 輸出字符變量c的值。c可以是字符型變量或整型變
6、量。 在使用標(biāo)準(zhǔn)IO庫函數(shù)時,要用預(yù)編譯命令“include”將“stdio.h文件包括到用戶源文件中。即 include “stdio.h”include “stdio.h” stdio.h是standard input & output的縮寫,它包含了與標(biāo)準(zhǔn)IO庫有關(guān)的變量定義和宏定義,但在用printf和scanf函數(shù)時,則可以不要(只有printf和scanf例外)。 18 include “stdio.h” main() char a,b,c; a=B;b=O;c=Y; putchar(a);putchar(b);putchar(c); 運(yùn)行結(jié)果:BOY19 也可以輸出控制字符,如p
7、utchar(n)輸出一個換行符,如果將最后一行改為 putchar(a); putchar(n); putchar(b); putchar(c); putchar(n )。 則輸出結(jié)果為: 也可以輸出其它轉(zhuǎn)義字符,如: putchar(101) (輸出字符A) putchar() (輸出單引號字符) putchar(015) (使輸出回車,不換行) B O Y204.3.2 printf函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 作用是向終端作用是向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若輸出若干個任意類型的數(shù)據(jù)干個任意類型的數(shù)據(jù)(putchar只能輸出字符,而且只能是一個字符,而printf可
8、以輸出多個數(shù)據(jù),且為任意類型)。 一、 printf函數(shù)的一般格式為 printf(格式控制格式控制,輸出表列輸出表列) “格式控制格式控制”是用雙引號括起來的字符串,也稱“轉(zhuǎn)轉(zhuǎn)換控制字符串換控制字符串”,它包括兩種信息: 1格式說明,由格式說明,由“”,和格式字符組成,和格式字符組成,如d,f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式說明總是由“”字符開始的。212普通字符,即需要原樣輸出的字符普通字符,即需要原樣輸出的字符。 “輸出表列”是需要輸出的一些數(shù)據(jù),可以是表達(dá)式。例如: printf (”a=d b=d”,a,b); printf (” a+b=d ,a-b=d”,a+
9、b,a-b); 格式說明 輸出表列 在上面雙引號中的字符除了“d”以外,還有非格式說明的普通字符,它們按原樣輸出。如果a、b值分別為3、4,則輸出為 a=3 b=4 其中有下劃線的字符是printf函數(shù)中的“格式控制”字符串中的普通字符原樣輸出的結(jié)果。3和4是a和b的值(注意3和4無前導(dǎo)空格和尾隨空格),其數(shù)字位數(shù)由a,b值而定。假如a=12,b=123,則輸出結(jié)果為 a12 b=12322二、格式字符二、格式字符對不同類型的數(shù)據(jù)用不同的格式字符。有以下幾種格式字符:1d d格式符。用來輸出十進(jìn)制整數(shù)格式符。用來輸出十進(jìn)制整數(shù)。有以下幾種用法: (1)d,按整型數(shù)據(jù)的實(shí)際長度輸出。 (2)md
10、,m m為指定的輸出字段的寬度為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出,如 printf (“4d,4d”,a,b) 若a123,d=12345,則輸出結(jié)果為: 123,12345 (3)ld,輸出長整型數(shù)據(jù)。如 1ong a=135790; printf(”ld,a); 如果用d輸出,就會發(fā)生錯誤,對1ong型數(shù)據(jù)應(yīng)當(dāng)用ld格式輸出。對長整型數(shù)據(jù)也可以指定字段寬度,如將上面printf函數(shù)中的“l(fā)d”改為“81d”則輸出為 135790 8列 一個int型數(shù)據(jù)可以用d或ld格式輸出。232.o o格式符格式符,以以8 8進(jìn)制數(shù)形式輸
11、出整數(shù)進(jìn)制數(shù)形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值(0或1)按八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號,即將符號位也一起作為八進(jìn)制數(shù)將符號位也一起作為八進(jìn)制數(shù)的一部分的一部分輸出。例如,-在內(nèi)存單元中(以補(bǔ)碼形式存放)如下: a=-1 11 11 11 11 11 11 11 11 int a-1 printf(”d,o”,a,a);輸出為 1,177777不會輸出帶負(fù)號的八進(jìn)制整數(shù)。對長整數(shù)(1ong型)可以用“l(fā)o?!备袷捷敵觥M瑯涌梢灾付ㄗ侄螌挾?,如printf(”8o”,a)輸出數(shù)據(jù)為 177777。243. x x格式符,以格式符,以1616進(jìn)制數(shù)形式輸出整數(shù)進(jìn)制數(shù)形式輸出整數(shù),同
12、樣不會出現(xiàn)負(fù)的十六進(jìn)制數(shù)。例如: int a一1; printf(”x,o,d”,a,a,a);輸出結(jié)果為 ffff,177777,-1同樣可以用“l(fā)x”輸出長整型數(shù),也可以指定輸出字段的寬度,如“12x”4u u格式符格式符,用來輸出unsigned型數(shù)據(jù),即無符號數(shù),以十進(jìn)制形式輸出。 一個有符號整數(shù)(int型)也可以用u格式輸出;反之,一個unsigned型數(shù)據(jù)也可以用d格式輸出。unsigned型數(shù)據(jù)也可用o或x格式輸出。25 unsigned int a=65535; int b=-2; printf(”a=%d,%o,%x,%un”,a,a,a,a); printf(”a=%d,%
13、o,%x,%un”,b,b,b,b); 運(yùn)行結(jié)果為: a一1,177777,ffff65535 11 11 11 11 11 11 11 11 a=65535 b一2177776,fffe,65534 11 11 11 11 11 11 11 10 b=-2265 5c c格式符,用來輸出一個字符格式符,用來輸出一個字符。如: char ca; prinft(”c”,c);輸出字符a,請注意:“c”中的c是格式符,逗號右邊的c是變量名,不要搞混。例 main ( ) char c=a; int i=97; printf(” c ,dn”,c,c); printf(”c,dn”,i,i); 運(yùn)行
14、結(jié)果為: a,97 a, 97 也可以指定輸出字?jǐn)?shù)寬度,如果有 printf (”3c”,c)則輸出:” a”,即c變量輸出占3列,前2列補(bǔ)空格。276 6s s格式符格式符,用來輸出一個字符串。有幾種用法: (1)s, 例如 printf(”%s”,”CHINA”)輸出“CHINA”字符串(不包括雙引號)。 (2)ms,輸出的字符串占m列,如字符串本身長度大于m,則突破m的限制,將字符串全部輸出。若串長小于m,則左補(bǔ)空格。 (3)-ms,如果串長小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。 (4)m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左補(bǔ)空格。 (
15、5)-m.ns,其中m、n含義同上,n個字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果nm,則m自動取n值即保證n個字符正常輸出。 例34 main ( ) p r i n t f ( ” % 3 s , % 7 . 2 s , % . 4 s , % - 5 . 3 s n ” , ” CHINA”,”CHINA”,”CHINA”,”CHINA”); 輸出如下:CHINA, CH,CHIN,CHI 其中第三個輸出項(xiàng),格式說明為“.4s”,即只指定了n,沒指定m,自動使mn=4,故占4列。287f f格式符格式符,用來輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出,有以下幾種用法: (1)f,不指定字段
16、寬度,由系統(tǒng)自動指定,使整數(shù)部分全部如數(shù)輸出,并輸出6位小數(shù)。應(yīng)當(dāng)注意,并非全部數(shù)字都是有效數(shù)字.單精度實(shí)數(shù)的有效位數(shù)一般為7位。 【例3.5】 main( ) float x,y; x111111111; y222222222; printf(”f,x十y); 運(yùn)行結(jié)果為 333333328125 顯然,只有前7位數(shù)字是有效數(shù)字。千萬不要以為凡是打印出來的數(shù)字都是準(zhǔn)確的。 雙精度數(shù)也可用f格式輸出,它的有效位數(shù)一般為16位,給出小數(shù)6位。 29例 main() double x,y; x=11111111111111111111; y2222222222222.22222222; print
17、f(”f”,x十y); 輸出結(jié)果為 3333333333333.328125顯然,雙精度數(shù)也可用f格式輸出,它的有效位數(shù)一般為16位,給出小數(shù)位??梢钥吹阶詈?位小數(shù)(超過16位)是無意義的。30(2)m.nf指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左端補(bǔ)空格。(3)一m.nf基本相同,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格。 例 main ( ) floatf f=123456; printf(”%f,%10f,%10.2f,%.2f,%-10.2fn”,f,f,f,f,f); 輸出結(jié)果如下: 123.455994, 123.455994, 123.46, 123. 46
18、,123.46 ,f的值應(yīng)為123456,但輸出為123455994,這是由于實(shí)數(shù)在內(nèi)存中的存儲誤差引起的318.e e格式符格式符,以指數(shù)形式輸出實(shí)數(shù)??捎靡韵滦问剑?(1)e不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù),由系統(tǒng)自動指定給出6(5)位小數(shù),指數(shù)部分占5(4)位(如e+002,e+02),其中“e”占一位,指數(shù)符號占一位,指數(shù)占3(2)位。數(shù)值按標(biāo)準(zhǔn)化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有一位非零數(shù)字)。例如 printf(”%e”,123.456);輸出:1.234560e002,(1.23456e+02)。也就是說用e格式輸出的實(shí)數(shù)共占13(11)列寬度。 32(2)m.ne
19、和-m.ne m,n和“-”字符含義與前相同。此處n指數(shù)據(jù)的數(shù)字部分?jǐn)?shù)據(jù)的數(shù)字部分(與書上講的不同)。若f123.456,則printf(”%e,%10e,%10.3e,%.3e,%-10.3e,”,f,f,f,f,f);輸出如下:1.23456e+02,1.23456e+02, 1.23e02,1.23e02,1.23e十02 第二個輸出項(xiàng)按10e輸出,即只指定了m=10,未指定n,凡未指定n,自動使n=6,整個數(shù)據(jù)長11列,超過給定的10列,乃突破10列的限制,按實(shí)際長度輸出。第三個數(shù)據(jù)共占10列,小數(shù)部分占2列。第四個數(shù)據(jù)按字“.2e”格式輸出,只指定n2,未指定m,自動使m等于數(shù)據(jù)應(yīng)占
20、的長度,今為8列。第五個數(shù)據(jù)應(yīng)占10列,數(shù)值只有8列,由于是“-10.2e”,數(shù)值向左靠,右補(bǔ)二個空格。339 9g g格式符格式符,用來輸出實(shí)數(shù),它根據(jù)數(shù)值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的零。例如,若:f=123.456,則 printf(”%f,%e,%g”,f,f,f);輸出如下: 123.456001,1.23456e+02,123.456用f格式輸出占10列,用e格式輸出占11列,用g格式時,自動從上面兩種格式中選擇短者(今為f格式為短),故占7列,且按%f格式用小數(shù)形式輸出,最后三個小數(shù)位“0”為無意義的0,不輸出,g格式用得較少。34以
21、上介紹了9種格式符,歸納如表格式字符 說 明 d 以帶符號的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號)。 o 以8進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0)。 x 以16進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0 x)。 u 以無符號10進(jìn)制形式輸出整數(shù) c 以字符形式輸出,只輸出一個字符。 s 輸出字符串。 f 以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)。 e 以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)為6位。 g 選用f或e格式中輸出寬度較短的一種格式,不輸出無意義的0。 35在格式說明中,在和上述格式字符間可以插入以下幾種附加符號。附加格式說明字符 字符 說 明 l用于長整型整型,可加在格式
22、符d o x.u前面。 m(代表一個正整數(shù))數(shù)據(jù)最小寬度。 .n(代表一個正整數(shù))對實(shí)數(shù),表示輸出n位小數(shù);對字符串,表示截取的字符個數(shù)。 - 輸出的數(shù)字或字符在域內(nèi)向左靠。36 用printf函數(shù)輸出時,應(yīng)注意數(shù)據(jù)類型應(yīng)與上述格式說明匹配,否則將會出現(xiàn)錯誤。 在使用printf函數(shù)時,還有幾點(diǎn)要說明:1有些系統(tǒng)要求格式字符要用小寫字母,如d不能寫成D。2. 可以在printf函數(shù)中的“格式控制”字符串內(nèi)包含第二章中的“轉(zhuǎn)義字符”,如“n”、“t”、“b”、“r”、“f”、“377”等。3上面介紹的d,o,x,c,s,f,e,g等字符,如用在“”后面就作為格式符號。一個格式說明以“”開頭,以上
23、述9個格式字符之一為結(jié)束,中間可以插入附加格式字符(也稱修飾符)。例如: printf(“c=%cf=%fs=%s”,c,f,s); 第一個格式說明為”c”而不包括其后的f,第二個格式說明為“f,不包括其后的s,第三個格式說明為s。其它的字符為原樣輸出的普通字符。374如果想輸出字符“”,則應(yīng)該在“格式控制”字符串中用連續(xù)兩個表示,如 printf(”f”,103); 輸出0.3333335不同的系統(tǒng)在實(shí)現(xiàn)格式輸出時,輸出結(jié)果可能會有一些小的差別,例如用e格式符輸出實(shí)數(shù)時,有些系統(tǒng)輸出的指數(shù)部分為4位(如e十02)而不是5位(e002),前面的數(shù)字部分為5位小數(shù)而不是6位等等。384.4.1
24、getchar函數(shù)(字符輸入函數(shù))函數(shù)(字符輸入函數(shù))此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個字符, getchar函數(shù)沒有參數(shù),其一般形式為: getchar( )函數(shù)的值就是從輸入設(shè)備得到的字符。例如: 例include “stdio.h” main ( ) char c: cgetchar(); putchar(c); 在運(yùn)行時,如果從鍵盤輸入字符a; a (輸入a后,按“回車”鍵,字符才送到內(nèi)存)a (輸出變量c的值a) 4.4 4.4 數(shù)據(jù)輸入數(shù)據(jù)輸入39 請注意,getchar( )只能接收一個字符。 getchar函數(shù)得到的字符可以賦給一個字符變量或整型變量,也可
25、以下賦給任何變量,作為表達(dá)式的一部分。例如, putchar (getchar(); 也可以甩printf函數(shù): printf (”c”,getchar(); 在一個函數(shù)中要用getchar函數(shù),應(yīng)該在函數(shù)的前面(或本文件開頭)用 include “stdio.h”404.4.2 scanf函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù)) getchar函數(shù)只能用來輸入一個字符,用scanf函數(shù)可以用來輸入任何類型的多個數(shù)據(jù)。 一一般形式一一般形式 scanfscanf(格式控制,地址表列)(格式控制,地址表列) “ “格式控制格式控制”的含義同的含義同printf函數(shù),“地址表列地址表列”是由若干個
26、地址組成的表列,可以是變量的地址,或字符串的首地址。 例 main( ) int a,b,c; scanf(”%d%d%d”,&a,&b,&c); prinrf(“%d,%d,%dn”,a,b,c); 41 運(yùn)行時按以下方式輸入a,b,c的值: 3 4 5 (輸入a,b,c的值) 3,4,5 (輸出a,b,c的值) &a,&b,&c中的“&”是地址運(yùn)算符,&a指a在內(nèi)存中的地址. 用“%d%d%d”格式輸入時,不能用逗號(可用空格)作兩個數(shù)據(jù)間的分隔符,如下面輸入不合法: 3,4,542二、格式說明二、格式說明 和printf函數(shù)中的格式說明相似,以開始,以一個格式字符結(jié)束,中間可以插入附加的
27、字符。 scanfscanf格式字符格式字符 d 用來輸入十進(jìn)制整數(shù)。 o 用來輸入八進(jìn)制整數(shù)。 x 用來輸入十六進(jìn)制整數(shù)。 c 用來輸入單個字符。 s 用來輸入字符串,將字符串送到一個字符數(shù)組中,在輸入時以非空白字符開始,以第一個空白字符結(jié)束。字符串以串結(jié)束標(biāo)志“0”作為其最后一個字符。 f 用來輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入。 e 與f作用相同,e與f可以互相替換。43 附加的格式說明字符附加的格式說明字符 l 用于輸入長整型數(shù)據(jù)(可用ld,lo,lr),以及double型數(shù)據(jù)(用lf或1e)。 h 用于輸入短整型數(shù)據(jù)(可用hd,hO,hx)。 m 域?qū)挘橐徽麛?shù))指定輸入數(shù)據(jù)所
28、占寬度(列數(shù))。 * 表示本輸入項(xiàng)在讀人后不賦給相應(yīng)的變量。 說明: 1.標(biāo)準(zhǔn)C在scanf中不使用u說明符,對unsigned型數(shù)據(jù),以d或o、x格式輸入。 2.可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。如 scanf(”3d3d”,&a,&b); 輸入 123456 系統(tǒng)自動將123賦給a,456賦給b。也可用于字符型 scanf(”3c”,&ch); 輸入3個字符,把第一個字符賦給ch,例如輸入abc,ch得到字符a。443后的“*”附加說明符,用來表示跳過它相應(yīng)的數(shù)據(jù)。例如 scanf(”2d*3d2dn”,&a,&b); 如果輸入如下信息: 12 345 67 將12賦給a
29、,67賦給b.第二個數(shù)據(jù)“345”被跳過不賦給任何變量。在利用現(xiàn)成的一批數(shù)據(jù)時,有時不需要其中某些數(shù)據(jù),可用此法“跳過”它們。4. 輸入數(shù)據(jù)時不能規(guī)定精度,例如 scanf(”%7.2f”,&a); 是不合法的,不能企圖輸入1234567而使a的值為12345.67。 三、scanf函數(shù)的執(zhí)行中應(yīng)注意的問題 1scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。例如,如果a,b為整型變量,則 scanf(”d,d”,a,b);是不對的,應(yīng)為&a,&b。這是C語言與其它高級語言不同的。452如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的
30、字符。例如 scanf(“d,d”,&a,&b);輸入時應(yīng)用如下形式: 3,4注意3后面是逗號,它與scanf函數(shù)中的“格式控制”中的逗號對應(yīng)。如果輸入時不用逗號而用空格或其它字符是不對的: 3 4 (不對) 3:4 (不對)如果是 scanf(”%d %d”,&a,&b);輸入時兩個數(shù)據(jù)間應(yīng)空二個或更多的空格字符。 scanf(”d:d:d”,&h,&m,&s);輸入應(yīng)用以下形式: 12:23:36 scanf(”a=%d,b=%d,c=%d”,&a,&b,&c);輸入應(yīng)為以下形式: a=12,b24,c36這種形式為了使用戶輸入數(shù)據(jù)時添加必要的信息以幫助理解,不易發(fā)生輸入數(shù)據(jù)的錯誤。 46
31、3在用”c”格式輸入字符時,空格字符和“轉(zhuǎn)義字符”都作為有效字符輸入: scanf(”ccc”,&c1,c2,c3);如輸入 a b c 字符a送給c1,字符 送給c2,字符b送給c3,因?yàn)閏只要求讀人一個字符,后面不需要用空格作為兩個字符的間隔,因此 作為下一個字符送給c2。4在輸入數(shù)據(jù)時,遇以下情況時該數(shù)據(jù)認(rèn)為結(jié)束: 遇空格,或按“回車”或“跳格”(TAB)鍵。 遇寬度結(jié)束,如“3d”,只取3列。 遇非法輸入。如 scanf(”dcf”,&a,&b,&c);若輸入: 1234al23o.26第一個數(shù)據(jù)對應(yīng)d格式輸入1234之后遇字母a,因此認(rèn)為數(shù)值1234后己沒有數(shù)字了,第一個數(shù)據(jù)到此結(jié)束,把1234送給變量a,字符a送給變量b由于c只要求輸入一個字符,因此a后面不需要空格,后面的數(shù)值應(yīng)送給變量c,如果由于疏忽把本來應(yīng)為123026錯打成123o26,由于123后面出現(xiàn)字母o就認(rèn)為此數(shù)值結(jié)束,將123送給人c.47例輸入三角形的三邊長,求三角形面積。 為簡單起見,設(shè)輸入的三邊長山c能構(gòu)成三角形。#include math.hmain()float a,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋租賃合同(附房屋交割清單)
- 2025年四川省職教高考《語文》核心考點(diǎn)必刷必練試題庫(含答案)
- 第2章 陸地和海洋(真題重組卷)-(解析版)
- 2025年河北軟件職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025年河北政法職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025年江西水利職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 2025年江西婺源茶業(yè)職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年江蘇城鄉(xiāng)建設(shè)職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年無錫科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年承德石油高等??茖W(xué)校高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 蛋糕店服務(wù)員勞動合同
- 土地買賣合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專題一-微專題10-同構(gòu)函數(shù)問題-專項(xiàng)訓(xùn)練【含答案】
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 2024-2030年中國烘焙食品行業(yè)運(yùn)營效益及營銷前景預(yù)測報(bào)告
- 康復(fù)醫(yī)院患者隱私保護(hù)管理制度
- 公司安全事故隱患內(nèi)部舉報(bào)、報(bào)告獎勵制度
- 沈陽理工大學(xué)《數(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 北京三甲中醫(yī)疼痛科合作方案
- 公司新員工三級安全教育培訓(xùn)(車間級)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊課件【完整版】
評論
0/150
提交評論