第3章C++程序的基本組成_第1頁
第3章C++程序的基本組成_第2頁
第3章C++程序的基本組成_第3頁
第3章C++程序的基本組成_第4頁
第3章C++程序的基本組成_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 數(shù)據(jù)的輸入與輸出目錄l3.1 Printf與Scanfl3.1.1格式輸出函數(shù)printf( )l3.1.2格式輸入函數(shù)scanf( )l3.2 I/O流控制l3.2.1cinl3.2.2coutl3.2.3格式控制第3章數(shù)據(jù)的輸入與輸出 l輸入:信息(程序或數(shù)據(jù))從計算機(jī)的外設(shè)流入計算機(jī)主機(jī);l輸出:信息(程序或數(shù)據(jù))從計算機(jī)主機(jī)流向計算機(jī)的外設(shè)。lC+提供了兩種數(shù)據(jù)的輸入輸出方式:保留了C的輸入輸出系統(tǒng),即采用在標(biāo)準(zhǔn)函數(shù)庫中提供輸入輸出函數(shù)的方法為程序提供輸入輸出功能;基于對象機(jī)制的輸入輸出系統(tǒng),對象即是流。3.1 Printf與Scanflprintf和scanf是標(biāo)準(zhǔn)輸入輸出函

2、數(shù),C語言中的頭文件stdio.h中聲明了這兩個函數(shù)。l#include 3.1.1格式輸出函數(shù)printf( )l【格式】lprintf (格式控制字符串, 輸出項(xiàng)1, 輸出項(xiàng)2, .)printf()函數(shù)的功能是將后面的參數(shù)按給定的格式輸出。格式說明由“%”,對齊和填補(bǔ)說明,寬度和精度說明和格式字符組成,中間不能插入別的字符,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換成指定的格式輸出。#include void main()int a=10,b=20;printf (%d,%d,a,b);3.1.1格式輸出函數(shù)printf( ) 1、 格式字符格式符格式符輸出項(xiàng)輸出項(xiàng)形式形式說明說明d,

3、i十進(jìn)制十進(jìn)制整數(shù)整數(shù)無寬度說明時,按實(shí)際寬度輸出無寬度說明時,按實(shí)際寬度輸出X, x十六進(jìn)十六進(jìn)制整制整數(shù)數(shù)以以0 x打頭的數(shù)為十六進(jìn)制數(shù)。用打頭的數(shù)為十六進(jìn)制數(shù)。用x,符號符號af以小寫形式輸出以小寫形式輸出;用用X,符號符號AF以大寫形式輸出以大寫形式輸出o八進(jìn)制八進(jìn)制整數(shù)整數(shù)以以0打頭的數(shù)為八進(jìn)制數(shù)打頭的數(shù)為八進(jìn)制數(shù)f以小數(shù)方式輸出以小數(shù)方式輸出無寬度說明時,小數(shù)部無寬度說明時,小數(shù)部分按分按float型規(guī)定取型規(guī)定取6位位E,e科學(xué)記數(shù)法科學(xué)記數(shù)法e+002表示表示102c字符方式輸出字符方式輸出s以字符串格式輸出以字符串格式輸出如果要輸出%本身,則雙寫%。2、 寬度和精度說明l寬度

4、說明用于說明輸出數(shù)據(jù)所占的總位數(shù)。l寬度說明缺省時,按實(shí)際寬度輸出。l有寬度說明時,對整數(shù)部分及字符串和字符按“認(rèn)寬不認(rèn)緊”的原則處理。l有寬度說明時,可在寬度字段后加圓點(diǎn)和精度說明,說明實(shí)型數(shù)的精度。精度說明缺省時,默認(rèn)為小數(shù)部分取6位。對實(shí)數(shù)的小數(shù)部分是寬緊都認(rèn),但從原有有效位的最后一位開始,便是近似的。3、 對齊和填補(bǔ)說明l在一般情況下在寬度說明前使用“+”號時,數(shù)據(jù)在指定的位置空間中按右對齊方式輸出,當(dāng)使用“-”號時,按左對齊方式輸出。l當(dāng)使用右對齊方式時,若在寬度說明的前方加一個“0”,則將數(shù)據(jù)前多余空位用“0”填補(bǔ)?!纠?- 1】格式輸出舉例。#include void main(

