




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、93 練習題解答 1在C+的輸入輸出操作中,“流”的概念如何理解?從流的角度說明什么是提取操作?什么是插入操作? 答:C+語言將輸入信息和輸出信息都看作為信息流,或者是字符流,或者是二進制碼流,因此,稱為輸人流和輸出流。輸人流是輸入的信息流,輸出流是輸出的信息流。 從“流”的角度來講,提取操作是從輸入信息流中讀取信息,將它存放在機器中;插入操作是向輸出信息流中加入信息,將它流向某個指定的設備或文件中去。 2系統(tǒng)預定義的流類對象中,cin和cout的功能是什么? 答:cin是istream類的對象,它表示標準輸入流對象,即鍵盤輸入。 cout是ostream類的對象,它表示標準輸出流對象,即顯示
2、屏幕輸出。 3屏幕輸出一個字符串有哪些方法?屏幕輸出一個字符有哪些方法? 答:屏幕輸出一個字符串通常使用下述方法。 (1)標準輸出流對象cout和插入運算符。例如, cout ”output a string! n”; (2)使用成員函數(shù)write()輸出一個字符串。例如, cout.write(”string”,strlen(”string”); 屏幕輸出一個字符通常也有兩種方法。(1) 使用cout和插入運算符。(2) 例如。 couta,bendl; (2)使用成員函數(shù)put()輸出一個字符。例如, cout.put(a“)。put(,)put(b)put (n); 4鍵盤輸入一個字符串
3、有哪些方法?鍵盤輸入一個字符有哪些方法? 答:鍵盤輸入一個字符串通常使用下述方法: (1)使用標準輸入流對象cin和提取符。 例如 cinab; (2)使用成員函數(shù)read()輸入一個字符串。 例如 char s80=” "cinread(s,80); (3)使用成員函數(shù)getline()輸入一行字符串。 例如 char buf80; cingetline(buf,80)5 鍵盤輸入一個字符通常用下述兩種方法。 (1)使用cin和提取符。 例如 Char cl,c2; cinclc2; (2)使用成員函數(shù)get()輸入一個字符。 例如 Char c ; cinget(c); 5如何輸
4、出一個int型數(shù)值量的不同進位制? 答:輸出一個int型數(shù)值量的不同進制,可采用下述方法。 例如 int a123: 輸出a的十進制數(shù)值: coutdecaendl: 默認為十進制。 輸出a的八進制數(shù)值 coutoctaendl; 輸出a的十六進制數(shù)值 couthexaendl: 6如何輸出一個浮點數(shù)的不同精度? 答:設置浮點數(shù)的精度有兩種方法。 (1)使用成員函數(shù)precision()設置浮點數(shù)有效數(shù)字的位數(shù)。 例如 cout.precision(8); 表明輸出浮點數(shù)的有效數(shù)字位數(shù)為8位,不足8位后補0,超過8位四舍五人取8位。 (2)使用操作子set spreci sion(int)設置
5、浮點數(shù)精度。 例如 coutsetsprecision(8)<<1.23456789<<endl: 輸出結果為1.23456789,不含小數(shù)點,共8位。 7如何確定輸出數(shù)據項的寬度? 答:確定輸出數(shù)據項寬度的方法如下: (1)使用成員函數(shù)width()確定輸出寬度。 例如 coutWidth(10): 表明下面輸出的數(shù)據項最小寬度為10個字符位置,超過后按實際寬度,不足補填充符。輸出寬度設置僅用一次。不設置寬度時按默認寬度0,即按實際寬度輸出。 (2)使用操作子setw(int)設置輸出數(shù)據項寬度。 例如 coutsetw(10)l 23456endl; 輸出結果為 l
6、 23456,其寬度為10。 8采用什么方法打開和關閉磁盤文件? 答:打開磁盤文件有下述兩種方法。 (1)創(chuàng)建fstream類的對象,打開已知文件,需指出打開方式。例如,以寫方式打開 xy.txt文件,具體格式如下所示。 fstream output(”xytxt”,ios:out); (2)創(chuàng)建ifstream類或ofstream類的對象,只需已知文件名。例如,以讀方式打開 xytxt文件,具體格式如下所示。 ifstrcam input(”xytxt”); 關閉磁盤文件的方法如下: 使用成員函數(shù)close()。 例如 inputclose( ); 將創(chuàng)建的inPut輸入流對象關閉。 9寫磁
7、盤文件時有哪幾種方法? 答:寫磁盤文件的方法如下。 (1)使用輸出流對象和插入符,可向打開的文件中寫入各種類型的數(shù)據。(2)使用輸出流對象和成員函數(shù)put(),每次向文件中寫一個字符。 (3)使用輸出流對象和成員函數(shù)w rite(),可向文件中寫入若干個字符。 10讀磁盤文件時有哪幾種方法? 答:讀磁盤方法如下所示。(1)使用輸入流對象和提取符(>>),可以從打開的文件中讀取各種類型的數(shù)據。(2)使用輸入流對象和成員函數(shù)get()。每次從打開的文件中讀取一個字符。(3)使用輸入流對象和成員函數(shù)read(),可以從打開的文件中提取一個字符串。11如何確定文件的讀指針或寫指針的位置?如
8、何改變讀指針或寫指針的位置?答:c+語言提供了隨機訪問數(shù)據文件的相關操作。由這些操作可以改變讀指針和寫指針的位置,從而實現(xiàn)隨機讀寫的目地.一個文件被打開后,由于打開方式不同,讀,寫指針位置也不同,通常是在文件首,有時。例如按追加寫打開時,寫指針會出現(xiàn)在文件民, iostream類提供3個用來改變讀指針位置的成數(shù)函數(shù)c 它們是 istrcam istrcam:seekg(流中位置 istream istrcam:seekg (偏移量,參照位置> ;streampos istream:tellg();其中,<流中位置>和<偏移量>都是long型量,以字節(jié)數(shù)為單位。&l
9、t;參照位置>含意如下所示。 cur1 相對當前讀指針所指定的位置 beg0 相對于流的開始位置 end2 相對于流的結尾處 streampos 被定義為long型量。 例如 inputseekg(l00,ios:end); 表示使讀指針相對文件流尾處前移loo個字節(jié)。 成員函數(shù)tellg()將返回當前讀指針相對于流開始處的字節(jié)數(shù)。 同樣,ostream類中提供了如下3個關于寫指針操作的成員函數(shù)。 ostream &ostream:seekp(流中位置); ostream &ostream:seekp(偏移量,參照位置; streampos ostream:tellp()
10、; 具體解釋同上。 l 2流的錯誤狀態(tài)如何處理? 答:在ios類中,定義一個用來記錄錯誤信息的數(shù)據成員,稱為狀態(tài)字。該狀態(tài)字的各位是用不同的錯誤狀態(tài)來描述的。 例如 eofbitOx01 表示到達文件尾 failbitOx02 表示IO操作失敗 等等。 在ios類中又定義了檢測流狀態(tài)字的各種成員函數(shù)。 例如 int eof() 該函數(shù)返回非零值表示已到文件尾 int fail() 如果faiIbit位被設置,該函數(shù)返回非零值。 等等。 利用上述成員函數(shù)檢測流的錯誤狀態(tài),并進行處理。 94 作業(yè)題解答 一、選擇填空 1進行文件操作時需要包含( )文件。 A:iostreamh Bfstreamh
11、 C stdioh Dstdlibh 答: B。 2使用操作子對數(shù)據進行格式輸出時,應包含( )文件。 A iostreamh B fstreamh C。 iomaniph D stdlibh 答:C。 3已知:int a,*pa&a;輸出指針pa十進制的地址值的方法是( )。 A coutpa B cout*pa Ccout&pa Dcoutlong(&pa) 答:D。 4下列輸出字符A的方法中,( )是錯誤的。 Acoutput(A) BcoutA C coutput(A) D char AA;coutA 答:A。 5關于getline()函數(shù)的下列描述中,( )是
12、錯的。 A該函數(shù)是用來從鍵盤上讀取字符串的 B該函數(shù)讀取的字符串長度是受限制的 C該函數(shù)讀取字符串時遇到終止符便停止 D該函數(shù)中所使用的終止符只能是換行符 答:D。 6關于read()函數(shù)的下列描述中,( )是對的。 A該函數(shù)只能從鍵盤輸人中獲取字符串 B該函數(shù)所獲取的字符多少是不受限制的 C該函數(shù)只能用于文本文件的操作中 D該函數(shù)只能按規(guī)定讀取所指定的字符數(shù) 答:B。 7在ios中提供控制格式的標志位中,( )是轉換為十六進制形式的標志位。 A hex B oct C dcc D。1eft 答:A。 8控制格式輸出輸入的操作子中,( )是設置域寬的。 Aws Boct Csetfill()
13、D,setw() 答:D。 9磁盤文件操作中,打開磁盤文件的訪問方式常量中,( )是以追加方式打開文件的。 A in B out C app D ate 答:C。 10下列函數(shù)中,( )是對文件進行寫操作的。 Aget() Bread() Cseekg() Dput() 答:D。 二、判斷下列描述的正確性,對者劃,錯者劃× 1使用提取符()可以輸出各種基本數(shù)據類型的變量的值,也可以輸出指針值。 ×2預定義的插入符從鍵盤上接收數(shù)據是不帶緩沖區(qū)的。 3預定義的提取符和插入符是可以重載的。 ×4記錄流的當前格式化狀態(tài)的標志字中每一位用于記錄一種格式,這種格式是不能被設置
14、或清除的。 5設置和清除格式標志字的成員函數(shù)需要通過對象來引用它們,輸出顯示格式的對象通常是cout。 6操作子本身是一個對象,它可以直接被提取符或插入符操作。 7get()函數(shù)不能從流中提取終止字符,終止字符仍留在流中。getline()函數(shù)可以從流中提取終止字符,但終止字被丟棄。 ×8ios類的成員函數(shù)clear()是用來清除整個屏幕的。 9使用打開文件函數(shù)open()之前,需要定義一個流類對象,使用open()函數(shù)來操作該對象。 10使用關閉文件函數(shù)close()關閉一個文件時,但流對象仍存在。 11以app方式打開文件時,當前的讀指針和寫指針都定位于文件尾。 ×12
15、打開ASCII碼流文件和二進制流文件時,打開方式是相同的。 13read()和write()函數(shù)可以讀寫文本文件,也可以讀寫二進制文件。 14流的狀態(tài)包含流的內容、長度和下一次提取或插入操作的當前位置。 ×15seekg()函數(shù)和seekp()函數(shù)分別用來定位讀指針和寫指針的。如果使用 seek()函數(shù)可以同時定義讀寫指針。 三、分析下列程序的輸出結果 1 #includeiostreamh #includefstreamh #includestdlibh void main( )fstream outfile,infile; outfile.open(“text.dat”,ios:
16、out);if(!outfile)cout<<”text.dat cant open.n”;abort();outfile<<”123456789n”;outfile<<”aaabbbbbbbbcccn”<<”dddddfffeeeeggggghhhn”;outfile<<”okn”;outfile.close();infile.open(”tcxtdat”,ios:in);if(!infile)cout”file cant open.n”;abort(); char textline80;While(!infileeof() inf
17、ilegctline(textline,sizeof(textline); couttextlineendl; 運行該程序輸出如下結果。 1 2 3 4 5 6 7 8 9 a a a b b b b b b b c c c d d d d d f f f c c c c g g g g g h h h o k! 分析: 該程序中先打開文件textdat,打開方式是寫,判斷打開成功后,向該文件中輸入行字符串。然后,將該文件關閉。 接著,以讀方式打開textdat文件,判斷成功后,將通過while循環(huán)語句。逐行讀:textdat文件中的內容,并輸出顯示在屏幕上。 這里,使用了打開、關閉文件的操作
18、以及對打開文件的讀、寫操作。 2 #includeiostreamh #includefstreamh#include<stdlib.h>void main()fstream file1;file1.open(“text1.dat”,ios:out|ios:in);if(!filel)cout<<”text1.dat cant open.n”;abort();char textline=”123456789abcdefghijkl.n”;for(int i=0 ; i<sizeof(textline);i+) file1.seekg(0);/ 將讀指針移至文件開始
19、char ch; while(filel.get(ch)coutch;filelclose( ); 運行該程序的輸出結果如下所示。 1 23456789a b c d e f g h ij k1 分析: 該程序的特點是打開文件textldat時,采用了又寫又讀的打開方式。打開成功后, 先使用寫字符函數(shù)put(),將字符數(shù)組textline中的字符串寫入該文件。 然后,使用下列語句 filelseekg(0); 將讀指針移至文件開始,接著使用讀字符函數(shù)get()從文件中讀出字符,并顯示在屏幕上。 該程序中,對文件textldat的讀寫只打開一次。 #includestrstreahvoid ma
20、in() ostrstream ss: ss”Hi,good morning”; ssends: char * bufss.str( ); coutbufendI;de1ete buf; 運行該程序輸出結果如下所示。 Hi, good morning! 分析: 程序中首先創(chuàng)建一個ostrstream類的對象ss,ss是一個用來存放插人數(shù)據的數(shù)組對象。接著,向s s中存人字符串”Hi,g ood morning!”。又增加一個字符串結束符o,可用end2表示。 程序中又定義個字符指針使用ss數(shù)組對象的指針值進行初始化,這一功能用成員函數(shù)sltr()來實現(xiàn)的。最后。輸出顯示一個字符串(buf中的字符串)在屏幕上。 4#includeiostream.h> #
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美團外賣商家訂單分成合同
- 直播活動內容補充與品牌合作協(xié)議
- 軟性材料研發(fā)與市場推廣合伙協(xié)議
- 網絡文學有聲書制作與環(huán)保公益活動合作協(xié)議
- 影視作品版權購買與版權收益分成合同
- 頂級域名所有權及商業(yè)價值轉讓服務合同
- 影視特效動作捕捉系統(tǒng)全面解決方案租賃協(xié)議
- 生物樣本冷鏈物流與生命科學研究支持合同
- 小產權房配套設施共享及社區(qū)公共設施保養(yǎng)維護合同
- 電商侵權案件管轄權爭議補充協(xié)議
- 網絡與信息安全管理員考試題+參考答案解析
- 《故宮公開課》課件
- 《智能家居系統(tǒng)介紹》課件
- 2025-2030年中國證券融資融券市場需求態(tài)勢及投資風險預測研究報告
- 淘寶運營考試試題及答案
- 急性腦梗塞患者護理查房
- 2025年河南鄭州航空港科創(chuàng)投資集團有限公司招聘筆試參考題庫含答案解析
- 騰訊學院培訓課件
- 認知增強技術在法律領域的應用-全面剖析
- 化學自制米酒 領略我國傳統(tǒng)釀造工藝的魅力課件 2024-2025學年高一下魯科版(2019)必修第二冊
- 貴州省往年氣象局筆試公共基礎題庫
評論
0/150
提交評論