当前位置:文档之家 > C++面向对象程序设计的课后实验的答案

C++面向对象程序设计的课后实验的答案

实验八

实验名称:C++的输入和输出成绩:

实验目的和要求

1.学习C++格式化的输入输出方法。

2.学习C重载运算符“<<”和“>>”的方法。

3.学习C磁盘文件的输入输出方法。

实验内容和步骤

1. 下面给出的程序test9_1_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

//test9_1_1.cpp

#include

#include

using namespace std;

int main()

{ int i,j;

cout <<"*";

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

cout<

cout<

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

{ cout<

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

cout<

}

return 0;

}

修改后的程序为:

#include

#include

using namespace std;

int main()

{ int i,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<

}

return 0;

}

运行结果:

C++面向对象程序设计的课后实验的答案

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

#include

#include

using namespace std;

int main()

{ char ch;

int i=0;

ifstream file;

file.open("xyz.txt",ios::in);

if(①!file)

{

cout<<"xyz.txt cannot open"<

abort();

}

while (!file.eof())

{

②file.get(ch);

i++;

}

cout<<"文件字符个数:"<

③file.close();

return 0;

}

运行结果:

C++面向对象程序设计的课后实验的答案

3.重载运算符“<<”和“>>”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息由编号、商品名和价格。

程序如下:

#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)

{ out<<"no:"<

out<<"name:"<

out<<"price:"<

return out;

}

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

{ cout<<"no:";

in>>s.no;

cout<<"name:";

in>>http://www.doczj.com/doc/ee1e791552d380eb62946d7e.html;

cout<<"price:";

in>>s.price;

return in;

}

private:

int no;

char name;

double price;

};

int main()

{ Merchandise mer;

cout<<"输入商品信息:"<

cin>>mer;

cout<<"输出商品信息:"<

cout<

return 0;

}

运行结果:

C++面向对象程序设计的课后实验的答案

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

程序如下:

#include

#include

#include

using namespace std;

int main()

{ ofstream fout1("f1.txt",ios::out);

if(!fout1)

{ cout<<"f1.txt cannt open.\n";

exit(1);

}

fout1<<"This is a ";

ofstream fout2("f2.txt",ios::out);

if(!fout2)

{ cout<<"f2.txt cannt open.\n";

exit(1);

}

fout2<<"program";

fout1.close();

fout2.close();

ifstream fin2("f2.txt", ios::in);

ofstream fout3("f1.txt", ios::app);

string str;

while (fin2>>str)

{ fout3<

}

fin2.close();

fout3.close();

ifstream fin1("f1.txt",ios::in);

if(!fin1)

{ cout<<"f1.txt cannt open.\n";

exit(1);

}

char ch;

while(!fin1.eof())

{

fin1.get(ch);

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

{ ch=ch-32;

}

cout<

}

cout<

fin1.close();

return 0;

}

运行结果:

C++面向对象程序设计的课后实验的答案

实验九

实验名称:异常处理和命令空间的使用成绩:

实验目的和要求

1.学习异常处理的声明和执行过程。

2.学习命名空间的定义和使用方法。

实验内容和步骤

1.分析并调试下列程序,写出程序的输出结果,并分析输出结果。//test10_1.cpp

#include

using namespace std;

namespace NS1{

int x=10;

}

namespace NS2{

int x=20;

}

void main()

{ using NS1::x;

using namespace NS2;

cout<<"x="<

}

运行结果:

C++面向对象程序设计的课后实验的答案

2.下面是一个用于处理文件打不开的异常处理程序,分析程序并完成相应问题。//test10_2.cpp

#include

#include

using namespace std;

int main()

{ ifstream source("file9_2.txt");

char line[128];

try{

if(!source)

throw"file9_2.txt";

}

catch(char*s)

{ cout<<"error opening the file "<

exit(1);

}

while (!source.eof()){

source.getline(line,sizeof(line));

cout<

}

source.close();

return 0;

}

请回答以下问题:

(1)若其中没有file9_2.text文件,则输出结果如何?

C++面向对象程序设计的课后实验的答案

(2)在硬盘上建一个file9_2.text文件,其文件内容自己定义。输出结果如何?

C++面向对象程序设计的课后实验的答案

3.编写一个程序,求输出数的平方根。设置异常处理,对输入负数的情况给出提示。

程序如下:

#include

#include

using namespace std;

int main()

{ double number;

double result;

cout<<"请输入一个数: ";

cin>>number;

try

{

if(number<0)

{ throw exception("输入的数是负数! ");

}

result=sqrt(number);

cout<<"平方根是:"<

catch(exception e)

{ cout<

}

return 0;

}

运行结果:

C++面向对象程序设计的课后实验的答案

C++面向对象程序设计的课后实验的答案