C語言程序設(shè)計(jì) CPD-03 更多課件請(qǐng)進(jìn)我文庫_第1頁
C語言程序設(shè)計(jì) CPD-03 更多課件請(qǐng)進(jìn)我文庫_第2頁
C語言程序設(shè)計(jì) CPD-03 更多課件請(qǐng)進(jìn)我文庫_第3頁
C語言程序設(shè)計(jì) CPD-03 更多課件請(qǐng)進(jìn)我文庫_第4頁
C語言程序設(shè)計(jì) CPD-03 更多課件請(qǐng)進(jìn)我文庫_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 格式化輸入輸出北京工商大學(xué)計(jì)算機(jī)學(xué)院何 渝計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)2本章主要內(nèi)容輸入輸出(Input/Output)格式化輸出格式化輸入33.1 引言 對(duì)數(shù)據(jù)的一種重要操作是輸入輸出(I/O),沒有輸出的程序是沒有用的,而沒有輸入的程序缺乏靈活性。前面通過cin, cont和printf, scanf已初步接觸了C+和C的I/O,它們的格式都是“隱含”或“缺省(default)”的,即事先設(shè)計(jì)或定義好的一種格式,而本章介紹的“格式化”I/O是可由用戶根據(jù)需要,自己設(shè)計(jì)或定義。43.2 幾個(gè)概念 輸入輸出設(shè)備 標(biāo)準(zhǔn)輸入輸出設(shè)備 流(Stream) 交互式程序 批處理程序53.3語言數(shù)據(jù)的輸入與

2、輸出 語言沒有專門的I/O語句,它是由函數(shù)來實(shí)現(xiàn)的。提供了多種I/O函數(shù),使其靈活、多樣、方便,功能強(qiáng)。標(biāo)準(zhǔn)I/O函數(shù)庫中有一些公用的信息寫在頭文件stdio.h中,因此使用標(biāo)準(zhǔn)I/O函數(shù)庫中的函數(shù)時(shí),一般在程序開頭先寫下面的命令: #include 以便把I/O函數(shù)要使用的信息包含到程序中來。63.3.1 getchar與putchar函數(shù) getchar( )與putchar( )函數(shù)是語言的標(biāo)準(zhǔn)函數(shù),其函數(shù)庫中已有,可直接使用。 getchar( )函數(shù)是從標(biāo)準(zhǔn)輸入設(shè)備(一般是用戶終端)上讀入一個(gè)字符。 putchar(c)函數(shù)是將變量c中的字符輸出到標(biāo)準(zhǔn)設(shè)備(一般也是用戶終端)上。 注

3、意:前一函數(shù)沒有參數(shù),后一函數(shù)有一個(gè)形式參數(shù)。7例 輸入三個(gè)字母,若是小寫轉(zhuǎn)換成大寫輸出#include void main( ) char ch1, ch2, ch3; ch1=getchar(); ch2=getchar(); ch3=getchar(); if(ch1=a&ch1=a&ch2=a&ch3=z) ch3=ch3-32; putchar(ch1); putchar(ch2); putchar(ch3);運(yùn)行情況如下:boyBOY83.3.2 printf 函數(shù) 該函數(shù)是格式輸出函數(shù),功能是按指定的格式、將指定的控制參數(shù)的值在標(biāo)準(zhǔn)設(shè)備上輸出,包括兩種參數(shù):格式控制參數(shù)和輸出項(xiàng)參

4、數(shù),一般形式為: printf(格式控制參數(shù),輸出項(xiàng)1,輸出項(xiàng)2,); 格式控制參數(shù)以字符串的形式描述,也稱為格式控制字符串。由2部分組成:格式說明和普通字符。普通字符(包括轉(zhuǎn)義符序列)將被簡單地復(fù)制顯示(或執(zhí)行)。一個(gè)格式說明項(xiàng)將引起一個(gè)輸出參數(shù)項(xiàng)的轉(zhuǎn)換與顯示,它由%引出并以一個(gè)類型描述符結(jié)束的字符串,中間是一些可選的附加說明項(xiàng)。輸出項(xiàng)1、輸出項(xiàng)2等可有要無,由格式控制參數(shù)決定。9 格式說明由不同的格式字符組成,格式字符的作用是指定輸出數(shù)據(jù)類型,它包括: % 格式說明的起始符號(hào) - 指定是否左對(duì)齊輸出 0 指定空位是否填0 m.n 指出輸出域?qū)捈熬?l/n 輸出長度修正符101. 格式字符

5、 格式字符用以指定輸出項(xiàng)的數(shù)據(jù)類型和輸出格式.,如d(i), x(X), o, u, c, s, e(E), f, g(G), %等。一般情況下,格式字符要與對(duì)應(yīng)的輸出項(xiàng)類型一致,如不應(yīng)用%f去輸出整數(shù)。112. 長度修正符 整型的格式字符沒有區(qū)分int, short, long,實(shí)型的格式字符也沒有區(qū)分float 與double。對(duì)整型來說,d, x, o, u是指int型;對(duì) 實(shí)型來說e, f, g是指float型。為了能適應(yīng)不同長度的數(shù)據(jù),可格式字符前面加一個(gè)長度修正符: l: 整型指long型,如%ld;實(shí)型指double型,如%lf。 h: 只用于將整型的格式修正為short型,如%

