复数计算器 实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中南大学
高级程序设计实践(C++)课程设计报告
题目复数计算器
学生姓名
指导教师陈丽萍
学院信息科学与工程学院
专业班级通信工程1301班
完成时间 2014年7月5日
第一章需求分析与程序设计
1.1 需求分析
1.1.1程序设计的目的与任务
1.复习和巩固C++语言的基础知识,进一步加深对C++语言的理解和掌握。

2.为学生提供独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生独立分析问题、解决问题、查阅资料以及自学能力。

3.学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。

4.在程序实现过程中,需利用面向对象程序设计理论的基础知识,充分体现出C++语言关于类、继承、封装与多态等核心概念,每一个类应包含数据成员和成员函数,以实现预期的功能,解决实际问题。

1.1.2“复数计算器”程序所能实现的功能
1.建立实数类、复数类,复数类由实数类公有继承而来。

2.实现实数、复数信息的初始化。

3.通过选择结构和调用相关函数实现实数的相关运算,包括:两个实数间的加、减、乘、除和一个实数的自增、自减、求平方、二次方根等运算。

4.通过选择结构和调用相关函数实现复数的相关运算,包括:两个复数间的加、减、乘、除、求两个复数的夹角和一个复数的取模、求平方、求共轭复数、求单个复数的向量角等运算。

5.通过调用相关函数实现实数、复数信息的输出,显示在显示屏上。

6.通过多次运用选择和循环结构实现对实数、复数运算的选择,在选择了实数或复数运算的前提下,再实现对各种运算的选择,运算结束后还可以选择继续实现其它运算或退出程序。

1.2 程序设计
1.2.1概要设计
1.系统中的各个实体及它们之间的关系
系统中的实体是实数类对象和复数类对象,它们的关系是复数类对象所属的类是由实数类对象所属的类公有派生而来的。

2.系统的类层次
程序中建立了两个类,分别是实数类、复数类,复数类是由实数类公有派生而来的。

3.主程序的流程以及各程序模块之间的层次(调用)关系
首先从键盘输入数字1或2或0,输入不同数字则进入不同的并列的小程序模块。

若输入1,则进行实数相关运算,再输入1-8选择具体运算,此时会调用实数类中的相关成员函数,运算出正确结果,运算结束后,则会进入循环结构,进行下一次选择及运算。

若输入2,则进行复数相关运算,再输入1-9选择具体运算,此时会调用复数类中的相关成员函数,运算出正确结果,运算结束后,则会进入循环结构,进行下一次选择及运算。

若输入0,则将退出复数计算器系统。

