




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 實(shí)驗(yàn)四 輸入輸出流實(shí)驗(yàn)課程名:面向?qū)ο蟪绦蛟O(shè)計(jì)(C+)專業(yè)班級(jí): 學(xué)號(hào): 姓名: 實(shí)驗(yàn)時(shí)間: 實(shí)驗(yàn)地點(diǎn): 指導(dǎo)教師: 一、實(shí)驗(yàn)?zāi)康暮鸵?1) 理解類和對(duì)象的概念,掌握聲明類和定義對(duì)象的方法。(2) 掌握構(gòu)造函數(shù)和析構(gòu)函數(shù)的實(shí)現(xiàn)方法。(3) 初步掌握使用類和對(duì)象編制C+程序。(4) 掌握對(duì)象數(shù)組、對(duì)象指針和string類的使用方法。(5) 掌握使用對(duì)象、對(duì)象指針和對(duì)象引用作為函數(shù)參數(shù)的方法。(6) 掌握類對(duì)象作為成員的使用方法。(7) 掌握靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的使用方法。(8) 理解友元的概念和掌握友元的使用方法。二、實(shí)驗(yàn)內(nèi)容1定義描述職工工資的類Laborage,數(shù)據(jù)成員為職工號(hào)(N
2、o)、姓名(Name8)、應(yīng)發(fā)工資(Ssalary)、社保金(Security)、實(shí)發(fā)工資(Fsalary)。 定義公有成員函數(shù)Input(),在Input()函數(shù)內(nèi)輸入職工號(hào)、姓名、應(yīng)發(fā)工資、社保金,實(shí)發(fā)工資由公式:Fsalary=Ssalary-Security計(jì)算。定義輸出職工工資的成員函數(shù)Show()。在顯示函數(shù)Show()中,職工號(hào)、姓名的輸出域?qū)挒?、左對(duì)齊,其余數(shù)據(jù)的輸出域?qū)挒?0、右對(duì)齊、保留小數(shù)點(diǎn)后兩位,輸出格式均用預(yù)定義格式控制函數(shù)設(shè)置。在主函數(shù)中用Laborage類定義職工對(duì)象數(shù)組a3。用Input()輸入職工工資,用Show()顯示每個(gè)職工的工資。(提示:用getlin
3、e輸入姓名后,必須用回車結(jié)束姓名輸入)實(shí)驗(yàn)數(shù)據(jù):1001Zhou Zhi 3000 2001002Chen Hua40004001003Wang Fan5000500實(shí)驗(yàn)代碼:#include #include #include using namespace std;class Laborage public:Laborage()void input();void display();private:int num; char name10;float Ssalary;float Security;float Fsalary;void Laborage:input()cin num;cin.
4、get(name,10,n);cin Ssalary;cin Security;Fsalary = Ssalary - Security;void Laborage:display()cout resetiosflags(ios:right)setw(8)setiosflags(ios:left)num;cout setw(8) setiosflags(ios:left) name; cout setw(10) setiosflags(ios:right) setiosflags(ios:fixed) setprecision(2) Ssalary;cout setw(10) setiosfl
5、ags(ios:right) setiosflags(ios:fixed) setprecision(2) Security;cout setw(10) setiosflags(ios:right) setiosflags(ios:fixed) setprecision(2) Fsalary;coutendl;int main(void)Laborage lab3;int i;for(i=0;i3;i+)cout請(qǐng)輸入第i+1個(gè)職員的信息為:;labi.input();for(i=0;i3;i+)labi.display();return 0;實(shí)驗(yàn)結(jié)果:代碼分析:1)在輸入時(shí)調(diào)用getline
6、()以換行符作為輸入姓名時(shí)的結(jié)束標(biāo)志,已達(dá)到輸入空格的目的2)輸出時(shí)采用resetiosflags(ios:right)實(shí)現(xiàn)結(jié)束向左對(duì)齊,用setw(8)實(shí)現(xiàn)輸出域?qū)挒?,使用一系列的格式控制字符來實(shí)現(xiàn)輸出格式的控制。2. 重載運(yùn)算符“”,使其能夠輸入一件商品的信息和輸出這件商品的信息。商品的信息由編號(hào)、商品名和價(jià)格。假如商品類Merchandise的框架如下:class merchandisepublic: Merchandiss(); Merchandiss(); friend istream& operator(istream& in,Merchandiss& s); friend os
7、tream&operatormer; coutmer; return 0;實(shí)驗(yàn)代碼:#includeusing namespace std;class merchandisepublic:merchandise()no=0;name0=0;price=1;merchandise() friend istream& operator(istream& in,merchandise& s); friend ostream&operator(istream& in,merchandise& s)couts.no;in.getline(,100,n);ins.price;return in
8、;ostream& operator(ostream& out,merchandise& s)cout商品信息顯示如下:endl;outs.no s.pricemer;cout時(shí)使用getline函數(shù),輸入name以n作為結(jié)束標(biāo)記重載時(shí)直接輸出。在主函數(shù)中調(diào)用這些函數(shù)實(shí)現(xiàn)輸入輸出的功能。3將一個(gè)源文件復(fù)制為兩個(gè)不同名目的文件,源文件與目的文件均用構(gòu)造函數(shù)打開,使用成員函數(shù)get與put復(fù)制第一個(gè)目的文件,使用getline與插入運(yùn)算符復(fù)制第二個(gè)目的文件。(提示:用get函數(shù)將輸入文件流對(duì)象的指針指向文件尾后,無法將該指針移到文件首位置。所以只能定義兩個(gè)輸入文件流對(duì)象打開同一源文件
9、,用于兩種方式的文件復(fù)制。)實(shí)驗(yàn)數(shù)據(jù):源文件:e:exa.txt,文件內(nèi)容為souce file目的文件1:e:exb.txt目的文件2:e:exc.txt實(shí)驗(yàn)代碼:#include#include#includeusing namespace std;void createfile()ofstream outfile(a.txt);if(!outfile)cerropen a.txt error!endl;exit(1);char str100;cin.getline(str,100,n);outfilestr;outfile.close();void copyfile_b()ofstrea
10、m outfile(b.txt);if(!outfile)cerropen b.txt error!endl;exit(1);ifstream infile(a.txt);if(!infile)cerropen a.txt error!endl;exit(1); char ch;while(infile.get(ch)outfilech;outfile.close();infile.close();void copyfile_c()ofstream outfile(c.txt);if(!outfile)cerropen c.txt error!endl;exit(1);ifstream inf
11、ile(a.txt);if(!infile)cerropen a.txt error!endl;exit(1); char ch;while(infile.get(ch)outfilech;outfile.close();infile.close();void display(char *filename)ifstream infile(filename);if(!infile)cerropen the file error!endl;exit(1);char ch;while(infile.get(ch)cout.put(ch);coutendl;infile.close();int mai
12、n()createfile();copyfile_b();copyfile_c();couta文?件t中D的?內(nèi)容Y為a:o;display(a.txt);coutb文?件t中D的?內(nèi)容Y為a:o;display(b.txt);coutc文?件t中D的?內(nèi)容Y為a:o;display(c.txt);return 0; 實(shí)驗(yàn)結(jié)果:定義幾個(gè)函數(shù)分別實(shí)現(xiàn):創(chuàng)建文件、復(fù)制文件、讀取文件中的內(nèi)容到顯示器在主函數(shù)中調(diào)用創(chuàng)建函數(shù),創(chuàng)建一個(gè)文件a,調(diào)用復(fù)制文件的函數(shù)將a中的內(nèi)容復(fù)制到文件b,c中在調(diào)用讀取文件的函數(shù)將a、b、c中的內(nèi)容輸出到顯示器中。4. 將存放在源文件(e:exarray1.txt)中學(xué)生成
13、績(jī)讀入二維整型數(shù)組a35中,數(shù)組a的第0列存放學(xué)號(hào),第4列存放平均成績(jī)。計(jì)算出每個(gè)學(xué)生的平均成績(jī),用擂臺(tái)法對(duì)數(shù)組a按平均成績(jī)升序排序后,存放在目的文件(e:exarray2.txt)中。學(xué)生的學(xué)號(hào)與成績(jī)?nèi)鐚?shí)驗(yàn)數(shù)據(jù)所示。編寫程序?qū)崿F(xiàn)上述要求。實(shí)驗(yàn)數(shù)據(jù):源文件:e:exarray1.txt,內(nèi)容如下:1001 90 85 80 01002 807060010038580750目的文件:e:exarray2.txt實(shí)驗(yàn)代碼:#include#includeusing namespace std;void createfile()ofstream outfile(array1.txt);int a34
14、;int i,j;for(i=0;i3;i+)cout請(qǐng)?輸?入?第i+1個(gè)?學(xué)生的?信?息:o;for(j=0;jaij; for(i=0;i3;i+)for(j=0;j4;j+)outfileaij;outfile ;outfilen;/創(chuàng)建文?件tarray1void sort()/排?序并創(chuàng)建文?件tarray2ifstream infile(array1.txt);int a35;int i,j,t;double s=0;for(i=0;i3;i+)for(j=0;jaij;s=s+aij;s=(s-ai0)/3;ai4=s;s=0;for(j=0;j2;j+)for(i=0;iai
15、+14) for(t=0;t5;t+) s=ait; ait=ai+1t; ai+1t=s; ofstream outfile(array2.txt);if(!outfile)cerropen file error!;exit(1);for(i=0;i3;i+)for(j=0;j5;j+)outfileaij;outfile ;outfilen;void display_file(char *filename)ifstream infile(filename);if(!infile)cerropen file error!endl;exit(1);int a35;int i,j;for(i=0
16、;i3;i+)for(j=0;jaij;coutaij ;coutendl; coutendl;int main()createfile();sort();display_file(array2.txt);return 0;實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)分析:定義三個(gè)函數(shù)分別實(shí)現(xiàn):創(chuàng)建文件,排序,輸出文件。排序采用冒泡排序?qū)⑵骄煽?jī)排序,若前面的大于后面的,將各個(gè)對(duì)應(yīng)項(xiàng)交換,達(dá)到排序的目的。在主函數(shù)中調(diào)用這三個(gè)函數(shù),實(shí)現(xiàn)程序的功能5. 編寫一個(gè)程序,將兩個(gè)文本文件連接成一個(gè)文件,然后將此文件中所有小寫字母轉(zhuǎn)換成大寫字母,并打印出來。實(shí)驗(yàn)代碼:#include#include#includeusing name
17、space std;void createfile(char *filename)ofstream outfile(filename);if(!outfile)cerropen file error!endl;exit(1);char str80;cin.getline(str,80);int i=0;while(stri)outfilestri;i+;outfile.close();void change()ifstream infile(c.txt);if(!infile)cerropen file error!endl;exit(1);ofstream outfile(d.txt);if
18、(!outfile)cerropen file error!=97&str=122)str=str-32; outfile.put(str);coutstr;coutendl;infile.close();outfile.close();void copyfile()char ch;ifstream infile(d.txt);/讀取?磁?盤的?文?本?文?件tofstream outfile(c.txt);/創(chuàng)建文?本?文?件twhile(infile.get(ch)/讀取?文?本?中D的?內(nèi)容Ycout ch;/輸?出?文?本?內(nèi)容Y到?內(nèi)存?outfilech;/寫入?內(nèi)容Y到?文?件t
19、infile.close(); /關(guān)?閉?文?件t流outfile.close();coutendl;int main()cout請(qǐng)?輸?入?a文?件t中D的?數(shù)y據(jù)Y:o;createfile(a.txt);cout請(qǐng)?輸?入?b文?件t中D的?數(shù)y據(jù)Y;createfile(b.txt);system(copy a.txt+b.txt c.txt);change();copyfile();return 0;實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)分析:定義三個(gè)函數(shù):create,change,copy。分別實(shí)現(xiàn)創(chuàng)建文件,改變大小寫,拷貝,程序中先建立文件a,b,在用庫函數(shù)system將兩個(gè)文件鏈接成一個(gè)文件c,在調(diào)
20、用change函數(shù),將文件c中的字母改為大寫,并保存到d文件中,最后調(diào)用copy函數(shù)將d中的內(nèi)容拷貝到c中并覆蓋。從而使c中的字母都為大寫。6. 產(chǎn)生一個(gè)二進(jìn)制數(shù)據(jù)文件,將nm之間的所有素?cái)?shù)寫入文件data.dat中。從數(shù)據(jù)文件中讀取二進(jìn)制數(shù)據(jù),并在顯示器上以每行5個(gè)數(shù)的形式顯示。實(shí)驗(yàn)數(shù)據(jù):n=100m=400實(shí)驗(yàn)代碼:#include#include#includeusing namespace std;int judge(int a)/求a是否是素?cái)?shù)如果是則輸出int temp = sqrt(a*1.0);int i;for(i=2;ia&i=temp+1;i+)if(a%i=0)retu
21、rn 0;couta ;return 1;void createfile()/創(chuàng)建文件a將素?cái)?shù)存入ofstream outfile(1.dat);if(!outfile)cerropen file error!endl;exit(1);int i;int c = 0;for(i=201;i=400;i+)if(judge(i)/若i是素?cái)?shù),則將i存入文件中outfilei ;c+;if(c%5=0)coutendl;outfileendl;coutendl;outfile.close();int main()createfile();return 0;實(shí)驗(yàn)結(jié)果:代碼分析:定義兩個(gè)函數(shù)judge、create。分別實(shí)現(xiàn)判斷素?cái)?shù),及創(chuàng)建文件的功能。Create中調(diào)用judge函數(shù),判斷judge為1時(shí)該數(shù)是素?cái)?shù),將次數(shù)存入文件,同時(shí)定義一個(gè)計(jì)數(shù)的變量,當(dāng)變量為5的倍數(shù)時(shí)換行,從而保證文件中是5個(gè)數(shù)一行。在主函數(shù)中調(diào)用函數(shù)。7編寫一個(gè)程序,可以讀入一個(gè)C+語言的源文件,每一行加上行號(hào)后保存到另一個(gè)后綴為.prn的同名文件中,同時(shí)輸出到屏幕上。實(shí)驗(yàn)代碼: #include #
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 豬肉收儲(chǔ)知識(shí)培訓(xùn)課件
- 人教版(2024)七年級(jí)英語下冊(cè)Unit 7 學(xué)情調(diào)研測(cè)試卷(含答案)
- 鋼結(jié)構(gòu)切割施工方案
- 2025年中考物理二輪復(fù)習(xí):電磁學(xué)實(shí)驗(yàn)題 能力提升練習(xí)題(含答案)
- 合同范本融資租賃合同
- 課題2 原子結(jié)構(gòu)(第2課時(shí))(教學(xué)設(shè)計(jì))九年級(jí)化學(xué)上冊(cè)同步高效課堂(人教版2024)
- 如何評(píng)估品牌傳播的效果與影響計(jì)劃
- 提升產(chǎn)品質(zhì)量的改進(jìn)措施計(jì)劃
- 學(xué)期目標(biāo)與教學(xué)任務(wù)分解計(jì)劃
- 實(shí)施素質(zhì)教育的年度工作要點(diǎn)計(jì)劃
- 庫車縣“7.9”天山煉化油儲(chǔ)罐火災(zāi)撲救戰(zhàn)評(píng)
- 金屬結(jié)構(gòu)制造安全作業(yè)指導(dǎo)書
- 眼外傷-PPT課件
- 教學(xué)-主動(dòng)脈夾層PPT課件
- 絕句遲日江山麗
- 船體開孔規(guī)則
- (精選)沸騰焙燒爐設(shè)計(jì)相關(guān)計(jì)算
- 多元化與專業(yè)化的利弊之爭(zhēng)
- ASMEB16.14-1991中文版鋼鐵管螺紋管堵、內(nèi)外螺絲和鎖緊螺母
- 《雕塑工程工程量清單計(jì)價(jià)定額》
- 《當(dāng)代廣播電視概論》試題C卷及答案
評(píng)論
0/150
提交評(píng)論