5、) char ch = h; int count = -3; double fp = 251.7366; printf(Character:nt%ct%d%3cn,ch,ch,ch); printf( Integer formats:n t Decimal: %d Justified: %6d Unsigned: %un, count, count, count );【例3- 1】格式輸出舉例。 printf( Decimal %d as:ntHex: %Xh hex: 0 x%x Octal: %on, count, count, count, count ); printf( Digits

6、 10 equal:ntHex: %i Octal: %i Decimal: %in, 0 x10, 010, 10 ); printf( Real numbers:nt%f%10.2f %e %En, fp, fp, fp, fp ); printf(String:nt%3s,%-5.3s,%5.2sn,Hello,Hello,Hello);3.1.2格式輸入函數(shù)scanf( )l【格式】lscanf (格式控制字符串, 地址1, 地址2, .)格式控制字符串的含義同前,地址n是變量的地址。scanf ()中后面的地址參數(shù)可以是變量的地址,但不能是變量名,否則會將輸入值存放在變量值作為地址的

7、內(nèi)存空間中,導(dǎo)致意想不到的運(yùn)行異常。3.1.2格式輸入函數(shù)scanf( )%d用以輸入整數(shù),可以帶l表示長整數(shù),帶h表示短整數(shù)。%c用以輸入字符。%o,%x用以輸入8進(jìn)制數(shù)和16進(jìn)制數(shù)。lo和lx分別表示長8進(jìn)制數(shù)和長16進(jìn)制數(shù)。%f用以輸入浮點(diǎn)數(shù),%lf和%Lf分別表示輸入double型數(shù)和long double型數(shù)。%e與%f作用相同。%s用以輸入字符串,以非空字符開始,以空字符或回車結(jié)束?!纠?- 2】格式輸入舉例。#include void main()int a,b;char ch1,ch2;float f,g;scanf (%d %d,&a,&b);scanf (

8、%c%c,&ch1,&ch2);scanf ( %f,%f,&f,&g);printf (a=%d b=%d ch1=%c ch2=%c f=%f,g=%f,a,b,ch1,ch2,f,g);3.2 I/O流控制I/O流是輸入或輸出的一系列字節(jié)“”從cin輸入流中抽取字符。#include 3.2.1cinl【格式】lcin變量名1變量名2.變量名n;l“”稱為提取運(yùn)算符,表示將程序暫停執(zhí)行,等待用戶從鍵盤上輸入相應(yīng)的數(shù)據(jù)。每個提取運(yùn)算符后面只能跟一個變量名,但提取運(yùn)算符可以多次使用,即用一個cin可以為一個變量提供輸入值,也可以為多個變量提供輸入值。l在用一個

9、語句中輸入多個數(shù)據(jù)時,輸入的幾個數(shù)據(jù)間應(yīng)以空格分隔。在輸入的字符串中,不能含有空格,一遇空格,便認(rèn)為是本數(shù)據(jù)結(jié)束。l一條“cin”語句的鍵盤操作以回車結(jié)束。當(dāng)在一行中輸入的數(shù)據(jù)比要提取的變量數(shù)多時,多余的數(shù)據(jù)將保留在流中,供下一次提取使用;流中的數(shù)據(jù)不足時,要等待用戶的輸入操作。3.2.2coutl【格式】lcout表達(dá)式1表達(dá)式2.表達(dá)式n;l其中,“”稱為插入運(yùn)算符,它把緊跟在它后面的表達(dá)式的值輸出到顯示器的當(dāng)前光標(biāo)位置。3.2.3格式控制l流的默認(rèn)格式輸出有時不能滿足特殊要求。用控制符可以對I/O流的格式進(jìn)行控制。1、 無參格式控制符l 表 3 2所示的幾個無參格式控制符定義在頭文件io

10、stream.h中。l 表 3 2無參格式控制符控制符描述輸入/輸出dec數(shù)值數(shù)據(jù)采用十進(jìn)制表示I/Ohex數(shù)值數(shù)據(jù)采用十六進(jìn)制表示I/Ooct數(shù)值數(shù)據(jù)采用八進(jìn)制表示I/Ows提取空白字符Iendl產(chǎn)生一個換行(n)Oends產(chǎn)生一個空字符(NULL),通常用來結(jié)束一個字符串Oflush強(qiáng)制將流從緩沖區(qū)寫到相應(yīng)設(shè)備,刷新流相關(guān)聯(lián)的緩沖區(qū)O2、 帶參格式控制符l表 3 3所示的幾個帶參數(shù)的格式控制符定義在頭文件iomanip.h中,使用時必須在程序開頭添加一行#include 。表 3 3 帶參的格式控制符控制符描述輸入/輸出setfill(char ch)設(shè)填充字符為chOsetw(int w