1.2.2详细设计
1.类层次中各个类的描述
实数类
数据成员(都属于保护数据成员):double real
成员函数(都属于公有成员函数):
构造函数:Simple() Simple(double r)
相加函数:double jia(Simple &s2)
相减函数:double jian(Simple &s2)
相乘函数:double cheng(Simple &s2)
相除函数:double chu(Simple &s2)
自加函数:double zijia()
自减函数:double zijian()
平方函数:double pingfang()
二次方根函数:double kaifang()
输入函数:void input()
输出函数:double output()
复数类
数据成员(都属于私有数据成员):double imag
成员函数(都属于公有成员函数):
构造函数:Complex() Complex(double r,double i)
重载“+”函数:Complex operator+(Complex &c2)
重载“-”函数:Complex operator-(Complex &c2)
重载“/”函数:Complex operator*(Complex &c2)
重载“*”函数:Complex operator/(Complex &c2)
输入函数:void setnumber()
取模函数:double qumo()
平方函数:Complex pf()
取共轭复数函数:Complex gonge()
求向量角函数:double xiangliangjiao()
求夹角函数:double jiajiao(Complex &c2)
重载“<<”函数:
friend ostream&operator<<(ostream&output,Complex&c)
2.类中各个成员函数的定义
实数类中成员函数定义:
Simple(){double real=0.0;}//构造函数
Simple(double r){real=r;}//构造函数
double jia(Simple &s2)//两个实数相加函数
{
double a;
a=real+s2.real;
return a;
}
double jian(Simple &s2)//两个实数相减函数
{
double a;
a=real-s2.real;
return a;
}
double cheng(Simple &s2)//两个实数相乘函数
{
double a;
a=(real)*(s2.real);
return a;
}
double chu(Simple &s2)//两个实数相除函数
{
double a;
a=(real)/(s2.real);
return a;
}
double zijia()//一个实数自加函数
{
double a;
a=++real;
}
double zijian()//一个实数自减函数
{
double a;
a=--real;
return a;
}
double pingfang()//一个实数的平方函数
{
double a;
a=(real)*(real);
return a;
}
double kaifang()//一个实数的二次方根函数
{
double a;
a=sqrt(real);
return a;
}
void input()//实数的输入函数
{
cout<<"请输入一个实数:"<<"";
cin>>real;
}
double output()//实数的输出函数
{
return real;
}
复数类中成员函数定义:
Complex(){real=0.0;imag=0.0;}//构造函数
Complex(double r,double i){real=r;imag=i;}//构造函数void setnumber()//复数的输入函数
{
cout<<"请输入一个复数的实部:"<<"";
cout<<"请输入一个复数的虚部:"<<"";
cin>>imag;
}
Complex operator+(Complex &c2)//重载"+"用于两复数相加
{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
Complex operator-(Complex &c2)//重载"-"用于两复数相减
{
Complex c;
c.real=real-c2.real;
c.imag=imag-c2.imag;
return c;
}
Complex operator*(Complex &c2)//重载"*"用于两复数相乘
{
Complex c;
c.real=real*c2.real-imag*c2.imag;
c.imag=real*c2.imag+imag*c2.real;
return c;
}
Complex operator/(Complex &c2)//重载"/"用于两复数相除
{
Complex c;
c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
return c;
}
double qumo()//一个复数取模函数
{
double a;
a=sqrt(real*real+imag*imag);
return a;
}
Complex pf()//一个复数的平方函数
{
Complex c;
c.real=real*real-imag*imag;
c.imag=2*real*imag;
return c;
}
Complex gonge()//一个复数的共轭复数函数
{
Complex c;
c.real=real;
c.imag=0-imag;
return c;
}
double xiangliangjiao()//单个复数的向量角函数
{
double a;
a=atan(imag/real)*57.295;
return a;
}
double jiajiao(Complex &c2)//两个复数的夹角函数
{
double a;
a=fabs((atan(imag/real))*57.295-(atan(c2.imag/c2.real))*57.295
return a;
}
friend ostream&operator<<(ostream&output,Complex&c)//重载"<<"用于复数的输出
{
output<<c.real;
if(c.imag>=0)output<<"+";
output<<c.imag<<"i"<<endl;
return output;
}
3.主程序和重要模块的算法
调试程序后,显示屏会显示文字提醒计算器使用者输入数字0或1或2,使用者需根据提示输入相关数据。

部分相关程序代码如下:
cout<<"【欢迎使用复数运算器】"<<endl;
gg: cout<<"请输入0或1或2"<<endl;
cout<<"【0】退出复数计算器;"<<endl;
cout<<"【1】进行实数相关运算;"<<endl;
cout<<"【2】进行复数相关运算:"<<"";
cin>>a;
若计算器使用者输入1,则选择了实数的相关运算,系统会提示输入数字1-8,1-8分别对应两个实数间的相加、相减、相乘、相除和一个实数的自加、自减、平方、二次方根等运算,使用者需根据提示输入1-8,再从键盘输入一个或两个实数,按回车键后即可得到正确结果。

部分相关程序代码如下:
if(a==1)
{
cout<<"1.相加 2.相减 3.相乘 4.相除(两个实数间的运算)"<<endl;
cout<<"5.自加 6.自减 7.平方 8.二次方根(一个实数的运算)"<<endl;
cout<<"输入数字1-8进行选择:"<<"";
cin>>b;
if(b==1||b==2||b==3||b==4)
{
cout<<"请输入2个实数:"<<""<<""<<endl;
s1.input();
s2.input();
cout<<"第1个实数是:"<<s1.output()<<endl;
cout<<"第2个实数是:"<<s2.output()<<endl;
switch(b)
{
case 1:cout<<"相加结果是:"<<s1.jia(s2)<<endl;break;
case 2:cout<<"相减结果是:"<<s1.jian(s2)<<endl;break;
case 3:cout<<"相乘结果是:"<<s1.cheng(s2)<<endl;break;
case 4:cout<<"相除结果是:"<<s1.chu(s2)<<endl;break;
default:cout<<"error"<<endl;break;
}
cout<<endl;
}
if(b==5||b==6||b==7||b==8)
{
cout<<"请输入1个实数:"<<""<<endl;
s1.input();
cout<<"输入的实数是:"<<s1.output()<<endl;
switch(b)
{
case 5:cout<<"自加结果是:"<<s1.zijia()<<endl;break;
case 6:cout<<"自减结果是:"<<s1.zijian()<<endl;break;
case 7:cout<<"平方结果是:"<<s1.pingfang()<<endl;break;
case 8:cout<<"二次方根是:"<<s1.kaifang()<<endl;break;
default:cout<<"error"<<endl;break;
}
cout<<endl;
}
goto gg;
}
若计算器使用者输入2,则选择了复数的相关运算,系统会提示输入数字1-9,1-9分别对应两个复数间的相加、相减、相乘、相除、夹角和一个复数的取模、平方、向量角、共轭复数等运算,使用者需根据提示输入1-9,再通过从键盘键入分别输入实部和虚部输入一个或两个复数,按回车键后即可得到正确结果。

部分相关程序代码如下:
if(a==2)
{
cout<<"1.相加 2.相减 3.相乘 4.相除 5.两个复数的夹角(两个复数间的运算)"<<endl;
cout<<"6.取模 7.平方 8.一个复数的向量角 9.共轭复数(一
个复数的运算)"<<endl;
cout<<"输入数字1-9进行选择:"<<"";
cin>>b;
if(b==1||b==2||b==3||b==4||b==5)
{
cout<<"请输入2个复数:"<<""<<""<<endl;
c1.setnumber();
c2.setnumber();
cout<<"第1个复数是:"<<c1;
cout<<"第2个复数是:"<<c2;
switch(b)
{
case 1:cout<<"相加结果是:"<<c1+c2<<endl;break;
case 2:cout<<"相减结果是:"<<c1-c2<<endl;break;
case 3:cout<<"相乘结果是:"<<c1*c2<<endl;break;
case 4:cout<<"相除结果是:"<<c1/c2<<endl;break;
case 5:cout<<"这两个复数的夹角是:"<<c1.jiajiao(c2)<<"°"<<endl;break;
default:cout<<"error"<<endl;break;
}
cout<<endl;
}
if(b==6||b==7||b==8||b==9)
{
cout<<"请输入1个复数:"<<""<<endl;
c1.setnumber();
cout<<"输入的复数是:"<<c1;
switch(b)
{
case 6:cout<<"取模结果是:"<<c1.qumo()<<endl;break;
case 7:cout<<"平方结果是:"<<c1.pf()<<endl;break;
case 8:cout<<"该复数的向量角
是:"<<c1.xiangliangjiao()<<"°"<<endl;break;
case 9:cout<<"该复数的共轭复数
是:"<<c1.gonge()<<endl;break;
default:cout<<"error"<<endl;break; }
cout<<endl;
}
goto gg;
}
若计算器使用者输入0,再按任意键后,即可退出复数计算器。

此过程是通过运用if 判断语句和switch 选择语句而实现的。

部分相关程序代码如下: if(a==0) { cout<<"【谢谢使用!按任意键后,您将退出复数计算器】"<<endl; exit(0);
}
若第一次计算器使用者输入1或2且一次运算结束后,系统会再次提醒输入0或1或2,即可进行下一次运算;若第一次计算器使用者输入0,则会退出系统。

此过程是通过运用goto 循环语句和if 判断语句而实现的。

4.程序运行的流程图(鉴于程序中用到if 判断语句和switch 循环语句,流程图中会有较多分支,所以此流程图将会以三部分的形式呈现)
图1 程序图分图1
从键盘输入数字0或1或2
输入0
3
4
退出程序
输入1 输入2
输入1
输入数字1-8
1 2 3 4 5 6 7 8
调用2次实数输入函数,2次输出函数,1次相加函数调用2
次实
数输
入函
数,2
次输
出函
数,1
次相
减函

调用2
次实
数输
入函
数,2
次输
出函
数,1
次相
乘函

调用2
次实
数输
入函
数,2
次输
出函
数,1
次相
除函

调用1
次实
数输
入函
数,1
次输
出函
数,1
次自
加函

调用1
次实
数输
入函
数,1
次输
出函
数,1
次相
减函

调用1
次实
数输
入函
数,1
次输
出函
数,1
次平
方函

调用1
次实数
输入函
数,1
次输出
函数,1
次二次
方根函

3
输出结果
图2 程序图分图2
输入数字1-9
1 2 3 4 5 6 7 8
调用2次复数输入函数,1次复数相加函数调用
2次
复数
输入

数,1
次复
数相
减函

调用
2次
复数
输入

数,1
次复
数相
乘函

调用
2次
复数
输入
函数,
1次
求两
复数
夹角
函数
调用
1次
复数
输入

数,1
次取
模函

调用
1次
复数
输入

数,1
次复
数平
方函

调用1
次复
数输
入函
数,1
次求
单个
复数
向量
角函

4
输入2
9
调用
2次
复数
输入

数,1
次复
数相
乘函

调用
1次
复数
输入

数,1
次求
共轭
复数
函数
输出结果
图3 程序图分图3
第二章调试与总结
2.1 调试分析与测试结果
2.1.1调试过程中遇到的问题及解决方法
1.调试出现错误
调试过程中出现错误,不能正常运行,经检查后发现是代码中包含的sqrt函数,fabs函数,atan函数没有定义,在头文件中加上#include<cmath>即可正常运行。

2.运算结果不正确
调试过程中,当算一个复数的向量角时,算出的度数不对,经认真检查后,发现是没有将弧度转化为度数,只需在原始结果后乘57.295即可得到正确结果。

当算两个复数的夹角时,有时运行结果出现负角,但两个复数的夹角不可能是负的,经仔细思考后,在原始结果前加fabs取绝对值,即可得到正确结果。

3.循环结构不恰当
调试过程中,刚开始每进行一种运算后,就会退出系统,若想要进行下一次运算,必须重新调试,这样不太方便,最终经过思考,我在main函数中加入了一个goto 循环结构和exit退出语句,有了这些修改后,在每次运算结束后,可以选择继续进行下一次运算,或是退出系统,这样比较方便。

2.1.2测试结果(鉴于许多运算功能原理相似,以下只列出部分功能的测试结果)
1.求两个实数相乘的结果:
3.求一个实数平方的结果:
4.求一个实数的二次方根:
6.求两个复数的夹角:
7.求一个复数的模:
8.求一个复数的向量角:
9.求一个复数的共轭复数:
2.2课程设计总结
2.2.1课设总结
在这次程序设计的过程中,我遇到了很多问题,同时也收获了不少,成长了不少。

一拿到题目我就非常紧张,害怕自己做不出来,焦虑的情绪让我浪费了好多时间,这让我懂得在生活中遇到问题时,要有良好的心态,一定要镇定自若,千万不能惊慌失措。

当我花了好久,终于辛辛苦苦设计出了算法,编写好程序,可是当调试时,出现了很多问题,如:调试过程中出现错误,程序不能正常运行,经认真检查和思考后发现是头文件中缺少#include<cmath>;还有调试过程中,当算一个复数的向量角时,算出的度数不对,经认真检查后,发现是没有将弧度转化为度数,只需在原始结果后乘57.295即可得到正确结果;当算两个复数的夹角时,有时运行结果出现负角,但两个复数的夹角不可能是负的,经仔细思考后,在原始结果前加fabs取绝对值,即可得到正确结果;还有调试过程中,刚开始每进行一种运算后,就会退出系
统,若想要进行下一次运算,必须重新调试,这样不太方便,最终经过思考,我在main函数中加入了一个goto循环结构和exit退出语句,有了这些修改后,在每次运算结束后,可以选择继续进行下一次运算,或是退出系统,这样比较方便。

回头检查错误,修改程序的过程,又让我花费了好多时间和精力,这让我知道做任何事都要有严谨的态度,并考虑到结果。

在完善程序的过程中,我也学会了如何快速寻找错误并改正,还让我做任何事更有耐心。

当我遇到问题不能自己独立解决时,我求助了同学,这也让我深刻懂得,在必要的时候我们可以求助他人,同样可以得到好的结果,但大部分还是要靠自己的力量解决问题。

在这次课程设计中,我设计了一个较大的程序后,我对书本上的理论知识有了更全面、深刻的理解,同时也锻炼了我的动手能力、实践能力、将课本知识运用到实际生活中的能力。

虽然这次程序设计的过程很艰难,但最终我成功了,我觉得一切的努力都是值得的。

第三章参考文献
[1]《C++程序设计》
[2]《C++程序设计实验上机与指导》
第四章附录
#include<iostream.h>
#include<string>
#include<cmath>
class Simple
{protected:
double real;
public:
Simple(){double real=0.0;}//构造函数
Simple(double r){real=r;}//构造函数
double jia(Simple &s2)//两个实数相加函数
{
double a;
a=real+s2.real;
return a;
}
double jian(Simple &s2)//两个实数相减函数{
double a;
a=real-s2.real;
return a;
}
double cheng(Simple &s2)//两个实数相乘函数{
double a;
a=(real)*(s2.real);
return a;
}
double chu(Simple &s2)//两个实数相除函数{
double a;
a=(real)/(s2.real);
return a;
}
double zijia()//一个实数自加函数
{
double a;
a=++real;
return a;
}
double zijian()//一个实数自减函数
{
double a;
a=--real;
return a;
}
double pingfang()//一个实数的平方函数{
double a;
a=(real)*(real);
return a;
}
double kaifang()//一个实数的二次方根函数
{
double a;
a=sqrt(real);
return a;
}
void input()//实数的输入函数
{
cout<<"请输入一个实数:"<<"";
cin>>real;
}
double output()//实数的输出函数
{
return real;
}
};
class Complex:public Simple
{
private:
double imag;
public:
Complex(){real=0.0;imag=0.0;}//构造函数
Complex(double r,double i){real=r;imag=i;}//构造函数void setnumber()//复数的输入函数
{
cout<<"请输入一个复数的实部:"<<"";
cin>>real;
cout<<"请输入一个复数的虚部:"<<"";
cin>>imag;
}
Complex operator+(Complex &c2)//重载"+"用于两复数相加{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
Complex operator-(Complex &c2)//重载"-"用于两复数相减
{
Complex c;
c.real=real-c2.real;
c.imag=imag-c2.imag;
return c;
}
Complex operator*(Complex &c2)//重载"*"用于两复数相乘
{
Complex c;
c.real=real*c2.real-imag*c2.imag;
c.imag=real*c2.imag+imag*c2.real;
return c;
}
Complex operator/(Complex &c2)//重载"/"用于两复数相除
{
Complex c;
c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
return c;
}
double qumo()//一个复数取模函数
{
double a;
a=sqrt(real*real+imag*imag);
return a;
}
Complex pf()//一个复数的平方函数
{
Complex c;
c.real=real*real-imag*imag;
c.imag=2*real*imag;
return c;
}
Complex gonge()//一个复数的共轭复数函数
{
Complex c;
c.real=real;
c.imag=0-imag;
return c;
}
double xiangliangjiao()//单个复数的向量角函数
{
double a;
a=atan(imag/real)*57.295;
return a;
}
double jiajiao(Complex &c2)//两个复数的夹角函数
{
double a;
a=fabs((atan(imag/real))*57.295-(atan(c2.imag/c2.real))*57.295);
return a;
}
friend ostream&operator<<(ostream&output,Complex&c)//重载"<<"用于复数的输出
{
output<<c.real;
if(c.imag>=0)output<<"+";
output<<c.imag<<"i"<<endl;
return output;
}
};
int main()
{
Simple s1,s2;
Complex c1,c2;
int a,b;
cout<<"【欢迎使用复数运算器】"<<endl;
gg: cout<<"请输入0或1或2"<<endl;
cout<<"【0】退出复数计算器;"<<endl;
cout<<"【1】进行实数相关运算;"<<endl;
cout<<"【2】进行复数相关运算:"<<"";
cin>>a;
if(a==1)
{
cout<<"1.相加 2.相减 3.相乘 4.相除(两个实数间的运算)"<<endl;
cout<<"5.自加 6.自减 7.平方 8.二次方根(一个实数的运算)
"<<endl;
cout<<"输入数字1-8进行选择:"<<"";
cin>>b;
if(b==1||b==2||b==3||b==4)
{
cout<<"请输入2个实数:"<<""<<""<<endl;
s1.input();
s2.input();
cout<<"第1个实数是:"<<s1.output()<<endl;
cout<<"第2个实数是:"<<s2.output()<<endl;
switch(b)
{
case 1:cout<<"相加结果是:"<<s1.jia(s2)<<endl;break;
case 2:cout<<"相减结果是:"<<s1.jian(s2)<<endl;break;
case 3:cout<<"相乘结果是:"<<s1.cheng(s2)<<endl;break;
case 4:cout<<"相除结果是:"<<s1.chu(s2)<<endl;break;
default:cout<<"error"<<endl;break;
}
cout<<endl;
}
if(b==5||b==6||b==7||b==8)
{
cout<<"请输入1个实数:"<<""<<endl;
s1.input();
cout<<"输入的实数是:"<<s1.output()<<endl;
switch(b)
{
case 5:cout<<"自加结果是:"<<s1.zijia()<<endl;break;
case 6:cout<<"自减结果是:"<<s1.zijian()<<endl;break;
case 7:cout<<"平方结果是:"<<s1.pingfang()<<endl;break;
case 8:cout<<"二次方根是:"<<s1.kaifang()<<endl;break;
default:cout<<"error"<<endl;break;
}
cout<<endl;
}
goto gg;
}
if(a==2)
{
cout<<"1.相加 2.相减 3.相乘 4.相除 5.两个复数的夹角(两个复数间的运算)"<<endl;
cout<<"6.取模 7.平方 8.一个复数的向量角 9.共轭复数(一个复数的运算)"<<endl;
cout<<"输入数字1-9进行选择:"<<"";
cin>>b;
if(b==1||b==2||b==3||b==4||b==5)
{
cout<<"请输入2个复数:"<<""<<""<<endl;
c1.setnumber();
c2.setnumber();
cout<<"第1个复数是:"<<c1;
cout<<"第2个复数是:"<<c2;
switch(b)
{
case 1:cout<<"相加结果是:"<<c1+c2<<endl;break;
case 2:cout<<"相减结果是:"<<c1-c2<<endl;break;
case 3:cout<<"相乘结果是:"<<c1*c2<<endl;break;
case 4:cout<<"相除结果是:"<<c1/c2<<endl;break;
case 5:cout<<"这两个复数的夹角是:"<<c1.jiajiao(c2)<<"°
"<<endl;break;
default:cout<<"error"<<endl;break;
}
cout<<endl;
}
if(b==6||b==7||b==8||b==9)
{
cout<<"请输入1个复数:"<<""<<endl;
c1.setnumber();
cout<<"输入的复数是:"<<c1;
switch(b)
{
case 6:cout<<"取模结果是:"<<c1.qumo()<<endl;break;
case 7:cout<<"平方结果是:"<<c1.pf()<<endl;break;
case 8:cout<<"该复数的向量角是:"<<c1.xiangliangjiao()<<"°"<<endl;break;
case 9:cout<<"该复数的共轭复数是:"<<c1.gonge()<<endl;break;
default:cout<<"error"<<endl;break;
}
cout<<endl;
}
goto gg;
}
if(a==0)
{
cout<<"【谢谢使用!按任意键后,您将退出复数计算器】"<<endl;
exit(0);
}
}。

相关文档
最新文档