}
结果
及
分析
日
(1)程序运行结果如图所示:
分析:
输入:
28167493102211
冒泡法(升序)排序:
23478910101116
选择法(降序)排序:
16111010987432
擂台法(升序)排序:
23478910101116
(2)程序运行结果如图所示:
分析:
输入:
x=3
输出:
sinx=0.0910714
收获
及
体会
收获:
本次实验我的目的在于初步掌握函数的定义方法,及函数的三种调用方法;同时理解参数传送过程中,值传送与传地址的过程与区别;初步学会用递归编写程序方法;学会用数组作为函数参数的编程方法。
在本次学习中我先编写了实验程序,然后在VC++运行环境中,输入源程序,编译运行源程序,并输入测试数据进行程序测试,经过运行测试后程序运行的结果就是我预期中的结果。
体会:
在实验过程中遇到了很多问题,但是通过和同学们的互相讨论及向老师提问,我逐步解决了这些问题。
教师
评语
实验三
类和对象
实验
目的
通过本次实验
(1)掌握类与对象的定义与使用方法;
(2)初步掌握构造函数、拷贝构造函数的定义与使用方法;
(3)初步掌握析构函数的定义与使用方法;
(4)理解构造函数与析构函数的调用过程。
实验
准备
(1)编写实验程序;
(2)在VC++运行环境中,输入源程序;
(3)编译运行源程序;
(4)输入实验测试数据,写出运行结果。
实验
过程
1实验内容:
(1)定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。
用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。
用公有成员函数Dispaly()显示复数c1、c2与c3的内容。
(2)定义一个学生成绩类Score,描述学生成绩的私有数据成员为学号(No)、姓名(Name[8])、数学(Math)、物理(Phi)、数据结构(Data)、平均分(ave)。
定义能输入学生成绩的公有成员函数Write(),能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。
在主函数中用Score类定义学生成绩对象数组s[3]。
用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。
(3)定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。
用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。
在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。
然后调用Show()显示矩形左上角与右下角坐标及对角线长度。
最后用delete运算符回收为矩形动态分配的存储空间。
2程序:
(1)#include
classComplex
{private:
floatReal,Image;
public:
Complex(floatr,floati)//定义有参构造函数
{Real=r;
Image=i;}
Complex(Complex&c)//定义拷贝构造函数
{Real=c.Real;
Image=c.Image;
}
Complex()//定义无参构造函数
{Real=0;
Image=0;
}
voidDisplay()
{cout<voidmain(void)
{Complexc1(10,20),c2,c3(c1);
c1.Display();
c2.Display();
c3.Display();}
(2)#include
#include
classScore
{private:
intNo;
charName[8];
floatMath,Phi,Data,Ave;
public:
voidWrite(intno,charname[],floatmath,floatphi,floatdata)
{No=no;
strcpy(Name,name);
Math=math;
Phi=phi;
Data=data;}
voidAverage(void)
{Ave=(Math+Phi+Data)/3;}
voidDisplay()
{cout<cout<voidmain(void)
{inti,no;
charname[8];
floatmath,phi,data;
Scores[3];
cout<<"Input3studentdata"<<'\n';
for(i=0;i<3;i++)
{
cin>>no>>name>>math>>phi>>data;
s[i].Write(no,name,math,phi,data);
s[i].Average();}
cout<<"学号姓名数学物理数据结构平均分\n";
for(i=0;i<3;i++)
s[i].Display();}
(3)#include
#include
classRectangle
{protected:
floatLeft,Top;
floatRight,Bottom;
public:
Rectangle(floatl,floatt,floatr,floatb)
{Left=l;Top=t;
Right=r;Bottom=b;}
Rectangle(Rectangle&R)
{Left=0;Top=0;
Right=R.Right;Bottom=R.Bottom;}
doubleDiagonal()
{returnsqrt((Left-Right)*(Left-Right)+(Top-Bottom)*(Top-Bottom));}
voidShow()
{cout<<"(Left,Top)=("<cout<<"Diagonal="<voidmain(void)
{Rectangle*r1=newRectangle(10,10,20,20);
r1->Show();
deleter1;}
结果
及
分析
日
(1)程序运行结果如图所示:
分析:
定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。
用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。
用公有成员函数Dispaly()显示复数c1、c2与c3的内容。
(2)程序运行结果如图所示:
分析:
定义了一个学生成绩类Score,描述学生成绩的私有数据成员为学号(No)、姓名(Name[8])、数学(Math)、物理(Phi)、数据结构(Data)、平均分(ave)。
能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。
在主函数中用Score类定义学生成绩对象数组s[3]。
用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。
(3)程序运行结果如图所示:
分析:
定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。
用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。
在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。
然后调用Show()显示矩形左上角与右下角坐标及对角线长度。
最后用delete运算符回收为矩形动态分配的存储空间。
运行结果如图所示。
收获
及
体会
收获:
通过本次实验我掌握了类与对象的定义与使用方法;初步掌握构造函数、拷贝构造函数的定义与使用方法;初步掌握析构函数的定义与使用方法;理解构造函数与析构函数的调用过程。
体会:
在实验中遇到了一些问题,但通过自己查找书籍,仔细查找,均一一解决。
教师
评语
实验四
数组与指针
实验
目的
通过本次实验
(1)掌握一维、二维数组指针变量的定义格式与引用方法;
(2)掌握字符串指针变量的定义格式与引用方法;
(3)学会用数组指针变量完成数组元素的数据处理,如求和、求最大值、最小值等;
(4)学会用字符串指针变量处理字符串的比较、连接与测长度;
(5)掌握指针与数组作为函数参数的程序编写方法。
实验
准备
(1)编写实验程序
(2)在VC++运行环境中,输入源程序;
(3)编译运行源程序;
(4)输入测试数据进行程序测试;
(5)写出实验输入数据与运行结果。
实验
过程
1.实验内容
(1)编写程序,用4种方式求整型一维数组a[10]的平均值。
4种方式是指4种不同的数组元素表达方式。
(2)
(2)编写程序,用表7.1中的数组元素表示法中的第一种求实型二维数组a[3][3]两条对角线元素之和。
(3)用指针变量编写下列字符串处理函数:
●字符串拼接函数,voidstr_cat(char*p1,char*p2){函数体}
●字符串比较函数,intstr_cmp(char*p1,*char*p2){函数体}
●取字符串长度函数,intstr_len(char*p){函数体}
在主函数中输入两个字符串,对这两个字符串进行比较,并输出比较结果。
然后将两个字符串进行拼接,输出拼接后的字符串及其长度。
2.程序
(1)#include
#defineN10
voidmain(void)
{floata[N],sum,*p;
cout<<"Inputdata:
";
for(p=a;pcin>>*p;
for(p=a,sum=0;psum=sum+*p;
cout<<"average="<}
(2)#include
voidmain(void)
{floata[3][3],sum=0;
inti,j;
cout<<"InputData:
\n";
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>*(a[i]+j);//用行首地址+位移,即a[i]+j
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j||i+j==2)
sum+=*(a[i]+j);
cout<<"sum="<}
(3)#include
intstr_cmp(char*p1,char*p2)
{while(*p1==*p2)
{p1++;
p2++;
}
if(*p1>*p2)
return1;
elseif(*p1==*p2)
return0;
else
return-1;
}
voidstr_cat(char*p1,char*p2)
//将p2所指的字符串连接到p1所指的字符串串末尾
{while(*p1++);
p1--;
while(*p2!
=0)
*p1++=*p2++;
*p1=0;
}
intstr_len(char*p)
{intlength=0;
while(*p!
=0)
{p++;
length++;
}
returnlength;
}
voidmain(void)
{chars1[20],s2[40];
cout<<"InputString1:
\n";
cin>>s1;
cout<<"InputString2:
\n";
cin>>s2;
if(str_cmp(s1,s2)==1)
cout<<"String1>String2"<elseif(str_cmp(s1,s2)==-1)
cout<<"String2else
cout<<"String1=String2"<str_cat(s1,s2);
cout<<"String1+String2="<cout<<"String1Length="<}
结果
及
分析
日
程序运行结果如图所示:
分析:
编写程序,用4种方式求整型一维数组a[10]的平均值。
4种方式是指4种不同的数组元素表达方式。
编写程序,用表7.1中的数组元素表示法中的第一种求实型二维数组a[3][3]两条对角线元素之和。
用指针变量编写下列字符串处理函数:
字符串拼接函数,voidstr_cat(char*p1,char*p2){函数体};字符串比较函数,intstr_cmp(char*p1,*char*p2){函数体};取字符串长度函数,intstr_len(char*p){函数体}。
在主函数中输入两个字符串,对这两个字符串进行比较,并输出比较结果。
然后将两个字符串进行拼接,输出拼接后的字符串及其长度如图所示。
收获
及
体会
收获:
通过本次实验的三个小练习,我熟练掌握了一维、二维数组指针变量的定义格式与引用方法;字符串指针变量的定义格式与引用方法;学会用数组指针变量完成数组元素的数据处理,如求和、求最大值、最小值等;学会用字符串指针变量处理字符串的比较、连接与测长度;掌握指针与数组作为函数参数的程序