}
5#include
voidmain()
{
inta[30],i,j=0,b[6][5],p,k;
intc[6];
for(i=0;i<30;i++)
a[i]=2*(i+1);
for(i=0;i<30;i++)
{
printf("%3d",a[i]);
j++;
if(j%5==0)printf("\n");}
for(p=0;p<5;p++)
for(k=0;k<6;k++)
b[k][p]=a[5*k+p];
for(k=0;k<6;k++)
c[k]=(b[k][0]+b[k][1]+b[k][2]+b[k][3]+b[k][4])/5;
for(k=0;k<6;k++)
{printf("%3d",c[k]);}
printf("\n");
}
实验结果:
2
}
5
实验心得:
通过本次实验熟悉和理解C++语言中的类型简单数据(整型、实型、字符型)、运算、表达式;掌握常见格式控制字符对输出结果的控制作用;能利用学习的数据类型,编制简单的C++程序;初步学习调试方法。
实验三函数的应用
实验名称:
实验三函数与作用域
实验目的:
1.掌握函数声明、定义和使用的方法;
2.掌握形式参数与实在参数之间的对应关系;
3.掌握函数调用时,形参、实参之间的“值传递”和“地址传递”的区别;
4.掌握全局变量、局部变量、静态变量的使用方法。
实验原理:
利用函数的知识编程。
实验设备:
电脑,VISUALC++6.0
实验内容:
1.编写一个函数,用来计算从键盘上输入的整数的阶乘。
2.编写函数判断一个数是否是素数,在主程序中实现输入、输出。
3.编写一个程序,设计一个函数可以计算并返回输入的4个数的平均值。
实验代码:
1.#include
voidmain()
{
intm,i,sum=1;
cin>>m;
for(i=m;i>0;i--)
{
sum*=i;
}
cout<<"sum="<}
2.
#include
#include
intfun(intnum)
{
intflag,k,i;
flag=0;
k=int(sqrt(num));
for(i=2;i<=k;i++)
{
if(num%i==0)
{
flag=1;
break;
}
}
returnflag;
}
voidmain()
{
intx,y;
cin>>x;
y=fun(x);
if(y==0)
cout<<"theyinputnumissushu"<else
cout<<"theyinputnumisnotsushu"<}
3.
#include
#include
floatfun(floata,floatb,floatc,floatd)
{
floatsum=0.0;
floatx=a+b+c+d;
sum=x/4;
returnsum;
}
voidmain()
{
floata,b,c,d;
floatm;
cin>>a;
cin>>b;
cin>>c;
cin>>d;
m=fun(a,b,c,d);
cout<<"average="<}
实验结果:
1
2
3
实验心得:
通过本次实验掌握了函数声明、定义和使用的方法;掌握了形式参数与实在参数之间的对应关系;掌握函数调用时,形参、实参之间的“值传递”和“地址传递”的区别;掌握了全局变量、局部变量、静态变量的使用方法。
实验四指针和引用
实验名称:
实验四指针和引用
实验目的:
1.熟练掌握指针、地址、指针类型、void指针、空指针、引用等概念;
2.熟练掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式;
3.学会使用数组的指针和指向数组的指针变量;
4.学会使用字符串的指针和指向字符串的指针变量;
5.学习用指针和引用给函数传递参数的方法。
实验原理:
利用C++指针技术编程。
实验设备:
电脑,VISUALC++6.0
实验内容:
1.用户输入任意一个字符串和字符c,寻找输入串中第一个c字符出现的位置(若有的话),并输出从c字符开始的子串以及c字符在输入串中的下标号;若输入串中不出现c字符的话,输出“nomatchfound”。
实验代码:
1#include
usingnamespacestd;
char*insert(char*s,charc,intn)
{
intlen=strlen(s);
if(n<=0){
char*p=s;
p=p+len+1;
do{
*p=*(--p);
}while(p>s);
(*p)=c;
}elseif(n>=len){
*(s+len)=c;
*(s+len+1)='\0';
}else{
char*p=s+len+1;
do{
*p=*(--p);
}while(p>s+n);
(*p)=c;
}
returns;
}
intmain()
{
charas[20]="thisisanExample.";
charc;
c=getchar();
cout<cout<insert(as,c,17);
cout<<"insert(as,c,17):
"<cout<insert(as,c,6);
cout<<"insert(as,c,6):
"<cout<insert(as,c,0);
cout<<"insert(as,c,0):
"<cout<}
实验结果:
实验心得:
通过本次实验熟练掌握了指针、地址、指针类型、void指针、空指针、引用等概念;熟练掌握了指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式;学会使用数组的指针和指向数组的指针变量;学会使用字符串的指针和指向字符串的指针变量;学习用指针和引用给函数传递参数的方法
实验五类与对象I
实验名称:
实验五类和对象Ⅰ
实验目的:
1.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;
2.掌握构造函数和析构函数的含义与作用、定义方式和执行过程,能够根据要求正确定义和重载构造函数;
3.学习静态数据成员和静态成员函数的使用。
实验原理:
利用类的成员、构造函数、析构函数、类的封装等特性进行编程。
实验设备:
电脑,VISUALC++6.0
实验内容:
1.定义一个长方形类, 并且在程序中创建一个该类的对象, 体现出构造函数、析构函数的调用、执行过程和重载构造函数的使用。
2.设计一个矩阵类matrix(矩阵用二维数组实现), 有分配空间和对矩阵附值的功能。
要求:
(1)类外定义一个函数mul(), 实现两矩阵的相乘,要求分别用传值调用、引用调用和传址调用三种方式实现。
(2)在matrix类中定义一个静态数据成员, 记录当前的所有matrix对象的数量。
(3)定义一个友元函数实现矩阵转置功能。
实验代码:
#include
usingnamespacestd;
classcmatrix23
{
private:
inta[2][3];
public:
cmatrix23operator+(constcmatrix23&mat);
friendostream&operator<<(ostream&os,constcmatrix23&mat);
friendistr
eam&operator>>(istream&is,cmatrix23&mat);
};
cmatrix23cmatrix23:
:
operator+(constcmatrix23&mat)
{
cmatrix23tmp;
for(inti=0;i<2;++i)
{
for(
intj=0;j<3;++j)
{
tmp.a[i][j]
=this->a[i][j]+mat.a[i][j];
}
}
returntmp;
}
ostream&operator<<(ostream&os,constcmatrix23&mat)
{
for(inti=0;i<2;++i)
{
for(
intj=0;j<3;++j)
{
os<}
os<}
returnos;
}
istream&operator>>(istream&is,cmatrix23&mat)
{
for(inti=0;i<2;++i)
{
for(
intj=0;j<3;++j)
{
cout<<"请输入第"<
";
is>>mat.a[i][j];
}
}
returnis;
}
intmain()
{
cmatrix23mat1;
cin>>mat1;
cout<cmatrix23mat2;
cin>>mat2;
cout<cout<return0;
}
(2)#include
usingnamespacestd;
classcomplex{
public:
doublereal;
doubleimage;
complex(){real=0,image=0;};
complex(doublek,doublex);
voiddisplay();
complexoperator+(complex&p);
complexoperator-(complex&y);
complexoperator*(complex&p);
complexoperator/(complex&p);
};
complex:
:
complex(doublek,doublex):
real(k),image(x){}
complexcomplex:
:
operator+(complex&p)
{
complexc;
c.real=real+p.real;
c.image=image+p.image;
returnc;
}
complexcomplex:
:
operator-(complex&y)
{
complexc;
c.real=real-y.real;
c.image=image-y.image;
returnc;
}
complexcomplex:
:
operator*(complex&p)
{
complexc;
c.real=real*p.real;
c.image=image*p.image;
returnc;
}
complexcomplex:
:
operator/(complex&p)
{
complexc;
c.real=real/p.real;
c.image=image/p.image;
returnc;
}
voidcomplex:
:
display()
{cout<<"("<intmain()
{
complexc1(7,8),c2(2,9),c3;
c3=c1+c2;
cout<<"c1+c2";
c3.display();
c3=c1-c2;
cout<<"c1-c2";
c3.display();
c3=c1*c2;
cout<<"c1*c2";
c3.display();
c3=c1/c2;
cout<<"c1/c2";
c3.display();
return0;
}
(3)#include
usingnamespacestd;
classM
{public:
M();
friendMoperator+(M&,M&);
voidinput();
voiddisplay();
private:
intmat[2][3];
};
Ma:
:
M()
{for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
mat[i][j]=0;
}
Moperator+(M&a,M&b)
{Mc;
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
{c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}
returnc;
}
voidM:
:
input()
{cout<<"inputvalueofm:
"<for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
cin>>mat[i][j];
}
voidM:
:
display()
{for(inti=0;i<2;i++)
{for(intj=0;j<3;j++)
{cout<cout<}
intmain()
{Ma,b,c;
a.input();
b.input();
cout<"<a.display();
cout<"<b.display();
c=a+b;
cout<"<c.display();
return0;
}
实验结果:
实验心得:
通过本实验理解了类的成员的访问控制的含义,公有、私有和保护成员的区别;.掌握构造函数和析构函数的含义与作用、定义方式和执行过程,能够根据要求正确定义和重载构造函数;学习静态数据成员和静态成员函数的使用。
实验六继承与派生
实验名称:
实验六继承与派生
实验目的:
1.理解派生类与基类的关系
2.理解派生类继承方式
3.掌握单继承和多继承使用方法
4.理解虚基类概念
实验原理:
利用继承与派生的原理进行编程。
实验设备:
电脑,VISUALC++6.0
实验内容:
1.编一个使用派生类的程序,设计一个包含圆和圆柱的几何尺寸的类,它用内部数据建立几何形状并显示它们的尺寸、面积和体积。
2.设计一个圆类和桌子类,再设计一个圆桌类,它是从前两个类派生出来的。
要求输出圆桌的高度、面积、颜色等数据。
实验代码:
1#include