6、hd等。12 3.域?qū)捈熬确鹠.n m: 指域?qū)?。即?duì)應(yīng)輸出項(xiàng)在輸出設(shè)備上所占的字符數(shù)。 n: 指精度。用于說明輸出的實(shí)型的小數(shù)位數(shù)。不指定n時(shí),隱含的精度為n=6位。13例:int a=123; char ch=69; float f=123.456; long k=98123;printf(%d,a);/* 輸出:123 */printf(%x,a); /* 輸出:7B */printf(%o,a); /* 輸出:173 */printf(%c,ch); /* 輸出: E */ printf(%e,f); /* 輸出:1.234560e+002 */ printf(%f,f); /* 輸

7、出:123.456000 */ printf(%8.1f,f); /* 輸出:123.5 */ printf(%g,f); /* 輸出: 123.456 */ printf(%); /* 輸出: % */ printf(%ld,k); /* 輸出: 98123 */14注意: 輸出數(shù)據(jù)的實(shí)際精度并不主要決定于格式項(xiàng)中的域?qū)捙c精度,也不決定于輸入的數(shù)據(jù)精度,而主要決定于數(shù)據(jù)在機(jī)器內(nèi)的存儲(chǔ)精度。因此,格式項(xiàng)中指定的域?qū)捲俅?,精度再長,所得到的多余位數(shù)上的數(shù)字是無意義的。所以增加域?qū)捙c精度并不能提高輸出數(shù)據(jù)的實(shí)際精度。154 . 數(shù)0用以指定數(shù)字前的空位是否用0填補(bǔ)。有此項(xiàng)則空位以0填補(bǔ),無此項(xiàng)則空

8、位用空格填補(bǔ)。如: float a=1.23; printf(%08.1f,a);輸出結(jié)果為: 000001.2162.7.3 scanf 函數(shù) scanf函數(shù)的功能是進(jìn)行輸入數(shù)據(jù),也是按格式參數(shù)的要求,從終端上把數(shù)據(jù)傳送到地址參數(shù)所指定的內(nèi)存空間中。其一般形式為: scanf(格式控制參數(shù),地址1,地址2,.); 1. 地址參數(shù)是指變量的地址,它通過對(duì)變量名求地址運(yùn)算得到。求地址運(yùn)算符為&,得到的地址是一種符號(hào)地址,不是真正的機(jī)器內(nèi)存地址。如:&a, &b。 2. 格式控制參數(shù)與printf函數(shù)類似,不完全相同。它的格式參數(shù)有兩種成分:171). 格式說明項(xiàng) 格式字符有: % * m l/h

9、 輸入抑制字符 m 域?qū)捳f明符 l/n 長度修正符 格式字符 輸入數(shù)據(jù)類型和格式182). 輸入流分隔 scanf函數(shù)從輸入數(shù)據(jù)中接收到的非空字符,再轉(zhuǎn)換成格式項(xiàng)描述的格式,傳送到與格式項(xiàng)對(duì)應(yīng)的地址中去。具體有: (1) 當(dāng)輸入流中數(shù)據(jù)類型與格式字符要求不符時(shí),就認(rèn)為這一項(xiàng)數(shù)據(jù)項(xiàng)結(jié)束。 (2) 根據(jù)格式項(xiàng)中指定的域?qū)挿指舫鰯?shù)據(jù)項(xiàng)。 (3) 用隱含的分隔符。193. scanf函數(shù)的停止與返回 scanf函數(shù)在遇到下面兩種情況后結(jié)束: (1) 格式參數(shù)中的格式項(xiàng)用完,正常結(jié)束。 (2) 發(fā)生格式項(xiàng)與輸入域不匹配是,非正常結(jié)束。如從鍵盤輸入的數(shù)據(jù)數(shù)目不足。 scanf也是一個(gè)函數(shù),它也有返回值,這

10、個(gè)值就是成功匹配的項(xiàng)數(shù)。20 4. scanf函數(shù)與輸入 scanf函數(shù)在輸入數(shù)據(jù)時(shí),是在鍵入一行字符并按回車鍵之后才被輸入,這一行字符先放在一個(gè)緩沖區(qū)中,然后按格式說明的要求從緩沖區(qū)中讀數(shù)據(jù)。如果輸入的數(shù)據(jù)多于所要求的個(gè)數(shù)時(shí),余下的數(shù)據(jù)可以為下一個(gè)scanf函數(shù)接著使用。例: printf(Input a b c: ); scanf(%d %c %f,&a, &b, &c); printf(a=%d, b=%c, c=%f, a, b, c);輸出為: Input a b c: 1234r1234.567(下劃線為輸入流) a=1234, b=r, c=1234.567017213.4 流的定向輸入輸出 C+中標(biāo)準(zhǔn)輸入輸出是定向流,并預(yù)先定義了四種標(biāo)準(zhǔn)輸入輸出流: 標(biāo)準(zhǔn)輸入流 cin 標(biāo)準(zhǔn)輸出流 cout 標(biāo)準(zhǔn)錯(cuò)誤輸出流 cerr 標(biāo)準(zhǔn)錯(cuò)誤輸出流 clog223.5 標(biāo)準(zhǔn)輸出流 標(biāo)準(zhǔn)流定向輸出語句最簡形式如下:cout OutputExpression;其中 OutputExpression 為常量、變量、表達(dá)式、函數(shù)調(diào)用或格式控制符; InputVariable;其中 Inpu

溫馨提示

  • 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)論