C++实验四.pdf
.实验 四 C+的流类库与输入输出 实验课程名:面向对象的程序设计 专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求(1)掌握 C+格式化的输入输出方法。(2)掌握重载运算符“”的方法。(3)掌握磁盘文件的输入输出方法。二、实验内容。1.下面给出的 shiyan4-1.cpp 程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。*1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81 /shiyan4-1.cpp#include#include using namespace std;int main()int i,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”;return 0;.更正后:#include#include using namespace std;int main()int i,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;return 0;运行结果:2.下面的程序用于统计文件 xyz.txt 中的字符个数,请填空完成程序。/shiyan4-2.cpp#include#include using namespace std;int main()char ch;int i=0;ifstream file;(“xyz.txt”,ios:in);if(!file )cout”xyz.txt cannot open”endl;abort();while(!()(ch);.i+;cout”文件字符个数:”iendl;();return 0;3.重载运算符“”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息由编号、商品名和价格。假如商品类 Merchandise 的框架如下:class merchandise public:Merchandiss();Merchandiss();friend istream&operator(istream&in,Merchandiss&s);friend ostream&operatormer;coutmer;return 0;程序代码:#include#include using namespace std;class Merchandise public:Merchandise(int n=0,char na=a,double p=0.0)no=n;name=na;price=p;Merchandise()friend ostream&operator(ostream&out,Merchandise&s)cout编号:s.noendl;cout名称:s.nameendl;.cout价格:s.price(istream&in,Merchandise&s)couts.no;couts.name;couts.price;return in;private:int no;char name;double price;int main()Merchandise mer;cout输入商品信息:mer;cout输出商品信息:endl;coutmer;return 0;运行结果:4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。程序代码:#include#include#include using namespace std;int main()ofstream fout1(f1.txt,ios:out);if(!fout1)coutf1.txt cannt open.n;exit(1);.fout1This is a;ofstream fout2(f2.txt,ios:out);if(!fout2)coutf2.txt cannt open.n;exit(1);fout2str)fout3str;fin2.close();fout3.close();ifstream fin1(f1.txt,ios:in);if(!fin1)cout=a&ch=z)ch=ch-32;coutch;coutendl;fin1.close();return 0;运行结果:5.将一个源文件复制为两个不同名目的文件,源文件与目的文件均用构造函数打开,使用成员.函数 get 与 put 复制第一个目的文件,使用 getline 与插入运算符复制第二个目的文件。(提示:用 get 函数将输入文件流对象的指针指向文件尾后,无法将该指针移到文件首位置。所以只能定义两个输入文件流对象打开同一源文件,用于两种方式的文件复制。)实验数据:源文件:e:exa.txt,文件内容为 souce file 目的文件 1:e:exb.txt 目的文件 2:e:exc.txt 程序代码:#include#include#include using 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;out();void copyfile_b()ofstream 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(in(ch)outfilech;out();in();void copyfile_c()ofstream outfile(c.txt);if(!outfile)cerropen c.txt error!endl;exit(1);ifstream infile(a.txt);if(!infile)cerropen a.txt error!endl;exit(1);char ch;while(in(ch)outfilech;out();in();void display(char*)ifstream in);if(!infile)cerropen the!endl;exit(1);char ch;while(in(ch).cout.put(ch);coutendl;in();int main()createfile();copyfile_b();copyfile_c();couta 文件 t 中 D 的内容为:;display(a.txt);coutb 文件 t 中 D 的内容为:;display(b.txt);coutc 文件 t 中 D 的内容为:;display(c.txt);return 0;运行结果:6.将存放在源文件(e:exarray1.txt)中学生成绩读入二维整型数组 a35中,数组 a 的第 0 列存放学号,第 4 列存放平均成绩。计算出每个学生的平均成绩,用擂台法对数组 a 按平均成绩升序排序后,存放在目的文件(e:exarray2.txt)中。学生的学号与成绩如实验数据所示。编写程序实现上述要求。实验数据:源文件:e:exarray1.txt,内容如下:1001 90 85 80 0 1002 80 70 60 0 1003 85 80 75 0 目的文件:e:exarray2.txt 程序代码:#include#include using namespace std;void createfile()ofstream outfile(array1.txt);.int a34;int i,j;for(i=0;i3;i+)cout请输入第i+1个学生的信息:;for(j=0;jaij;for(i=0;i3;i+)for(j=0;j4;j+)outfileaij;outfile;outfilen;/tarray1 void sort()/排序并创建文件 tarray2 ifstream 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+14)for(t=0;t5;t+)s=ait;ait=ai+1t;ai+1t=s;ofstream outfile(array2.txt);if(!outfile)cerropen!;exit(1);for(i=0;i3;i+)for(j=0;j5;j+)outfileaij;outfile;outfilen;void display_*).ifstream in);if(!infile)cerropen!endl;exit(1);int a35;int i,j;for(i=0;i3;i+)for(j=0;jaij;coutaij;coutendl;coutendl;int main()createfile();sort();display_file(array2.txt);return 0;运行结果:.三、结论 通过本次实验,我掌握 C+格式化的输入输出方法,还掌握重载运算符“”的方法,掌握磁盘文件的输入输出方法。