您好,欢迎访问三七文档
实验四C++的流类库与输入输出实验课程名:面向对象的程序设计专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求(1)掌握C++格式化的输入输出方法。(2)掌握重载运算符“”和“”的方法。(3)掌握磁盘文件的输入输出方法。。二、实验内容。1.下面给出的shiyan4-1.cpp程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。*12345678911224336944812165510152025661218243036771421283542498816243240485664991827364554637281//shiyan4-1.cpp#includeiostream#includeiomanipusingnamespacestd;intmain(){inti,j;cout”*”;for(i=1;i=9;i++)couti””;coutendl;for(i=1;i=9;i++){couti””;for(j=1;j=i;j++){couti*j””;}}return0;}更正后:#includeiostream#includeiomanipusingnamespacestd;intmain(){inti,j;cout*;for(i=1;i=9;i++)couti;coutendl;for(i=1;i=9;i++){couti;for(j=1;j=i;j++){couti*j;}coutendl;}return0;}运行结果:2.下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序。//shiyan4-2.cpp#includeiostream#includefstreamusingnamespacestd;intmain(){charch;inti=0;ifstreamfile;file.open(“xyz.txt”,ios::in);if(①!file){cout”xyz.txtcannotopen”endl;abort();}while(!file.eof()){②file.get(ch);i++;}cout”文件字符个数:”iendl;③file.close();return0;}3.重载运算符“”和“”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息由编号、商品名和价格。假如商品类Merchandise的框架如下:classmerchandise{public:Merchandiss();~Merchandiss();friendistream&operator(istream&in,Merchandiss&s);friendostream&operator(ostream&out,Merchandiss&s);private:intno;char*name;doubleprice;};要求实现该类,并编写以下的main函数对该类进行操作。intmain(){Merchandisemer;cinmer;coutmer;return0;}程序代码:#includeiostream#includestringusingnamespacestd;classMerchandise{public:Merchandise(intn=0,charna='a',doublep=0.0){no=n;name=na;price=p;}~Merchandise(){}friendostream&operator(ostream&out,Merchandise&s){cout编号:s.noendl;cout名称:s.nameendl;cout价格:s.priceendl;returnout;}friendistream&operator(istream&in,Merchandise&s){cout编号:;cins.no;cout名称:;cins.name;cout价格:;cins.price;returnin;}private:intno;charname;doubleprice;};intmain(){Merchandisemer;cout输入商品信息:endl;cinmer;cout输出商品信息:endl;coutmer;return0;}运行结果:4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。程序代码:#includeiostream#includefstream#includestringusingnamespacestd;intmain(){ofstreamfout1(f1.txt,ios::out);if(!fout1){coutf1.txtcanntopen.\n;exit(1);}fout1Thisisa;ofstreamfout2(f2.txt,ios::out);if(!fout2){coutf2.txtcanntopen.\n;exit(1);}fout2program;fout1.close();fout2.close();ifstreamfin2(f2.txt,ios::in);ofstreamfout3(f1.txt,ios::app);stringstr;while(fin2str){fout3str;}fin2.close();fout3.close();ifstreamfin1(f1.txt,ios::in);if(!fin1){coutf1.txtcanntopen.\n;exit(1);}charch;while(!fin1.eof()){fin1.get(ch);if(ch='a'&&ch='z'){ch=ch-32;}coutch;}coutendl;fin1.close();return0;}运行结果:5.将一个源文件复制为两个不同名目的文件,源文件与目的文件均用构造函数打开,使用成员函数get与put复制第一个目的文件,使用getline与插入运算符复制第二个目的文件。(提示:用get函数将输入文件流对象的指针指向文件尾后,无法将该指针移到文件首位置。所以只能定义两个输入文件流对象打开同一源文件,用于两种方式的文件复制。)实验数据:源文件:e:\ex\a.txt,文件内容为soucefile目的文件1:e:\ex\b.txt目的文件2:e:\ex\c.txt程序代码:#includeiostream#includefstream#includestringusingnamespacestd;voidcreatefile(){ofstreamoutfile(a.txt);if(!outfile){cerropena.txterror!endl;exit(1);}charstr[100];cin.getline(str,100,'\n');outfilestr;outfile.close();}voidcopyfile_b(){ofstreamoutfile(b.txt);if(!outfile){cerropenb.txterror!endl;exit(1);}ifstreaminfile(a.txt);if(!infile){cerropena.txterror!endl;exit(1);}charch;while(infile.get(ch)){outfilech;}outfile.close();infile.close();}voidcopyfile_c(){ofstreamoutfile(c.txt);if(!outfile){cerropenc.txterror!endl;exit(1);}ifstreaminfile(a.txt);if(!infile){cerropena.txterror!endl;exit(1);}charch;while(infile.get(ch)){outfilech;}outfile.close();infile.close();}voiddisplay(char*filename){ifstreaminfile(filename);if(!infile){cerropenthefileerror!endl;exit(1);}charch;while(infile.get(ch)){cout.put(ch);}coutendl;infile.close();}intmain(){createfile();copyfile_b();copyfile_c();couta文件t中D的内容为:;display(a.txt);coutb文件t中D的内容为:;display(b.txt);coutc文件t中D的内容为:;display(c.txt);return0;}运行结果:6.将存放在源文件(e:\ex\array1.txt)中学生成绩读入二维整型数组a[3][5]中,数组a的第0列存放学号,第4列存放平均成绩。计算出每个学生的平均成绩,用擂台法对数组a按平均成绩升序排序后,存放在目的文件(e:\ex\array2.txt)中。学生的学号与成绩如实验数据所示。编写程序实现上述要求。实验数据:源文件:e:\ex\array1.txt,内容如下:100190858001002807060010038580750目的文件:e:\ex\array2.txt程序代码:#includeiostream#includefstreamusingnamespacestd;voidcreatefile(){ofstreamoutfile(array1.txt);inta[3][4];inti,j;for(i=0;i3;i++){cout请输入第i+1个学生的信息:;for(j=0;j4;j++){cina[i][j];}}for(i=0;i3;i++){for(j=0;j4;j++){outfilea[i][j];outfile'';}outfile'\n';}}//tarray1voidsort()//排序并创建文件tarray2{ifstreaminfile(array1.txt);inta[3][5];inti,j,t;doubles=0;for(i=0;i3;i++){for(j=0;j4;j++){infilea[i][j];s=s+a[i][j];}s=(s-a[i][0])/3;a[i][4]=s;s=0;}for(j=0;j2;j++){for(i=0;i2-j;i++){if(a[i][4]a[i+1][4]){for(t=0;t5;t++){s=a[i][t];a[i][t]=a[i+1][t];a[i+1][t]=s;}}}}ofstreamoutfile(array2.txt);if(!outfile){cerropenfileerror!;exit(1);}for(i=0;i3;i++){for(j=0;j5;j++){outfilea[i][j];outfile'';}outfile'\n';}}voiddisplay_file(char*filename){ifstreaminfile(filename);if(!infile){cerropenfileerror!endl;exit(1);}inta[3][5];inti,j;for(i=0;i3;i++){for(j=0;j5;j++){infile
本文标题:C++实验四
链接地址:https://www.777doc.com/doc-7027415 .html