C++实验四.docx

上传人:b****5 文档编号:11919175 上传时间:2023-04-16 格式:DOCX 页数:16 大小:21.29KB
下载 相关 举报
C++实验四.docx_第1页
第1页 / 共16页
C++实验四.docx_第2页
第2页 / 共16页
C++实验四.docx_第3页
第3页 / 共16页
C++实验四.docx_第4页
第4页 / 共16页
C++实验四.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C++实验四.docx

《C++实验四.docx》由会员分享,可在线阅读,更多相关《C++实验四.docx(16页珍藏版)》请在冰豆网上搜索。

C++实验四.docx

C++实验四

实验四C++的流类库与输入输出

实验课程名:

面向对象的程序设计

专业班级:

学号:

姓名:

实验时间:

实验地点:

指导教师:

一、实验目的和要求

(1)掌握C++格式化的输入输出方法。

(2)掌握重载运算符“<<”和“>>”的方法。

(3)掌握磁盘文件的输入输出方法。

2、实验内容。

1.下面给出的shiyan4-1.cpp程序用于打印九九乘法表,但程序中存在错误。

请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。

*123456789

11

224

3369

4481216

5510152025

661218243036

77142128354249

8816243240485664

991827364554637281

//shiyan4-1.cpp

#include

#include

usingnamespacestd;

intmain()

