C++实验报告.docx
《C++实验报告.docx》由会员分享,可在线阅读,更多相关《C++实验报告.docx(37页珍藏版)》请在冰豆网上搜索。
![C++实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/31/2b0fdb49-f6eb-4af6-b74b-a264e70674a7/2b0fdb49-f6eb-4af6-b74b-a264e70674a71.gif)
C++实验报告
年级
2014级
班号
学号
专业
软件工程
姓名
实验名称
一、I/OStream应用、文件操作
实验
类型
设计型
综合型
创新型
√
实
验
目
的
或
1.了解C++在非面向对象方面对C功能的扩充与增强;
2.掌握C++格式化的输入输出方法;
3.掌握文件的输入输出方法操作。
实
验
原
理
(
算
法
流
程
图
或
者
含
注
释
的
源
代
码
)
实验题目:
1、基础题:
教材P47第2.24、2.25题;P325第7.13题
2、提高题:
写程序计算一门课程的成绩(满分100)。
这门课的记录包含在一个名为in.txt的文件中,该文件将将用作程序的输入文件。
输入文件严格遵循以下格式:
每一行顺序包含一名学生的姓氏、一个空格、学生名字、又一个空格,最后是学生10次测验的分数(int类型,且全部包含在一行中)。
每个分数以空格分隔。
程序从这个文件读取输入,将输出发送到另一个文件(文件名为out.txt)。
输出文件中的数据比输入文件中的数据各行末尾多一个平均分(该学生10次测验的平均分,double类型)。
2.24.一元硬币换成1,2,5分硬币
#include
#include
usingnamespacestd;
intmain()
{
inta,b,c,S,i=0,sum=100,o=1,t=2,f=5;
for(a=0;a<=(sum/o);a++)
{
for(b=0;b<=(sum/t);b++)
{
for(c=0;c<=(sum/f);c++)
{
S=a*o+b*t+c*f;
if(S==sum)
{
cout<(2)<
<(2)<i++;
}
}
实
验
结
果
分
析
及
心
得
体
会
}
}
cout<<"1元兑换成1、2、5分总共有"<
system("pause");
return0;
}
实验结果
100=26*1+37*2+0*5
100=27*1+4*2+13*5
100=27*1+9*2+11*5
......
100=96*1+2*2+0*5
100=98*1+1*2+0*5
100=100*1+0*2+0*5
1元兑换成1、2、5分总共有541种方法
2.25。
输入两个整数,由小到大输出
#include
usingnamespacestd;
intmain()
{
inta,b;
int&m=a,&n=b;
cout<<"输入两个整数:
";
cin>>a>>b;
cout<<"由小到大输出:
";
(a>b)?
(cout<(cout<system("pause");
return0;
}
实验结果
输入两个整数:
9865
由小到大输出:
6598
7.13.小写字母转换成大写字母
#include
#include
usingnamespacestd;
intmain()
{
fstreamin("file1.txt",ios:
:
in);
if(!
in){
cout<<"Erroropenfile1"<return1;
}
fstreamout("file2.txt",ios:
:
out);
if(!
out){
cout<<"Erroropenfile2"<return2;
}
charch;
while(in.get(ch)){
if(ch>='a'&&ch<='z')
{
ch=ch-32;
out.put(ch);
}
elseout.put(ch);
//cout<}
in.close();
out.close();
system("pause");
return0;
}
提高题
#include
#include
#include
usingnamespacestd;
structstudent{
stringX,M;
intscore[10];
};
intmain(){
fstreamin("in.txt",ios:
:
in);
if(!
in){
cout<<"Erroropenfile1;"<return1;
}
fstreamout("out.txt",ios:
:
out);
if(!
in){
cout<<"Erroropenfile2;"<return2;
}
studentstu[4];
for(inti=0;i<4;i++){
intsum=0;
doubleavg=0.0;
in>>stu[i].X>>stu[i].M;
out<for(intj=0;j<10;j++){
in>>stu[i].score[j];
out<<""<sum+=stu[i].score[j];
//while(in.eof())break;
}
avg=sum/10.0;
out<<""<}
in.close();
out.close();
return0;
}
实验结果:
欧阳浩辰45646465595.4
上官北45656265965.4
季微然42566556424.5
李维58545864655.6
成
绩
评
定
教师签名:
年月日
年级
2014级
班号
学号
专业
软件工程
姓名
实验名称
二、类与对象设计、友元函数与运算符重载
实验
类型
设计型
综合型
创新型
√
实
验
目
的
或
要
求
1.理解和对象的概念,掌握声明类和定义对象的方法;
2.掌握构造函数和析构函数的实现方法;
3.掌握对象数组、对象指针和string类的使用方法;
4.掌握静态数据成员和静态成员函数的使用方法;
5.理解友元的概念和掌握友元的使用方法。
实验题目:
1、基础题:
教材P134第3.32、3.33、3.34题
2、提高题:
教材P134第3.35、3.36题
3、选做题:
参考第3.32题,建立类球体类Sphere和正方体类Cube,要求能够计算球体、正方体的体积。
3.32圆柱体积
#include
usingnamespacestd;
classcylinder{
private:
doubler;
doubleh;
public:
cylinder(doublei,doublej)
{r=i;
h=j;
}
doublevol()
{doubleV;
constdoublePI=3.14;
V=PI*r*r*h;
returnV;
}
};
intmain()
{
cylinderA(1.1,2.2);
cout<<"圆柱体积:
"<return0;
}
实验结果:
圆柱体积:
8.35868
3.33显示qu*price
#include
usingnamespacestd;
classbook{
private:
intqu,price;
public:
book(inti)
{
qu=i;
price=10*qu;
}
intshow()
{
returnprice*qu;
}
};
intmain()
{
bookA[5]={1,2,3,4,5};
for(inti=0;i<5;i++)
{
cout<}
return0;
}
实验结果:
104090160250
3.34显示qu*price(对象数组)
#include
usingnamespacestd;
classbook{
private:
intqu,price;
public:
book(inti)
{
qu=i;
price=10*qu;
}
intshow()
{
returnprice*qu;
}
};
intmain(){
book*pa;
bookA[5]={1,2,3,4,5};
pa=A+4;
for(inti=0;i<5;i++)
{cout<show()<<"";
pa--;
}
return0;
}
实验结果:
250160904010
3.35.显示Stock的值
#include
usingnamespacestd;
classStock{
private:
charstockcode[10];
intquan;
doubleprice;
public:
Stock(charna[],intq=1000,doublep=8.98);
voidprint();
};
Stock:
:
Stock(charna[],intq,doublep)//类外定义,不带默认参数值
{
for(inti=0;i<10;i++)
{
stockcode[i]=na[i];
//while(stockcode[i]='\0')break;
}
quan=q;
price=p;
}
voidStock:
:
print()
{
for(inti=0;i<10;i++)
{
if(stockcode[i]=='\0')break;
cout<}
cout<<""<}
intmain(){
Stocksto1("600001",3000,5.67);
sto1.print();
Stocksto2("600001");
sto2.print();
return0;
}
实验结果
60000130005.67
60000110008.98
3.36学生成绩
#include
#include
usingnamespacestd;
classStudent{
private:
stringname;
stringstu_no;
floatscore;
staticintcount;
staticfloatsum;
staticfloatavg;
public:
Student(stringstr1,stringstu_no1,floatscore1);
voidshow();
voidshow_count_avg();
};
Student:
:
Student(stringstr1,stringstu_no1,floatscore1)
{
name=str1;
stu_no=stu_no1;
score=score1;
count++;
sum+=score1;
avg=sum/count;
}
voidStudent:
:
show()
{
cout<<"\n姓名:
"<cout<<"\n学号:
"<cout<<"\n成绩:
"<}
voidStudent:
:
show_count_avg()
{
cout<<"\n总人数:
"<cout<<"\n平均分:
"<cout<<"\n*******************************"<}
intStudent:
:
count=0;
floatStudent:
:
sum=0.0;
floatStudent:
:
avg=0.0;
intmain()
{
Studentstu1("里美","20140001",90);
stu1.show();
stu1.show_count_avg();
Studentstu2("欧浩","20140002",80);
stu2.show();
stu2.show_count_avg();
Studentstu3("网飞","20140003",75);
stu3.show();
stu3.show_count_avg();
return0;
}
实验结果:
姓名:
里美
学号:
20140001
成绩:
90
总人数:
1
平均分:
90
*******************************
姓名:
欧浩
学号:
20140002
成绩:
80
总人数:
2
平均分:
85
*******************************
姓名:
网飞
学号:
20140003
成绩:
75
总人数:
3
成绩:
81.6667
提高题:
求球和正方体体积
#include
usingnamespacestd;
constdoublePI=3.14;
classSphere{
public:
Sphere(doubler)
{
radius=r;
V_Sphere=4.0/3*PI*radius*radius*radius;
}
voidvol()
{
cout<<"Sphere'svolumeis:
"<}
private:
doubleradius,V_Sphere;
};
classCube{
public:
Cube(doubler)
{
radius=r;
V_Cube=radius*radius*radius;
}
voidvol()
{
cout<<"Cube'svolumeis:
"<}
private:
doubleradius,V_Cube;;
};
intmain()
{
SphereS(3.0);
CubeC(4.0);
S.vol();
C.vol();
return0;
}
实验结果:
Sphere'svolumeis:
113.04
Cube'svolumeis:
64
成
绩
评
定
教师签名:
年月日
年级
2014级
班号
学号
专业
软件工程
姓名
实验名称
三、派生类与继承
实验
类型
设计型
综合型
创新型
√
实
验
目
的
或
要
求
1.掌握派生类的声明方法和派生类构造函数的定义;
2.掌握不同继承方式下,基类成员在派生类中的访问属性;
3.掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则;
4.学习虚基类在解决二义性问题中的作用。
实
验
原
理
(
算
法
流
程
图
或
者
含
注
释
的
源
代
码
)
实验题目:
1、基础题:
教材P196第4.20、4.21题
2、提高题:
教材P134第4.22题
3、选做题:
实验二选做题的加强版,设计一个图形类Shape作为父类,圆柱体类Cylinder、球体类Sphere和正方体类Cube为其子类,要求能够图形的体积。
4.20矩形,三角形面积(虚函数)
#include
usingnamespacestd;
classarea_cl{
protected:
doubleheight;
doublewidth;
public:
area_cl(doubler,doubles)
{
height=r;width=s;
}
virtualdoublearea()=0;
};
classrectangle:
publicarea_cl{
public:
rectangle(doubler,doubles):
area_cl(r,s)
{};
doublearea()
{returnheight*width;}
};
classisosceles:
publicarea_cl{
public:
isosceles(doubler,doubles):
area_cl(r,s)
{};
实
验
结
果
分
析
及
心
得
体
会
doublearea()
{
return0.5*height*width;
}
};
intmain()
{
area_cl*op;
rectangleor(10.0,5.0);
isoscelesoi(4.0,6.0);
op=∨
cout<<"rectangle'sareais:
"<area()<op=&oi;
cout<<"isosceles'sareais:
"<area()<return0;
}
实验结果:
rectangle'sareais:
50
isosceles'sareais:
12
4.22学生老师信息
#include
#include
usingnamespacestd;
classperson{
public:
person();
voidprint();
protected:
stringnum;
stringname;
};
classstudent:
publicperson{
protected:
intclass_num;
floatscore;
public:
student();
voidprint_stu();
};
classteacher:
publicperson{
protected:
stringjob;
stringsection;
public:
teacher();
voidprint_teh();
};
person:
:
person()
{
stringnum1;
stringname1;
cout<<"输入编号:
";
cin>>num1;
cout<<"输入姓名:
";
cin>>name1;
num=num1;
name=name1;
}
voidperson:
:
print()
{
cout<<"编号:
"<cout<<"姓名:
"<}
student:
:
student()
{
intclass_num1;
floatscore1;
cout<<"输入班号:
";
cin>>class_num1;
cout<<"输入成绩:
";
cin>>score1;
class_num=class_num1;
score=score1;
}
voidstudent:
:
print_stu()
{
cout<<"*****学生信息:
*****"<print();
cout<<"班号:
"<cout<<"成绩:
"<cout<}
teacher:
:
teacher()
{
stringjob1;
stringsection1;
cout<<"输入职称:
";
cin>>job1;
cout<<"输入部门:
";
cin>>section1;
job=job1;
section=section1;
}
voidteacher:
:
print_teh()
{
cout<<"*****老师信息:
*****"<print();
cout<<"职称:
"<cout<<"部门:
"<cout<}
intmain()
{
studentstu;
stu.print_stu();
teacherteh;
teh.print_teh();
return0;
}
实验结果:
输入编号:
20140001
输入姓名:
偶偶
输入班号:
01
输入成绩:
96
*****学生信息:
*****
编号:
20140001
姓名:
偶偶
班号:
1
成绩:
96
输入编号:
0001
输入姓名:
大大