




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第九章流類庫和輸入/輸出習(xí)題本概念與基礎(chǔ)知識測試題填空題9.1.1在C++中“流”是表達(dá)(1)。從流中取得數(shù)據(jù)稱為(2),用符號(3)表達(dá);向流中添加數(shù)據(jù)稱為(4),用符號(5)表達(dá)。答案:(1)數(shù)據(jù)從一個對象到另一個對象的傳送(2)提取操作(3)>>(4)插入操作(5)<<9.1.2抽象類模板(1)是所有基本流類的基類,它有一個保護訪問限制的指針指向類(2),其作用是管理一個流的(3)。C++流類庫定義的cin,cout,cerr和clog是(4)。cin通過重載(5)執(zhí)行輸入,而cout,cerr和clog通過(6)執(zhí)行輸出。答案:(1)basic_ios(2)basic_streambuf(3)緩沖區(qū)(4)全局流對象(5)>>(stream_extractionoperator)(6)<<(stream_insertionoperator)9.1.3C++在類ios中定義了輸入輸出格式控制符,它是一個(1)。該類型中的每一個量相應(yīng)兩個字節(jié)數(shù)據(jù)的一位,每一個位代表一種控制,如要取多種控制時可用(2)運算符來合成,放在一個(3)訪問限制的(4)數(shù)中。所以這些格式控制符必須通過類ios的(5)來訪問。答案:(1)公有的無名的枚舉類型(2)或“|”(3)保護(4)一個長整型數(shù)(5)公共接口(函數(shù))9.1.4取代麻煩的流格式控制成員函數(shù),可采用(1),其中有參數(shù)的,必須規(guī)定包含(2)頭文獻(xiàn)。答案:(1)流操作子(2)iomanip9.1.5通常標(biāo)準(zhǔn)設(shè)備輸入指(1)。標(biāo)準(zhǔn)設(shè)備輸出指(2)。答案:(1)鍵盤(2)顯示屏9.1.6EOF為(1)標(biāo)志,在iostream.h中定義EOF為(2),在intget()函數(shù)中讀入表白輸入流結(jié)束標(biāo)志(3),函數(shù)返回(4)。答案:(1)文獻(xiàn)結(jié)束標(biāo)志(2)-1(3)^Z(Ctrl-Z)(4)EOF9.1.7C++根據(jù)文獻(xiàn)內(nèi)容的(1)可分為兩類(2)和(3),前者存取的最小信息單位為(4),后者為(5)。答案:(1)數(shù)據(jù)格式(2)文本文獻(xiàn)(3)二進制文獻(xiàn)(4)字符(5)字節(jié)9.1.8當(dāng)系統(tǒng)需要讀入數(shù)據(jù)時是從(1)文獻(xiàn)讀入,即(2)操作。而系統(tǒng)要寫數(shù)據(jù)時,是寫到(3)文獻(xiàn)中,即(4)操作。答案:(1)輸入(2)提?。?)輸出(4)插入9.1.9在面向?qū)ο蟮某绦蛟O(shè)計中,C++數(shù)據(jù)存入文獻(xiàn)稱作(1),而由文獻(xiàn)獲得數(shù)據(jù)稱作(2)。按常規(guī)前者往往放在(3)函數(shù)中,而后者放在(4)函數(shù)中。答案:(1)把對象存入文獻(xiàn)(2)由文獻(xiàn)重構(gòu)對象(3)析構(gòu)函數(shù)(4)構(gòu)造函數(shù)9.1.10文獻(xiàn)的讀寫可以是隨機的,意思是(1),也可以是順序的,意思是(2)或(3)。答案:(1)可以從文獻(xiàn)任何位置進行讀寫(2)從文獻(xiàn)頭開始(3)從尾部續(xù)上C++把每一個文獻(xiàn)都當(dāng)作一個(1)流,并以(2)結(jié)束。對文獻(xiàn)讀寫事實上受到(3)指針的控制,輸入流的指針也稱為(4),每一次提取從該指針?biāo)肝恢瞄_始。輸出流的指針也稱為(5),每一次插入也從該指針?biāo)肝恢瞄_始。每次操作后自動將指針向文獻(xiàn)尾移動。假如能任意向前向后移動該指針,則可實現(xiàn)(6)。答案:(1)有序的字節(jié)(2)文獻(xiàn)結(jié)束符(endoffilemarker)(3)文獻(xiàn)定位(4)讀指針(5)寫指針(6)隨機讀寫簡答題因cin為緩沖流,當(dāng)鍵盤一次輸入數(shù)據(jù)過多,保存在緩沖區(qū)中了,但這些數(shù)據(jù)也許是錯的,希望清空它,以便下一次規(guī)定輸入時,按提醒對的輸入,應(yīng)當(dāng)如何辦?答:只能讀空緩沖區(qū)。流狀態(tài)標(biāo)志字state各位代表了什么?如何使用?答:全0,goodbit=0x00,流正常第1位為1,eofbit=0x01,輸入流結(jié)束,忽略后繼提取操作;或文獻(xiàn)結(jié)束,已無數(shù)據(jù)可取第2位為1,failbit=0x02,最近的I/O操作失敗,流可恢復(fù)第3位為1,badbit=0x04,最近的I/O操作非法,流可恢復(fù)第4位為1,hardfail=0x08,I/O出現(xiàn)致命錯誤,流不可恢復(fù),VC++6.0不支持采用成員函數(shù)進行操作:intios::rdstate()const{returnstate;}//讀取狀態(tài)字intios:operator!()const{returnstate&(badbit|failbit);}//可用操作符!()代替fail()intios::bad(){returnstate&badbit;}//返回非法操作位voidios::clear(int_i){lock();state=_i;unlock();}//人工設(shè)立狀態(tài),可用來清狀態(tài)intios::eof()const{returnstate&eofbit;}//返回流(文獻(xiàn))結(jié)束位intios::fail()const{returnstate&(badbit|failbit);}//返回操作非法和操作失敗這兩位intios::good()const{returnstate==0;}//正常返回1,否則返回0為什么cin輸入時,空格和回車無法讀入?這時可改用哪些流成員函數(shù)?答:由于空格和回車都可以作為數(shù)據(jù)之間的分格符,當(dāng)輸入串時空格和回車無法讀入??筛挠胏in.get()和cin.getline()等流成員函數(shù)。在用cin輸入結(jié)束時鍵入^Z,則程序?qū)σ院蟮妮斎肴绾谓鉀Q?假如規(guī)定恢復(fù)正常,應(yīng)執(zhí)行什么成員函數(shù)?答:不再理睬以后的所有輸入??蓤?zhí)行成員函數(shù):cin.clear(0);使流恢復(fù)正常當(dāng)輸出字符串?dāng)?shù)組名時,輸出的是串內(nèi)容,有何辦法可以輸出串的首地址?答:將字符指針強制轉(zhuǎn)換為泛型指針可以輸出字符串地址文獻(xiàn)的使用,有它的固定格式,請做簡樸介紹。答:1.說明一個文獻(xiàn)流對象,又被稱為內(nèi)部文獻(xiàn),如:fstreamiofile;2.用文獻(xiàn)流對象的成員函數(shù)打開一個磁盤文獻(xiàn)。打開文獻(xiàn)的成員函數(shù)的第一個參數(shù)為要打開的磁盤文獻(xiàn)名。第二個參數(shù)為打開方式,有輸入(in),輸出(out)等,打開方式在ios基類中定義為枚舉類型。如:iofile.open(“myfile.txt”,ios::in|ios::out);1,2兩步可合成如下:fstreamiofile(”myfile.txt”,ios::in|ios::out);3.使用提取和插入運算符對文獻(xiàn)進行讀寫操作,或使用成員函數(shù)進行讀寫。4.關(guān)閉文獻(xiàn)。當(dāng)打開一個文獻(xiàn)進行讀寫后,應(yīng)當(dāng)顯式地關(guān)閉該文獻(xiàn)如:iofile.close();在ios類中定義的文獻(xiàn)打開方式中,公有枚舉類型open_mode的各成員代表什么文獻(xiàn)打開方式?答:in=0x01,//打開文獻(xiàn)用于輸入操作(從文獻(xiàn)讀取),如文獻(xiàn)不存在則返回失敗 out=0x02,//打開文獻(xiàn)用于輸出操作(寫入文獻(xiàn))(缺省方式)//如文獻(xiàn)存在,未同時設(shè)app,ate,in則文獻(xiàn)清空 ate=0x04, //打開文獻(xiàn)用于輸入/輸出,文獻(xiàn)指針在文獻(xiàn)尾,但新數(shù)據(jù)可寫到任何位置 app=0x08,//打開文獻(xiàn)用于輸出,但從尾部添加,新數(shù)據(jù)只能添加在尾部 trunce=0x10,//打開文獻(xiàn),并清空它,不存在則建立新文獻(xiàn) binary=0x80//以二進制方式打開文獻(xiàn)文本文獻(xiàn)可以按行也可以按字符進行拷貝,在使用中為保證完整地拷貝各要注意哪些問題?答:按字符進行拷貝一方面必須設(shè)立關(guān)閉跳過空白(如:iofile.unsetf(ios::skipws)),由于提取(“>>”)運算符在缺省情況下是跳過空白(涉及空格,制表,backspace和回車等)的,這樣拷貝的文獻(xiàn)會缺少一些字符。第二,該程序應(yīng)能擬定文獻(xiàn)是否拷貝結(jié)束。按行進行拷貝,getline()回車換行符并不放在buf中,因此要加一個回車換行符。對文獻(xiàn)流,“!”運算符完畢什么功能?答:返回狀態(tài)字state操作非法和操作失敗這兩位。二進制文獻(xiàn)讀函數(shù)read()能否知道文獻(xiàn)是否結(jié)束?應(yīng)如何判斷文獻(xiàn)結(jié)束?答:讀函數(shù)并不能知道文獻(xiàn)是否結(jié)束,可用狀態(tài)函數(shù)intios::eof()來判斷文獻(xiàn)是否結(jié)束。必須指出系統(tǒng)是根據(jù)當(dāng)前操作的實際情況設(shè)立狀態(tài)位,如需根據(jù)狀態(tài)位來判斷下一步的操作,必須在一次操作后立即去調(diào)取狀態(tài)位,以判斷本次操作是否有效。由二進制文獻(xiàn)和文本文獻(xiàn)來保存對象各有什么優(yōu)點和缺陷?答:使用二進制文獻(xiàn),可以控制字節(jié)長度,讀寫數(shù)據(jù)時不會出現(xiàn)二義性,可靠性高。同時不知格式是無法讀取的,保密性好。文獻(xiàn)結(jié)束后,系統(tǒng)不會再讀(見eofbit的說明),但程序不會自動停下來,所以要判斷文獻(xiàn)中是否已沒有數(shù)據(jù)。使用文本文獻(xiàn)來保存對象,操作簡樸,但誰都可以讀取這些數(shù)據(jù),無保密性。文獻(xiàn)的隨機訪問為什么總是用二進制文獻(xiàn),而不用文本文獻(xiàn)?答:在C++中可以由程序來實現(xiàn)文獻(xiàn)指針的移動,從而實現(xiàn)文獻(xiàn)的隨機訪問,即可讀寫流中任意一段內(nèi)容。一般文本文獻(xiàn)很難準(zhǔn)擬定位,所以隨機訪問多用于二進制文獻(xiàn)。如何使用istream和ostream的成員函數(shù)來實現(xiàn)隨機訪問文獻(xiàn)?答:在ios類中說明了一個公有枚舉類型:enumseek_dir{ beg=0,//文獻(xiàn)開頭 cur=1,//文獻(xiàn)指針的當(dāng)前位置 end=2//文獻(xiàn)結(jié)尾};istream類中提供了如下三個成員函數(shù):istream&istream::seekg(streampos);//指針直接定位istream&istream::seekg(streamoff,ios::seek_dir);//指針相對定位longistream::tellg();//返回當(dāng)前指針位置seekg(streamoff,ios::seek_dir)應(yīng)用最廣,如: datafile.seekg(-20L,ios::cur);表達(dá)將文獻(xiàn)定位指針從當(dāng)前位置向文獻(xiàn)頭部方向移20個字節(jié)。 datafile.seekg(20L,ios::beg);表達(dá)將文獻(xiàn)定位指針從文獻(xiàn)頭向文獻(xiàn)尾方向移20個字節(jié)。 datafile.seekg(-20L,ios::end);表達(dá)將文獻(xiàn)定位指針從文獻(xiàn)尾向文獻(xiàn)頭方向移20個字節(jié)。tellg()和seekg()往往配合使用。ostream類也提供了三個成員函數(shù)管理文獻(xiàn)定位指針,它們是:ostream&ostream::seekp(streampos);ostream&ostream::seekp(streamoff,ios::seek_dir);longostream::tellp();定位指針只有一個但函數(shù)有兩組,這兩組個函數(shù)功能完全同樣。編程與綜合練習(xí)題編程實現(xiàn)以下數(shù)據(jù)輸入輸出:以左對齊方式輸出整數(shù),域?qū)挒?2;以八進制、十進制、十六進制輸入輸出整數(shù);實現(xiàn)浮點數(shù)的指數(shù)格式和定點格式的輸入輸出,并指定精度;把字符串讀入字符型數(shù)組變量中,從鍵盤輸入,規(guī)定輸入串的空格也所有讀入,以回車換行符結(jié)束;以上規(guī)定用流成員函數(shù)和流操作子各做一遍。解:特別注意flags()和setf()的使用方法。注意注釋。#include<iostream>#include<iomanip>usingnamespacestd;intmain(void){ intinum1=255,inum2=8191,inum3=65535; doublefnum=31.,fnum1; charstr[255]; cout<<"以左對齊方式輸出整數(shù),域?qū)挒?2:"<<endl; cout.flags(ios::left); cout.width(12);cout<<inum1; cout.width(12);cout<<inum2; cout.width(12);cout<<inum3<<endl; cout.flags(ios::left|ios::oct|ios::showbase);//或(cout.flags()|ios::oct|ios::showbase) cout.width(12);cout<<inum1; cout.width(12);cout<<inum2; cout.width(12);cout<<inum3<<endl; cout.setf(ios::hex,ios::hex|ios::oct);//或cout.setf(ios::hex);cout.unsetf(ios::oct); //特別注意第二個參數(shù)要包含第一個參數(shù),否則兩個參數(shù)位置上的位全清零,結(jié)果錯 cout.width(12);cout<<inum1; cout.width(12);cout<<inum2; cout.width(12);cout<<inum3<<endl; cout.precision(10);//精度為10位,小數(shù)點后10位 cout.setf(ios::scientific,ios::floatfield);//floatfield為0x1800 cout<<"科學(xué)數(shù)表達(dá)方式:"<<fnum<<'\n'; cout.setf(ios::fixed,ios::floatfield);//設(shè)為定點,取消科學(xué)數(shù)方式 cout<<"定點表達(dá)方式:"<<fnum<<'\n'; cout<<"請輸入PI:"<<endl; cin.precision(4); cin>>fnum1;//輸入3. cout<<fnum1<<'\n';//由輸出看輸入精度無作用 cin.get();//吸取回車 cout<<"請輸入一個字符串:"<<endl; cin.getline(str,255); cout<<str<<endl; cout.flags(0); cout<<"以左對齊方式輸出整數(shù),域?qū)挒?2:"<<endl; cout<<left<<dec<<setw(12)<<inum1; cout<<setw(12)<<inum2; cout<<setw(12)<<inum3<<endl; cout<<showbase<<oct<<setw(12)<<inum1; cout<<setw(12)<<inum2; cout<<setw(12)<<inum3<<endl; cout<<hex<<setw(12)<<inum1; cout<<setw(12)<<inum2; cout<<setw(12)<<inum3<<endl; cout<<setprecision(10)<<scientific<<"科學(xué)數(shù)表達(dá)方式:"<<fnum<<'\n'; cout<<fixed<<"定點表達(dá)方式:"<<fnum<<'\n';//精度10位,指小數(shù)點后10位 return0;}修改【例9.3】,增長一個字符串輸入后規(guī)定確認(rèn),以保證輸入的字符串(如姓名、地址等)無誤。解:#include<iostream>usingnamespacestd;intmain(void){ charch,str[255]; do{ cout<<"請輸入一個字符串:"<<endl; cin.getline(str,255); cout<<str<<endl; cout<<"輸入對的嗎?YorN"<<endl; cin>>ch; cin.get();//吸取輸入YorN時留下的回車 }while(!(ch=='Y'||ch=='y')); cout<<"輸入對的:"<<endl; cout<<str<<endl; return0;}重載學(xué)生類的“<<”和“>>”運算符。#include<fstream>#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classstudent{ intid;//學(xué)號 stringname;//姓名 charsex;//性別 intage;//年齡 stringaddress;//家庭地址 floateng,phy,math,electron;//英語,物理,數(shù)學(xué)和電子學(xué)成績public: student(int=0,string="#",char='#',int=0,string="#",float=0,float=0,float=0,float=0); friendostream&operator<<(ostream&dest,student&st);//重載插入運算符 friendistream&operator>>(istream&sour,student&st);//重載提取運算符};//流類作為形式參數(shù)必須是引用student::student(inti,stringn,chars,inta,stringadd,floaten,floatph,floatma,floatele){ id=i; name=n; sex=s; age=a; address=add; eng=en;phy=ph;math=ma;electron=ele;}ostream&operator<<(ostream&dest,student&st){//重載插入運算符 dest<<st.id<<'\t'<<<<'\t'<<st.sex<<'\t'<<st.age<<'\t'<<st.address<<'\t' <<st.eng<<'\t'<<st.phy<<'\t'<<st.math<<'\t'<<st.electron<<endl; returndest;}istream&operator>>(istream&sour,student&st){//重載提取運算符 cout<<"請輸入學(xué)號:"<<endl; sour>>st.id; cout<<"請輸入姓名:"<<endl; sour>>; cout<<"請輸入性別:"<<endl; sour>>st.sex; cout<<"請輸入年齡:"<<endl; sour>>st.age; cout<<"請輸入地址:"<<endl; sour>>st.address; cout<<"請輸入英語、物理、數(shù)學(xué)、電子各科成績:"<<endl; sour>>st.eng>>st.phy>>st.math>>st.electron; returnsour;}intmain(){ studentst1,st2(2104105,"陳英",'m',19,"黃山路380號",89,78,90,96); cin>>st1; cout<<st1<<st2; return0;}發(fā)揮你的想象力,重載復(fù)數(shù)的“>>”運算符,對所有也許的錯誤都能規(guī)定重輸。解:#include<iostream>usingnamespacestd;classComplex{ doubleReal,Image;public: Complex(doubler=0.0,doublei=0.0):Real(r),Image(i){};//定義構(gòu)造函數(shù) //見【例5.7】,這里省略,以節(jié)約篇幅 friendostream&operator<<(ostream&s,constComplex&z); friendistream&operator>>(istream&s,Complex&a);};//流類作為形式參數(shù)必須是引用ostream&operator<<(ostream&s,constComplex&z){ returns<<'('<<z.Real<<','<<z.Image<<')';}istream&operator>>(istream&s,Complex&a){//格式為r;r,i;(r);(r,i);整個復(fù)數(shù)輸完才可回車 //容錯強,如:sd(fr56cv,s79nml,45)i,78回車可對的判讀為(56,79) doublere=0,im=0; charc=0; do{ s>>c; }while(c!='('&&c!='.'&&!(c>='0'&&c<='9'));//讀空括號或數(shù)字前的無用字符 if(c=='('){ do{ s>>c; }while(c!='.'&&!(c>='0'&&c<='9'));//讀空數(shù)字串前的無用字符 s.putback(c);//返回一個字符到輸入緩沖區(qū) s>>re;//實部 do{ s.get(c);//由于也許是回車 }while(c!='\n'&&c!=')'&&c!=',');//讀空數(shù)字串后的無用字符 if(c==','){ do{//只讀數(shù)字串 s>>c; }while(c!='.'&&!(c>='0'&&c<='9')); s.putback(c); s>>im;//虛部 do{ s.get(c);//由于也許是回車 }while(c!='\n'&&c!=')');//讀空數(shù)字串后的無用字符 } elseim=0;//無此步,第二次賦值犯錯 if(c!=')')s.clear(ios::failbit);//漏了括號給一個操作失敗標(biāo)志 } else{ s.putback(c);//無括號,返回一個字符到輸入緩沖區(qū) s>>re;//實部 do{ s.get(c);//由于也許是回車 }while(c!='\n'&&c!=',');//讀空數(shù)字串后的無用字符 if(c==','){ do{//只讀數(shù)字串 s>>c; }while(c!='.'&&!(c>='0'&&c<='9')); s.putback(c); s>>im;//虛部 do{ s.get(c);//由于也許是回車 }while(c!='\n');//讀空數(shù)字串后的無用字符 } elseim=0;//無此步,第二次賦值犯錯 } if(s)a=Complex(re,im); returns;}intmain(){ Complexa,b,c,d; cout<<"輸入一個實數(shù)"<<endl; cin>>a; cout<<"輸入一個復(fù)數(shù)"<<endl; cin>>b; cout<<"輸入一個用括號括起來的實數(shù)"<<endl; cin>>c; cout<<"輸入一個用括號括起來復(fù)數(shù)"<<endl; cin>>d; cout<<"a="<<a<<'\t'<<"b="<<b<<'\t'<<"c="<<c<<'\t'<<"d="<<d<<'\n'; return0;}以文本方式把一個文本文獻(xiàn)(如C++源文獻(xiàn))的前十行拷貝到一個新的文獻(xiàn)中。解:注意只能用于純文本文獻(xiàn),如用于word文獻(xiàn)則失敗。word文檔構(gòu)造前面有一大堆說明,按文本讀必然失敗。第二,用傳統(tǒng)的運營庫,按行讀有也許丟失一些回車,而用新的標(biāo)準(zhǔn)庫則解決了這個問題。用VC++標(biāo)準(zhǔn)庫函數(shù),即用頭文獻(xiàn)iostream時,假如函數(shù)未能讀到結(jié)束字符而停止,流犯錯(輸入輸出操作失?。?,后面不再讀入,必須清0流狀態(tài)字,才干繼續(xù)讀入。一行字符分幾次讀完,本來有也許無法判斷是讀到結(jié)束字符結(jié)束還是讀到指定字符結(jié)束,現(xiàn)在可以判斷了:假如流正常,則讀到了結(jié)束字符。#include<fstream>#include<iostream>//<fstream.h>不包含<iostream.h>#include<cstdlib>usingnamespacestd;intmain(){ intline=0; charfilename[256],buf[256]; fstreamsfile,dfile; cout<<"輸入源文獻(xiàn)途徑名:"<<endl;//請用s.txt,如用s.doc(word文檔)則失敗 cin>>filename;//對途徑各方面而言空格是無關(guān)緊要的,否則要用getline()等成員函數(shù) sfile.open(filename,ios::in);//打開一個已存在的文獻(xiàn) while(!sfile){ cout<<"源文獻(xiàn)找不到,請重新輸入途徑名:"<<endl; sfile.clear(0);//犯錯后,狀態(tài)必須清0 cin>>filename; sfile.open(filename,ios::in); } cout<<"輸入目的文獻(xiàn)途徑名:"<<endl;//請用d.txt cin>>filename;//只能創(chuàng)建文獻(xiàn),不能建立子目錄,如途徑不存在則失敗 dfile.open(filename,ios::out); if(!dfile){ cout<<"目的文獻(xiàn)創(chuàng)建失敗"<<endl; return1; } while(sfile.getline(buf,256),sfile.eof()!=1&&line<10){//按行拷貝A行 if(sfile.rdstate()==0){ dfile<<buf<<'\n';//因流正常,讀到回車符,但未提取B行 line++; } else{ dfile<<buf;//流不正常,尚未讀到回車換行符,所以不加'\n' sfile.clear();//狀態(tài)字被置為0x02,必須清0 } } sfile.close(); dfile.close(); return0;}用二進制方式,把一個文獻(xiàn)連接到另一個文獻(xiàn)的尾部,選擇適當(dāng)?shù)奈墨I(xiàn)打開方式完畢。解:注意連接只能用于純文本文獻(xiàn),如用于word文獻(xiàn)則失敗。假如用word文檔,則可見目的文檔大小在翻倍,但只能讀最前面一段。由于word文檔構(gòu)造前面有一大堆說明,真正連接時,后面的源文獻(xiàn)前面的說明要去掉,但這做不到。#include<fstream>#include<iostream>#include<cstdlib>usingnamespacestd;intmain(){ intn; charfilename[256],buf[100]; fstreamsfile,dfile; cout<<"輸入源文獻(xiàn)途徑名:"<<endl;//請用s.txt cin>>filename;//對途徑各方面而言空格是無關(guān)緊要的,否則要用getline()等成員函數(shù) sfile.open(filename,ios::in|ios::binary);//打開一個已存在的二進制文獻(xiàn) while(!sfile){ cout<<"源文獻(xiàn)找不到,請重新輸入途徑名:"<<endl; sfile.clear(0);//犯錯后,狀態(tài)必須清0 cin>>filename; sfile.open(filename,ios::in|ios::binary); } cout<<"輸入目的文獻(xiàn)途徑名:"<<endl;//請用d.txt,s.txt接于其后;用源文獻(xiàn),會死循環(huán)(A行) cin>>filename;//只能創(chuàng)建文獻(xiàn),不能建立子目錄,如途徑不存在則失敗 dfile.open(filename,ios::app|ios::out|ios::binary);//文獻(xiàn)指針在尾部 if(!dfile){ cout<<"目的文獻(xiàn)創(chuàng)建失敗"<<endl; return1; } while(!sfile.eof()){//二進制方式需另判文獻(xiàn)是否結(jié)束A sfile.read(buf,100); n=sfile.gcount(); dfile.write(buf,n);//按實際讀取字節(jié)數(shù)寫 } sfile.close(); dfile.close(); return0;}同上題,采用重新定位文獻(xiàn)指針方式來實現(xiàn)(隨機訪問方式)。解:同樣連接只能用于純文本文獻(xiàn),如用于word文獻(xiàn)則失敗。假如用word文檔,則可見目的文檔大小在翻倍,但只能讀最前面一段。由于word文檔構(gòu)造前面有一大堆說明,真正鏈接時,后面的源文獻(xiàn)前面的說明要去掉,但這做不到。#include<fstream>#include<iostream>#include<cstdlib>usingnamespacestd;intmain(){ intn; charfilename[256],buf[100]; fstreamsfile,dfile; cout<<"輸入源文獻(xiàn)途徑名:"<<endl;//請用s.txt cin>>filename;//對途徑各方面而言空格是無關(guān)緊要的,否則要用getline()等成員函數(shù) sfile.open(filename,ios::in|ios::binary);//打開一個已存在的二進制文獻(xiàn) while(!sfile){ cout<<"源文獻(xiàn)找不到,請重新輸入途徑名:"<<endl; sfile.clear(0);//犯錯后,狀態(tài)必須清0 cin>>filename; sfile.open(filename,ios::in|ios::binary); } cout<<"輸入目的文獻(xiàn)途徑名:"<<endl;//請用d.txt,s.txt接于其后;用源文獻(xiàn),會死循環(huán)(A行) cin>>filename;//只能創(chuàng)建文獻(xiàn),不能建立子目錄,如途徑不存在則失敗 dfile.open(filename,ios::in|ios::out|ios::binary);//打開輸入輸出文獻(xiàn) if(!dfile){ dfile.clear(0); dfile.open(filename,ios::out);//建立輸出文獻(xiàn) dfile.close(); dfile.open(filename,ios::in|ios::out|ios::binary);//改為輸入輸出文獻(xiàn) } dfile.seekp(0,ios::end);//寫指針重定位到文獻(xiàn)尾,seekp和seekg是同一個文獻(xiàn)指針 while(!sfile.eof()){//二進制方式需另判文獻(xiàn)是否結(jié)束A sfile.read(buf,100); n=sfile.gcount(); dfile.write(buf,n);//按實際讀取字節(jié)數(shù)寫 } sfile.close(); dfile.close(); return0;}采用篩選法求100以內(nèi)的所有素數(shù)(參見【例3.16】)。將所得數(shù)據(jù)存入文本文獻(xiàn)和二進制文獻(xiàn)。對送入文本文獻(xiàn)中的素數(shù),規(guī)定存放格式是每行10個素數(shù),每個數(shù)占6個字符,左對齊;可用任一文本編輯器將它打開閱讀。二進制文獻(xiàn)整型數(shù)的長度請用sizeof()來獲得,規(guī)定可以正序讀出,也可以逆序讀出(運用文獻(xiàn)定位指針移動實現(xiàn)),讀出數(shù)據(jù)按文本文獻(xiàn)中的格式輸出顯示。解:前半題文本文獻(xiàn)與習(xí)題3.17相同,只是那里是右對齊,這里只新做了二進制文獻(xiàn)。注意逆序輸出前,試讀看有多少數(shù)據(jù)時,一旦讀到文獻(xiàn)結(jié)束,eofbit=1,不清0,后面操作不能進行。#include<fstream.h>#include<iomanip.h>#include<math.h>constintn=100;voidmain(){ ofstreamofile; ifstreamifile; inta[n],i,j; charch,b[256]; for(i=0;i<n;i++)a[i]=1+i; //用數(shù)組保存整數(shù)1-100 a[0]=0; //1不是素數(shù),置0 for(i=0;i<n;i++){ if(a[i]==0)continue; //該數(shù)已經(jīng)置0,判斷下一個數(shù) for(j=i+1;j<n;j++)if(a[j]%a[i]==0)a[j]=0; //是a[i]倍數(shù)的元素置0; } ofile.open("myfile9_9.txt"); intcount=0; ofile.flags(ios::left); ofile<<"1-"<<n<<"之間的素數(shù):"<<endl; for(i=0;i<n;i++) //輸出所有素數(shù) if(a[i]!=0){ ofile<<setw(6)<<a[i]; count++; if(count%10==0)ofile<<endl; //每行10個數(shù)據(jù) } ofile.close(); cout<<"是否要將文本文獻(xiàn)輸出?Y或N"<<endl; cin>>ch; if(ch=='y'||ch=='Y'){ ifile.open("myfile9_9.txt"); i=0; while(ifile.get(b[i])){//讀標(biāo)題,不可用>>,它不能讀白字符, if(b[i]=='\n')break; i++; } b[i]='\0'; cout.flags(ios::left); cout<<b<<endl; count=0; while(1){ ifile>>i;//由文獻(xiàn)讀入 if(ifile.eof()!=0)break; cout<<setw(6)<<i;//屏幕顯示 count++; if(count%10==0)cout<<endl; //每行10個數(shù) } ifile.close(); cout<<endl; } ofile.open("myfile9_9.dat",ios::out|ios::binary); for(i=0;i<n;i++) //輸出所有素數(shù) if(a[i]!=0){ ofile.write((char*)&a[i],sizeof(int)); } ofile.close(); cout<<"是否要將二進制文獻(xiàn)輸出?Y或N"<<endl; cin>>ch; if(ch=='y'||ch=='Y'){ count=0; ifile.open("myfile9_9.dat",ios::in|ios::binary); while(1){ ifile.read((char*)&i,sizeof(int)); if(ifile.eof()!=0)break; cout<<setw(6)<<i;//屏幕顯示 count++; if(count%10==0)cout<<endl; } ifile.close(); cout<<endl; } cout<<"是否要將二進制文獻(xiàn)逆序輸出?Y或N"<<endl; cin>>ch; if(ch=='y'||ch=='Y'){ count=0; ifile.open("myfile9_9.dat",ios::in|ios::binary); while(1){ ifile.read((char*)&i,sizeof(int)); if(ifile.eof()!=0)break; count++; } ifile.clear(0);//當(dāng)文獻(xiàn)讀完時,eofbit=1,不清0,后面的操作不能進行 ifile.seekg(-4,ios::end); for(j=1;j<=count;j++){ ifile.read((char*)&i,sizeof(int)); cout<<setw(6)<<i;//屏幕顯示 if(j%10==0)cout<<endl; ifile.seekg(-8,ios::cur); } ifile.close(); cout<<endl; }}正弦函數(shù)在0o~90o的范圍中是單調(diào)遞增的,建立兩個文獻(xiàn):一個放sin0o,sin2o,…,sin80o;另一個放sin1o,sin3o,…,sin79o,sin81o,sin82o,…,sin90o,用歸并法,把這兩個數(shù)據(jù)文獻(xiàn)合并為升序排序的文獻(xiàn),重組為一個完整的sin()函數(shù)表文獻(xiàn)。解:題解中注釋掉的直接讀寫法與使用成員函數(shù)結(jié)果完全相同,對于類對象,讀和寫及占據(jù)內(nèi)存大小均指數(shù)據(jù)成員。主函數(shù)中要避免第2次運營時表中出現(xiàn)反復(fù)數(shù)據(jù)。#include<cmath>#include<fstream>#include<iostream>#include<iomanip>usingnamespacestd;classsinx{ doubleDegree;//角度 doubleValue;//正弦值public: sinx(double=0); voiddisplay(); voidBdatatofile(fstream&);//文獻(xiàn)流類作為形式參數(shù)必須是引用 voidBdatafromfile(fstream&); voiddatainput(doubledeg); booloperator<=(sinx&); booloperator==(sinx&);};boolsinx::operator<=(sinx&si){ doublek; k=Degree-si.Degree; if(k<=0)returntrue; elsereturnfalse;}boolsinx::operator==(sinx&si){ doublek; k=Degree-si.Degree; if(k==0)returntrue; elsereturnfalse;}sinx::sinx(doubledeg){ Degree=deg; Value=sin(deg*3./180);}voidsinx::display(){ cout<<setw(10)<<Degree<<setw(10)<<Value<<endl;}voidsinx::datainput(doubledeg){ Degree=deg; Value=sin(deg*3./180);}voidsinx::Bdatatofile(fstream&dest){ dest.write((char*)&Degree,sizeof(double)); dest.write((char*)&Value,sizeof(double));}voidsinx::Bdatafromfile(fstream&sour){ sour.read((char*)&Degree,sizeof(double)); sour.read((char*)&Value,sizeof(double));}//由此可見讀和寫是完全對稱的過程,順序決不能錯template<typenameT>classArray{ T*elements; charname[20]; intSubscript;//已用最大下標(biāo)值 intmaxSize; fstreamdatafile;public: Array(char*="myfile",int=20); ~Array(); boolIsFull()const{returnSubscript==maxSize-1;} voidrenews();//數(shù)組擴大一倍 voidordinsert(T&);//升序輸入 voidlistshow();//顯示數(shù)組};template<typenameT>Array<T>::Array(char*filename,intmaxs){ maxSize=maxs; Subscript=-1;//私有數(shù)據(jù)不允許直接賦初值,必須在構(gòu)造函數(shù)中賦初值 strcpy(name,filename); Ttemp; elements=newT[maxSize]; datafile.open(name,ios::binary|ios::in); if(!datafile==0){ while(!datafile.eof()){ temp.Bdatafromfile(datafile); // datafile.read((char*)&temp,sizeof(T));//直接讀寫法與使用成員函數(shù)結(jié)果相同 if(datafile.eof()==0){//讀到無數(shù)據(jù)可讀后,即讀入不成功,eofbit為1 ordinsert(temp); } } datafile.close(); } datafile.clear(0);//采用標(biāo)準(zhǔn)庫不可少,前面讀到過文獻(xiàn)結(jié)束或打開文獻(xiàn)失敗,無法恢復(fù)}template<typenameT>Array<T>::~Array(){ inti; datafile.open(name,ios::binary|ios::out); for(i=0;i<=Subscript;i++) elements[i].Bdatatofile(datafile);// datafile.write((char*)&elements[i],sizeof(T));//直接讀寫法與使用成員函數(shù)結(jié)果相同 datafile.close(); delete[]elements;}template<typenameT>voidArray<T>::renews(){ inti; T*temp=elements; maxSize*=2; elements=newT[maxSize]; for(i=0;i<=Subscript;i++)elements[i]=temp[i]; delete[]temp;}template<typenameT>voidArray<T>::ordinsert(T&elem){//以角度為關(guān)鍵字排序 inti,j; if(IsFull())renews(); for(i=0;i<=Subscript;i++)if(elem<=elements[i])break; if(!(elem==elements[i])){ for(j=Subscript;j>=i;j--)elements[j+1]=elements[j]; Subscript++; } if(Subscript==-1)Subscript++;//考慮到進入的第一項 elements[i]=elem;}template<typenameT>voidArray<T>::listshow(){ inti; for(i=0;i<=Subscript;i++)elements[i].display();}//兩個文獻(xiàn)歸并用獨立的函數(shù)模板template<typenameT>voidMerge(char*filename1,char*filename2,char*filename){ fstreamsdatafile1(filename1,ios::out|ios::in|ios::binary); fstreamsdatafile2(filename2,ios::out|ios::in|ios::binary); fstreamddatafile(filename,ios::out|ios::binary); inti=0,j=0,k=0,ns1,ns2; Ttemps1,temps2; while(sdatafile1.eof()==0){//側(cè)元素數(shù)量,注意會多余一個 sdatafile1.read((char*)&temps1,sizeof(T)); i++; } ns1=i-1; cout<<"表1元素數(shù)"<<ns1<<endl; while(sdatafile2.eof()==0){ sdatafile2.read((char*)&temps2,sizeof(T)); j++; } ns2=j-1; cout<<"表2元素數(shù)"<<ns2<<endl; sdatafile1.clear(0);//用隨機方式,一旦用順序文獻(xiàn)方式訪問到結(jié)束,就必須清狀態(tài) sdatafile2.clear(0);i=0; j=0; sdatafile1.seekg(0,ios::beg); sdatafile2.seekg(0,ios::beg);// sdatafile1.read((char*)&temps1,sizeof(T));//此方法與用成員函數(shù)完全相同// sdatafile2.read((char*)&temps2,sizeof(T));//對于類對象,讀和寫及大小均僅指數(shù)據(jù)成員 temps1.Bdatafromfile(sdatafile1); temps2.Bdatafromfile(sdatafile2); while(i<ns1&&j<ns2){ if(temps1<=temps2){// ddatafile.write((char*)&temps1,sizeof(T));// sdatafile1.read((char*)&temps1,sizeof(T)); temps1.Bdatatofile(ddatafile); temps1.Bdatafromfile(sdatafile1); i++; } else{// ddatafile.write((char*)&temps2,sizeof(T));//對象讀和寫及大小均僅指數(shù)據(jù)成員// sdatafile2.read((char*)&temps2,sizeof(T));//此方法與用成員函數(shù)完全相同 temps2.Bdatatofile(ddatafile); temps2.Bdatafromfile(sdatafile2); j++; } } while(i<ns1){//復(fù)制第一個表的剩余元素// ddatafile.write((char*)&temps1,sizeof(T));// sdatafile1.read((char*)&temps1,sizeof(T)); temps1.Bdatatofile(ddatafile); temps1.Bdatafromfile(sdatafile1); i++; } while(j<ns2){//復(fù)制第二個表的剩余元素// ddatafile.write((char*)&temps2,sizeof(T));// sdatafile2.read((char*)&temps2,sizeof(T)); temps2.Bdatatofile(ddatafile); temps2.Bdatafromfile(sdatafile2); j++; } sdatafile1.close(); sdatafile2.close(); ddatafile.close();} intmain(){ sinxtemp; inti; {//兩個正弦表分別在兩個塊域中定義,域結(jié)束時對象存入文獻(xiàn) Array<sinx>mylist("mydata1"); cout<<"建立正弦表1(0,2,4,~80度)"<<endl; for(i=0;i<=80;i=i+2){ temp.datainput(i); mylist.ordinsert(temp);//除排序外,同時保證二次進入時不會有反復(fù)的表項 } mylist.listshow(); } { Array<sinx>mylist("mydata2");cout<<"建立正弦表2(1,3,5,~81度;82,83,~90)"<<endl; for(i=82;i<=90;i++){ temp.datainput(i); mylist.ordinsert(temp); } for(i=1;i<=81;i=i+2){//注意較小的數(shù)后入 temp.datainput(i); mylist.ordinsert(temp); } mylist.listshow(); } Merge<sinx>("mydata1","mydata2","mydata");//按題意規(guī)定兩個文獻(xiàn)歸并直接使用文獻(xiàn) Array<sinx>mylist("mydata"); cout<<"輸出正弦表(0,1,~90度)"<<endl; mylist.listshow(); return0;} 解2:本例未用鏈表類,但用函數(shù)模板。題解中使用的直接讀寫法與成員函數(shù)結(jié)果完全相同,對于類對象,讀和寫及占據(jù)內(nèi)存大小均指數(shù)據(jù)成員。#include<cmath>#include<fstream>#include<iostream>#include<iomanip>usingnamespacestd;classsinx{ doubleDegree;//角度 doubleValue;//正弦值public: sinx(double=0); voiddisplay(); voiddatainput(doubledeg); booloperator<=(sinx&); booloperator==(sinx&);};boolsinx::operator<=(sinx&si){ doublek; k=Degree-si.Degree; if(k<=0)returntrue; elsereturnfalse;}boolsinx::operator==(sinx&si){ doublek; k=Degree-si.Degree; if(k==0)returntrue; elsereturnfalse;}sinx::sinx(doubledeg){ Degree=deg; Value=sin(deg*3./180);}voidsinx::display(){ cout<<setw(10)<<Degree<<setw(10)<<Value<<endl;}voidsinx::datainput(doubledeg){ Degree=deg; Value=sin(deg*3./180);}template<typenameT>voidlistshow(T*elements,intsubsc){ inti; for(i=0;i<=subsc;i++)elements[i].display();}template<typenameT>voidordinsert(T&elem,T*elements,intsubsc){//以角度為關(guān)鍵字排序 inti,j; for(i=0;i<=subsc-1;i++)if(elem<=elements[i])break; if(!(elem==elements[i])){ for(j=subsc-1;j>=i;j--)elements[j+1]=elements[j]; } elements[i]=elem;}template<typenameT>intreadfile(char*filename,T*elements){//文獻(xiàn)寫入鏈表,返回最大下標(biāo) intk=-1; Ttemp; ifstreamdatafile; datafile.open(filename,ios::binary|ios::in); while(!datafile.eof()){ datafile.read((char*)&temp,sizeof(T));if(datafile.eof()==0){//讀到無數(shù)據(jù)可讀后,即讀入不成功,eofbit為1 k++; ordinsert(temp,elements,k); } } datafile.close(); returnk;}template<typenameT>voidwritefile(char*filename,T*elements,intsubsc){ inti; ofstreamdatafile; datafile.open(filename,ios::binary|ios::out); for(i=0;i<=subsc;i++) datafile.write((char*)&elements[i],sizeof(T)); datafile.close();}//兩個文獻(xiàn)歸并用獨立的函數(shù)模板template<typenameT>voidMerge(char*filename1,char*filename2,char*filename){ fstreamsdatafile1(filename1,ios::out|ios::in|ios::binary); fstreamsdatafile2(filename2,ios::out|ios::in|ios::binary); fstreamddatafile(filename,ios::out|ios::binary); inti=0,j=0,k=0,ns1,ns2; Ttemps1,temps2; while(sdatafile1.eof()==0){//求文獻(xiàn)所含數(shù)據(jù)數(shù)量 sdatafile1.read((char*)&temps1,sizeof(T)); i++; } ns1=i-1; while(sdatafile2.eof()==0){ sdatafile2.read((char*)&temps2,sizeof(T)); j++; } ns2=j-1; sdatafile1.clear(0); sdatafile2.clear(0);i=0; j=0; sdatafile1.seekg(0,ios::beg); sdatafile2.seekg(0,ios::beg); sdatafile1.read((char*)&temps1,sizeof(T));//此方法與用成員函數(shù)完全相同 sdatafile2.read((char*)&temps2,sizeof(T));//對于類對象,讀和寫及大小均僅指數(shù)據(jù)成員 while(i<ns1&&j<ns2){ if(temps1<=temps2){ ddatafile.write((char*)&temps1,sizeof(T)); sdatafile1.read((char*)&temps1,sizeof(T)); i++; } else{ ddatafile.write((char*)&temps2,sizeof(T));//對象讀和寫及大小均僅指數(shù)據(jù)成員 sdatafile2.read((char*)&temps2,sizeof(T));//此方法與用成員函數(shù)完全相同 j++; } } while(i<ns1){//復(fù)制第一個表的剩余元素 ddatafile.write((char*)&temps1,sizeof(T)); sdatafile1.read((char*)&temps1,sizeof(T)); i++; } while(j<ns2){//復(fù)制第二個表的剩余元素 ddatafile.write((char*)&temps2,sizeof(T)); sdatafile2.read((char*)&temps2,sizeof(T)); j++; } sdatafile1.close(); sdatafile2.close(); ddatafile.close();}intmain(){ sinxtemp,list1[100],list2[100],list[100]; inti,k1,k2,k3; cout<<"建立正弦表1(0,2,4,~80度)"<<endl; k1=-1; for(i=0;i<=80;i=i+2){ temp.datainput(i); k1++; ordinsert(temp,list1,k1);//除排序外,同時保證二次進入時不會有反復(fù)的表項 } writefile("mydata1",list1,k1); temp.datainput(0); for(i=0;i<=k1;i++)list1[i]=temp;//數(shù)組清空,以便檢查文獻(xiàn) k1=readfile("mydata1",list1);//由文獻(xiàn)重新寫入數(shù)組 listshow(list1,k1); cout<<"建立正弦表2(1,3,5,~81度;82,83,~90度)"<<endl; k2=-1; for(i=82;i<=90;i++){ temp.datainput(i); k2++; ordinsert(temp,list2,k2); } for(i=1;i<=81;i=i+2){ temp.datainput(i); k2++; ordinsert(temp,list2,k2);//除排序外,同時保證二次進入時不會有反復(fù)的表項 } writefile("mydata2",list2,k2); temp.datainput(0); for(i=0;i<=k2;i++)list2[i]=temp;//數(shù)組清空,以便檢查文獻(xiàn) k2=readfile("mydata2",list2);//由文獻(xiàn)重新寫入數(shù)組 listshow(list2,k2);Merge<sinx>("mydata1","mydata2","mydata");//按題意規(guī)定兩個文獻(xiàn)歸并直接使用文獻(xiàn) cout<<"輸出正弦表(0,1,~90度)"<<endl; k3=readfile("mydata",list);//由文獻(xiàn)重新寫入數(shù)組 listshow(list,k3); return0;}將學(xué)校里的學(xué)生,定義為一個學(xué)生數(shù)組類,數(shù)組對象動態(tài)建立,初始為3個元素,不夠用時擴充一倍。規(guī)定放在構(gòu)造函數(shù)中用二進制數(shù)據(jù)文獻(xiàn)建立數(shù)組元素對象,在析構(gòu)函數(shù)中保存數(shù)據(jù)和關(guān)閉文獻(xiàn)。第一次運營時,建立空的數(shù)據(jù)文獻(xiàn),由鍵盤輸入建立數(shù)組元素對象,并寫入文獻(xiàn),程序退出時,關(guān)閉文獻(xiàn);下一次運營時就可以由文獻(xiàn)構(gòu)造對象,恢復(fù)前一次做過的工作。解:#include<fstream>#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classstudent{ intid;//學(xué)號 stringname;//姓名 charsex;//性別 intage;//年齡 stringaddress;//家庭地址 floateng,phy,math,electron;//英語,物理,數(shù)學(xué)和電子學(xué)成績public: student(int=0,string="#",char='#',int=0,string="#",float=0,float=0,float=0,float=0); voidBdatatofile(fstream&dest);//數(shù)據(jù)寫入文獻(xiàn)流類 voidBdatafromfile(fstream&sour);//由文獻(xiàn)流類讀出數(shù)據(jù) booloperator<=(student&ele){returnid<=ele.id;} booloperator==(student&ele){returnid==ele.id;} friendostream&operator<<(ostream&dest,student&st);//重載插入運算符 friendistream&operator>>(istream&sour,student&st);//重載提取運算符};student::student(inti,stringn,chars,inta,stringadd,floaten,floatph,floatma,floatele){ id=i; name=n; sex=s; age=a; address=add; eng=en;phy=ph;math=ma;electron=ele;}voidstudent::Bdatatofile(fstream&dest){//文獻(xiàn)流類作為形式參數(shù)必須是引用 dest.write((char*)&id,sizeof(int)); dest.write(name.c_str(),20);//由string類的c_str()函數(shù)轉(zhuǎn)為char* dest.write((char*)&sex,sizeof(char)); dest.write((char*)&age,sizeof(int)); dest.write(address.c_str(),20);//由string類的c_str()函數(shù)轉(zhuǎn)為char* dest.write((char*)&eng,sizeof(float)); dest.write((char*)&phy,sizeof(float)); dest.write((char*)&math,sizeof(float)); dest.write((char*)&electron,sizeof(float));}voidstudent::Bdatafromfile(fstream&sour){//文獻(xiàn)流類作為形式參數(shù)必須是引用 charDesc[20]; sour.read((char*)&id,si
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人保險理賠授權(quán)委托書
- 單次包車合同范本
- 口罩委托采購合同范本
- 獸藥代理合同范本
- 世界水日活動策劃方案
- 下學(xué)期幼兒教師的個人總結(jié)
- 推拿治療學(xué)模擬題+答案
- 別墅建設(shè)合同范本
- 勞務(wù)合同補充合同范本
- 發(fā)光字安裝合同范本
- 火鍋店運營管理的問題與解決方案
- 【正版授權(quán)】 ISO 724:2023 EN ISO general purpose metric screw threads - Basic dimensions
- CJJ2-2008城市橋梁工程施工與質(zhì)量驗收規(guī)范
- 新媒體營銷:營銷方式+推廣技巧+案例實訓(xùn) 微課版 第2版 教學(xué)大綱
- 基于街區(qū)尺度的精細(xì)化大氣污染溯源模型建設(shè)需求
- 德育教育研究課題申報書
- 2024年岳陽職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫匯編
- (高清版)JTG 3810-2017 公路工程建設(shè)項目造價文件管理導(dǎo)則
- 《ISO31000:2024風(fēng)險管理指南》指導(dǎo)手冊(雷澤佳譯2024-04)
- 2024年甘肅省公務(wù)員公共基礎(chǔ)知識重點考試題庫(含答案)
- 《拒絕校園欺凌 防霸凌主題班會》課件
評論
0/150
提交評論