11、)設(shè)域?qū)挒閣個字符Osetprecision(int n)設(shè)置浮點(diǎn)數(shù)輸出的有效數(shù)字個數(shù)n Osetiosflags(ios:fixed)固定的浮點(diǎn)顯示Osetiosflags(ios:scientific)指數(shù)表示I/Osetiosflags(ios:left) 左對齊Osetiosflags(ios:right)右對齊Osetiosflags(ios:skipws)忽略前導(dǎo)空白Osetiosflags(ios:uppercase)16進(jìn)制數(shù)大寫輸出Osetiosflags(ios:lowercase) 16進(jìn)制數(shù)小寫輸出O3、 控制浮點(diǎn)數(shù)值顯示lC+默認(rèn)的流輸出數(shù)值有效位是6。如果setpr

12、ecision(n)與setiosflags(ios:fixed)合用,可以控制小數(shù)點(diǎn)右邊的數(shù)字個數(shù)。setprecision(n)可控制輸出流顯示浮點(diǎn)數(shù)的數(shù)字個數(shù),setiosflags(ios:fixed)是用定點(diǎn)方式表示實(shí)數(shù)。l 【例3- 3】分別用浮點(diǎn)、定點(diǎn)和指數(shù)方式表示一個實(shí)數(shù)。#include #include void main()double amount = 22.0/7;coutamountendl;coutsetprecision(0)amountendl setprecision(1)amountendlsetprecision(2)amountendlsetpreci

13、sion(3)amountendlsetprecision(4)amountendl;coutsetiosflags(ios:fixed);coutsetprecision(8)amountendl;coutsetiosflags(ios:scientific)amountendl;coutsetprecision(6); /重新設(shè)置成原默認(rèn)設(shè)置4、 設(shè)置值的輸出寬度l除了使用空格來強(qiáng)行控制輸出間隔外,還可以用setw(n)控制符。如果一個值需要比setw(n)確定的字符數(shù)更多的字符,則該值將使用它所需要的所有字符。l如果一個值的字符數(shù)比setw(n)確定的字符個數(shù)更少,則在數(shù)字字符前顯示空白

14、。不同于其他控制符,setw(n)僅僅影響下一個數(shù)值輸出,換句話說,使用setw設(shè)置的間隔方式并不保留其效力。5、 輸出8進(jìn)制和16進(jìn)制數(shù)3個常用的控制符是hex,oct和dec,它們分別對應(yīng)16進(jìn)制、8進(jìn)制和10進(jìn)制數(shù)的顯示。【例3- 4】分別用10進(jìn)制、16進(jìn)制和8進(jìn)制表示一個整數(shù)。#include void main()int number = 1001;coutDecimal:decnumberendlHexadecimal:hexnumberendlOctal:octnumberendl;6、 設(shè)置填充字符l setw可以用來確定顯示的寬度。默認(rèn)時,流使用空格符來保證字符間的正確間隔

15、。用setfill控制符可以確定一個非空格的別的字符。l 例如,下面的程序:l #include l #include l void main()l lcoutsetfill(*)lsetw(2)21endllsetw(3)21endllsetw(4)21endl;lcoutsetfill( ); /恢復(fù)默認(rèn)設(shè)置l 7、 左右對齊輸出默認(rèn)時,I/O流左對齊顯示的內(nèi)容。使用setiosflags(ios:left)和setiosflags(ios:right),可以控制輸出對齊。例如:#include #include void main()coutsetiosflags(ios:right)setw(5)1setw(5)2setw(5)3endl;coutsetiosflags(ios:left)setw(5)1setw(5)2setw(5)3endl;8、 強(qiáng)制顯示小數(shù)點(diǎn)和符號當(dāng)程序輸出下面的代碼時:cout 10.0/5 endl ;默認(rèn)的I/O流會簡單的顯示2,而非2.0,因?yàn)槌ǖ慕Y(jié)果是精確的。當(dāng)需要顯示小數(shù)點(diǎn)時,可以用ios:showpoint標(biāo)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論