{

inti,j;

cout<<”*”;

for(i=1;i<=9;i++)

cout<

cout<

for(i=1;i<=9;i++)

{cout<

for(j=1;j<=i;j++)

{cout<

}

return0;

}

更正后:

#include

#include

usingnamespacestd;

intmain()

{

inti,j;

cout<<"*";

for(i=1;i<=9;i++)

cout<

cout<

for(i=1;i<=9;i++)

{cout<

for(j=1;j<=i;j++)

{cout<

cout<

}

return0;

}

运行结果:

 

2.下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序。

//shiyan4-2.cpp

#include

#include

usingnamespacestd;

intmain()

{charch;

inti=0;

ifstreamfile;

(“xyz.txt”,ios:

:

in);

if(

!

file)

{

cout<<”xyz.txtcannotopen”<

abort();

}

while(!

())

{

(ch);

i++;

}

cout<<”文件字符个数:

”<

();

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;

cin>>mer;

cout<

return0;

}

程序代码:

#include

#include

usingnamespacestd;

classMerchandise{

public:

Merchandise(intn=0,charna='a',doublep=0.0)

{

no=n;

name=na;

price=p;

}

~Merchandise(){}

friendostream&operator<<(ostream&out,Merchandise&s)

{

cout<<"编号:

"<

cout<<"名称:

"<

cout<<"价格:

"<

returnout;

}

friendistream&operator>>(istream&in,Merchandise&s)

{

cout<<"编号:

";

cin>>s.no;

cout<<"名称:

";

cin>>s.name;

cout<<"价格:

";

cin>>s.price;

returnin;

}

private:

intno;

charname;

doubleprice;

};

intmain()

{

Merchandisemer;

cout<<"输入商品信息:

"<

cin>>mer;

cout<<"输出商品信息:

"<

cout<

return0;

}

运行结果:

4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。

程序代码:

#include

#include

#include

usingnamespacestd;

intmain()

{ofstreamfout1("f1.txt",ios:

:

out);

if(!

fout1)

{cout<<"f1.txtcanntopen.\n";

exit

(1);

}

fout1<<"Thisisa";

ofstreamfout2("f2.txt",ios:

:

out);

if(!

fout2)

{cout<<"f2.txtcanntopen.\n";

exit

(1);

}

fout2<<"program";

fout1.close();

fout2.close();

ifstreamfin2("f2.txt",ios:

:

in);

ofstreamfout3("f1.txt",ios:

:

app);

stringstr;

while(fin2>>str)

{fout3<

}

fin2.close();

fout3.close();

ifstreamfin1("f1.txt",ios:

:

in);

if(!

fin1)

{cout<<"f1.txtcanntopen.\n";

exit

(1);

}

charch;

while(!

fin1.eof())

{

fin1.get(ch);

if(ch>='a'&&ch<='z')

{ch=ch-32;

}

cout<

}

cout<

fin1.close();

return0;

}

运行结果:

5.将一个源文件复制为两个不同名目的文件,源文件与目的文件均用构造函数打开,使用成员函数get与put复制第一个目的文件,使用getline与插入运算符复制第二个目的文件。

(提示:

用get函数将输入文件流对象的指针指向文件尾后,无法将该指针移到文件首位置。

所以只能定义两个输入文件流对象打开同一源文件,用于两种方式的文件复制。

实验数据:

源文件:

e:

\ex\a.txt,文件内容为soucefile

目的文件1:

e:

\ex\b.txt

目的文件2:

e:

\ex\c.txt

程序代码:

#include

#include

#include

usingnamespacestd;

void

createfile()

{

ofstreamoutfile("a.txt");

if(!

outfile)

{

cerr<<"opena.txterror!

"<

exit

(1);

}

charstr[100];

cin.getline(str,100,'\n');

outfile<

out();

}

void

copyfile_b()

{

ofstreamoutfile("b.txt");

if(!

outfile)

{

cerr<<"openb.txterror!

"<

exit

(1);

}

ifstreaminfile("a.txt");

if(!

infile)

{

cerr<<"opena.txterror!

"<

exit

(1);

}

charch;

while

(in(ch))

{

outfile<

}

out();

in();

}

void

copyfile_c()

{

ofstreamoutfile("c.txt");

if

(!

outfile)

{

cerr<<"openc.txterror!

"<

exit

(1);

}

ifstreaminfile("a.txt");

if(!

infile)

{

cerr<<"opena.txterror!

"<

exit

(1);

}

charch;

while

(in(ch))

{

outfile<

}

out();

in();

}

voiddisplay(char*)

{

ifstreamin);

if(!

infile)

{

cerr<<"openthe!

"<

exit

(1);

}

charch;

while

(in(ch))

{

cout.put(ch);

}

cout<

in();

}

int

main()

{

createfile();

copyfile_b();

copyfile_c();

cout<<"a文件t中D的内容为:

";

display("a.txt");

cout<<"b文件t中D的内容为:

";

display("b.txt");

cout<<"c文件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,内容如下:

10019085800

10028070600

10038580750

目的文件:

e:

\ex\array2.txt

程序代码:

#include

#include

usingnamespacestd;

void

createfile()

{

ofstreamoutfile("array1.txt");

inta[3][4];

inti,j;

for

(i=0;i<3;i++)

{

cout<<"请输入第"<

";

for

(j=0;j<4;j++)

{

cin>>a[i][j];

}

}

for

(i=0;i<3;i++)

{

for

(j=0;j<4;j++)

{

outfile<

outfile<<'';

}

outfile<<'\n';

}

}//tarray1

voidsort()//排序并创建文件tarray2

{

ifstreaminfile("array1.txt");

inta[3][5];

inti,j,t;

double

s=0;

for

(i=0;i<3;i++)

{

for

(j=0;j<4;j++)

{

infile>>a[i][j];

s=s+a[i][j];

}

s=(s-a[i][0])/3;

a[i][4]=s;

s=0;

}

for

(j=0;j<2;j++)

{

for

(i=0;i<2-j;i++)

{

if

(a[i][4]>a[i+1][4])

{

for

(t=0;t<5;t++)

{

s=a[i][t];

a[i][t]=a[i+1][t];

a[i+1][t]=s;

}

}

}

}

ofstreamoutfile("array2.txt");

if

(!

outfile)

{

cerr<<"open!

";

exit

(1);

}

for

(i=0;i<3;i++)

{

for

(j=0;j<5;j++)

{

outfile<

outfile<<'';

}

outfile<<'\n';

}

}

voiddisplay_*)

{

ifstreamin);

if(!

infile)

{

cerr<<"open!

"<

exit

(1);

}

inta[3][5];

inti,j;

for

(i=0;i<3;i++)

{

for

(j=0;j<5;j++)

{

infile>>a[i][j];

cout<

}

cout<

}

cout<

}

int

main()

{

createfile();

sort();

display_file("array2.txt");

return0;

}

运行结果:

3、结论

通过本次实验,我掌握C++格式化的输入输出方法,还掌握重载运算符“<<”和“>>”的方法,掌握磁盘文件的输入输出方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1