版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
輸入輸出語句
在程序的運行過程中,往往需要由用戶輸入一些數(shù)據(jù),這些數(shù)據(jù)經(jīng)機器處理后要輸出反饋給用戶。通過數(shù)據(jù)的輸入輸出來實現(xiàn)人與計算機之間的交互,所以在程序設計中,輸入輸出語句是一類必不可少的重要語句。在C語言中,沒有專門的輸入輸出語句,所有的輸入輸出操作都是通過對標準I/O庫函數(shù)的調(diào)用實現(xiàn)。最常用的輸入輸出函數(shù)有scanf()、printf()、getchar()、putchar()、gets()、puts()。§4.1putchar函數(shù)
當我們要把字符一個一個輸出時,可以用putchar函數(shù),它是一個專門輸出字符的函數(shù)。其一般形式是:該函數(shù)的功能是輸出“字符表達式”的值。例如:putchar('A'); 輸出字符'A';
putchar(‘A’+1);輸出字符'B';在使用標準I/O庫函數(shù)時,要用預編譯命令“#inciude”將“stdio.h”文件包含到用戶源文件中,即:
stdio.h是standardinput&output的縮寫,它包含了與標準I/O庫函數(shù)有關的定義和函數(shù)聲明(具體見編譯預處理命令章節(jié))。在需要使用標準I/O庫中的函數(shù)時,應在程序前使用上述預編譯命令。putchar(<字符表達式>)#include<stdio.h>§4.2printf函數(shù)§4.2.1printf函數(shù)的格式
printf函數(shù)的一般格式為:
“輸出表列”是需要輸出的一些數(shù)據(jù),可以是表達。例如:
printf("%d%d",a+2,b);“格式控制”是用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”,它用于控制輸出數(shù)據(jù)的格式。printf(<格式控制>,<輸出表列>)“格式控制”包括兩種信息:(1)格式說明,由“%”和格式說明字符組成,如%d、%f。表4.1printf格式符格式字符說明d以帶符號的十進制形式輸出整型數(shù)(正數(shù)不輸出符號)o以8進制無符號形式輸出整型數(shù)(不輸出前導符0)x以16進制無符號形式輸出整型數(shù)(不輸出前導符0x)u以無符號10進制形式輸出整型數(shù)c以字符形式輸出,只輸出一個字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)e以標準指數(shù)形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)為6位g自動選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0(2)普通字符,即需要原樣輸出的字符。例如:printf("a=%db=%d",a,b);
在上面雙引號中的字符除了“%d”和“%d”以外,還有非格式說明的普通字符(“a=”和“b=”),它們按原樣輸出。計算機在執(zhí)行該語句時,首先輸出格式控制串中的“a=”,然后碰到一個格式說明“%d”,就從輸出表列中取第一個教據(jù)項a,按格式說明輸出該數(shù)據(jù)項值,然后原樣輸出格式控制串中的“b=”,又碰到第二個格式說明“%d”,取輸出表列中的第二個數(shù)據(jù)項b,按格式說明輸出其值?!?.2.2格式說明字符★d格式符
用來控制整型數(shù)按十進制形式輸出。①%d,按整型數(shù)據(jù)的實際長度輸出。②%md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)(包括負號)小于m,則右對齊左端補以空格,若大于m,則按實際位數(shù)輸出。③%-md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左對齊補以空格,若大于m,則按實際位數(shù)輸出④%ld,輸出長整型數(shù)據(jù)。★o格式符以八進制數(shù)形式輸出整型數(shù)據(jù)。數(shù)值不帶符號,即將符號也一起作為八進制數(shù)的一部分輸出。對長整數(shù)(long型)可以用“%lo”格式輸出??梢灾付ㄗ侄螌挾?如“%8o”。
o格式符一般用于輸出正整數(shù)或無符號類型的數(shù)據(jù)?!飜格式符以16進制形式輸出整型數(shù)據(jù)。不會出現(xiàn)負的十六進制數(shù)??梢杂谩?x”輸出長整型數(shù)。可以指定輸出字段的寬度,如“%12x”。x格式符一般用于輸出正整數(shù)或無符號類型的數(shù)據(jù)。★u格式符用來輸出unsigned數(shù)據(jù),即無符號數(shù),以十進制形式輸出。一個有符號整型數(shù)(int型)也可以用%u格式輸出,此時把符號位當作數(shù)值看待。一個unsigned型數(shù)據(jù)也可以用%d格式輸出,按相互賦值的規(guī)則處理。unsigned數(shù)據(jù)也可用.%o或%x格式輸出?!颿格式符用來輸出一個字符。如:
charc='a';
printf("%c",c);輸出字符‘a(chǎn)’,注意“%c”的c是格式符,逗號右邊的C是變量名,不要搞混。一個整數(shù),只要它的值在0~255范圍內(nèi),也可以用字符形式輸,在輸出前將該整數(shù)轉(zhuǎn)換成換成相應的ASCII字符;反之,一個字符數(shù)據(jù)也可以用整型數(shù)形式輸出,但輸出的是其ASCII碼值?!?/p>
s格式符①%s,用來輸出一個字符串(不包括雙引號)。②%ms,輸出的字符串占m列,若字符串長度小于m,則“右對齊”,左邊補空格。如字符本身長度大于m,則突破m的限制,將字符串全部輸出。③%-ms,若字符串長度小于m,則在m列范圍內(nèi),“左對齊”,右邊補空格。如字符本身長度大于m,則突破m的限制,將字符串全部輸出。④%m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左邊補空格。⑤%-m.ns,其中m、n含義同上,n個字符輸出在m列范圍的左側(cè),右面補空格。如果m省略或n>m,則m自動取n值,即保證n個字符正常輸出。★
f格式符用來輸出實型數(shù)(包括單、雙精度數(shù)),以小數(shù)形式輸出。%f,不指定字段寬度,由系統(tǒng)自動指定,使整數(shù)部分全部如數(shù)輸出,并輸入6位小數(shù)。應當注意,并非全部數(shù)字都是有效數(shù)字,單精度數(shù)的有效位數(shù)一般為7位。也就是說單精度數(shù)用%f格式輸出,只有前7位是有效的。雙精度數(shù)的有效位數(shù)一般為16位,雙精度數(shù)用%f格式輸出時,只有前16位有效。%m.nf,指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度(包括小數(shù)點和負號)小于m,則采用“右對齊”輸出,左端補空格。如果m省略則整數(shù)部分按實際寬度如數(shù)輸出。%-m.nf與%m.nf基本相同,只是使輸出的數(shù)值“左對齊”,右端補空格?!?/p>
e格式符以指數(shù)形式輸出實數(shù)。%e,不指定輸出所占的寬度和數(shù)字部分小數(shù)位數(shù),由系統(tǒng)自動指定給出6位小數(shù),指數(shù)部分占5位(如e+002),其中“e”占一位,指數(shù)符號占一位,指數(shù)占3位。數(shù)值按標準化指數(shù)形式輸出(即小數(shù)點前必須有而且只有一位非零數(shù)字)。%m.ne和%-m.ne,m、n及“-”字符含義與之前相同。此處n為指數(shù)的數(shù)字部分(又稱尾數(shù))的小數(shù)位數(shù)。如省略n,則n=6。如省略m,則自動使m等于數(shù)據(jù)應有的長度,即m=7+n?!飃格式符
用來輸出實型數(shù),它根據(jù)數(shù)值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的零。
例:
若f=123.468,則:
printf(”%f,%e,%g”,f,f,f);輸出如下:
123.468000,1.234680e+002,123.468
用%f格式輸出占10列,用%e格式輸出占13列,用%g格式時,自動從前面兩種格式中選擇短者(今為%f格式為短),故選擇按%f格式輸出,且小數(shù)位中的最后三位為無意義的0,不輸出。%g格式用得比較少。
在使用函數(shù)printf函數(shù)時,還有幾點要說明:
◆
格式字符要用小寫字母,如%d不能寫成%D。
◆可以在printf函數(shù)中的“格式控制”字符串內(nèi)包含轉(zhuǎn)義字符,如"\n"、"\t"、"\b"、"r"、"\f"、"\377"等,它們將原樣輸出。
◆上面介紹的d、o、x、u、c、s、f、e、g等字符,如不是用在“%”后面就作為普通字符,原樣輸出。
◆如果想輸出字符“%”,可以在“格式控制”字符串中用連續(xù)兩個%表示,或者使用轉(zhuǎn)義字符“\45”。
◆不同的系統(tǒng)在格式輸出時,輸出結(jié)果可能會有一些小的差別,例如用%e格式符輸出實數(shù)時,有些系統(tǒng)輸出的指數(shù)部分為4位(如e+02)而不是5位(如e+002),前面數(shù)字的小數(shù)部分為5位而不是6位等等?!?.3getchar函數(shù)
此函數(shù)的作用是從鍵盤輸入一個字符,并把這個字符作為函數(shù)的返回值。getchar函數(shù)沒有參數(shù),其一般形式為:getchar()。[例4.8]
請注意,getchar()只能接受一個字符。getchar函數(shù)得到的字符可以賦給一個字符變量或整型變量。也可以不賦給任何變量。也可以作為表達式的一部分在一個函數(shù)中調(diào)用getchar函數(shù),應該在函數(shù)的前面(或本文件開頭)用:#include<stdio.h>#include<stdio.h>main(){charc;c=getchar();putchar(c);}在運行時,如果從鍵盤輸入字符‘a(chǎn)’;a(輸入a后,按回車鍵字符才送到內(nèi)存)a(輸出變量c的值‘a(chǎn)’)§4.4scanf函數(shù)§4.4.1一般形式
scanf函數(shù)的一般形式是:
其中,“地址表列”由若干個地址組成的表列,是可以接受數(shù)據(jù)的變量的地址?!案袷娇刂啤钡暮x同printf函數(shù),但scanf中的“格式控制”是控制輸入的數(shù)據(jù)?!豪?.9』
main(){ inta,b,c;
scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d\n”,a,b,c);}scanf(<格式控制),<地址表列>)§4.4.2格式說明
和printf函數(shù)中的格式說明相似,scanf中的格式說明也以%開始,以一個格式字符結(jié)束,中間可以插入附加格式說明字符(修飾符)。如表4.3和4.4所示。
表4.3scanf格式字符格式字符說明d用來輸入十進制整型數(shù)o用來輸入八進制整型數(shù)x用來輸入十六進制整型數(shù)c用來輸入單個字符s用來輸入字符串,將字符串送到一個字符數(shù)組中,在輸入時以為空白字符開始,以第一個分隔字符結(jié)束。系統(tǒng)自動把字符串結(jié)束標志‘\0’加到字符串尾部f用來輸入實型數(shù),可以用小數(shù)形式或指數(shù)形式輸入e與f作用相同,e與f可以互相替換表4.4scanf附加的格式說明字符字符說明l用于輸入長整數(shù)數(shù)據(jù)(可用%ld、%lo、%lx),以及double型數(shù)據(jù)(用%lf或%le)h用于輸入端整型數(shù)據(jù)(可用%hd、%ho,%hx)m(正整數(shù))指定輸入數(shù)據(jù)所占寬度(列數(shù))*表示本輸入項在讀入后不賦給相應的變量說明:
(1)C語言在scanf中不使用%u格式符,對unsigned型數(shù)據(jù),以%d、%o或%x格式輸入。
(2)可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。
(3)%后的附加說明符”*”,用來表示跳過它相應的數(shù)據(jù)。
(4)輸入數(shù)據(jù)時不能規(guī)定精度?!?.4.3scanf函數(shù)的執(zhí)行中應注意的問題◆scanf函數(shù)中的“格式控制”后面應當是變量地址,而不應是變量名?!羧绻凇案袷娇刂啤弊址谐烁袷秸f明外還有其它字符,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符,即原樣輸入?!粼谟谩?c”格式輸入字符時,空格字符和“轉(zhuǎn)義字符”都作為有效字符輸入?!粼谳斎霐?shù)據(jù)時,遇到以下情況時該數(shù)據(jù)認為結(jié)束;
●
遇空格,或回車鍵或跳格鍵(tab鍵)。
●
遇寬度結(jié)束時,如“%3d”,只取3列。
●
遇非法輸入?!?.5gets和puts函數(shù)gets()函數(shù)用來從標準輸入設備(鍵盤)讀取字符串直到回車結(jié)束,
但回車符
不屬于這個字符串。其調(diào)用格式為:
gets(s);
其中s為字符串變量(字符串數(shù)組名或字符串指針)。
gets(s)函數(shù)與scanf("%s",
&s)相似,
但不完全相同,
使用scanf("%s",
&s)
函數(shù)輸入字符串時存在一個問題,
就是如果輸入了空格會認為輸入字符串結(jié)束,
空格后的字符將作為下一個輸入項處理,
但gets()
函數(shù)將接收輸入的整個字符
串直到回車為止。puts()函數(shù)用來向標準輸出設備(屏幕)寫字符串并換行。
其調(diào)用格式為:
puts(s);
其中s為字符串變量(字符串數(shù)組名或字符串指針)。
puts()函數(shù)的作用與語printf("%s\n",
s)相同§4.6程序舉例[例4.10]
輸入三角形的變長,求三角形面積。為簡單起見,設輸入的三邊長a,b,c能構(gòu)成三角形。程序如下:
#include<math.h>main(){floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);printf("area=%7.2f\n",area);}[例4.11]
從鍵盤輸入一個大寫字母,要求轉(zhuǎn)換成小寫字母輸入。程序如下:
#include<stdio.h>main(){charc1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1+32;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-T 25750-2010可鎖定氣彈簧技術條件》專題研究報告
- 《GBT 21571-2008危險品 爆燃轉(zhuǎn)爆轟試驗方法》專題研究報告
- 《GBT 14689-2008技術制圖 圖紙幅面和格式》專題研究報告
- 《GB 4706.63-2008家用和類似用途電器的安全 商用電漂洗槽的特殊要求》專題研究報告
- 道路安全基礎知識培訓課件
- 2025年抽血室工作總結(jié)暨工作計劃
- 2025-2026年湘教版九年級地理上冊期末試題庫(附含參考答案)
- 道路交通安全培訓教案課件
- 2025-2026年蘇教版八年級英語上冊期末試題庫(附含參考答案)
- 道德講堂交通安全課件
- 醫(yī)院檢查、檢驗結(jié)果互認制度
- 2026年高考化學模擬試卷重點知識題型匯編-原電池與電解池的綜合
- 2025青海省生態(tài)環(huán)保產(chǎn)業(yè)有限公司招聘11人筆試歷年參考題庫附帶答案詳解
- 學堂在線 雨課堂 學堂云 科研倫理與學術規(guī)范 期末考試答案
- 4M變化點管理記錄表
- Tickets-please《請買票》 賞析完整
- 《馬克的怪病》課件
- 部編版八年級道德與法治上冊《樹立維護國家利益意識捍衛(wèi)國家利益》教案及教學反思
- 基于單片機的智能家居控制系統(tǒng)設計
- 鍋爐大件吊裝方案
- 昆明醫(yī)科大學第二附屬醫(yī)院進修醫(yī)師申請表
評論
0/150
提交評論