C++语言程序设计实验答案_数组、指针与字符串
c++数组、指针与字符串xiti答案

1.概念填空题1.1 数组定义时有3个要素:数组名、数组元素的类型和数组元素的个数。
按元素在数组中的位置进行访问,是通过下标进行的,称为直接或索引访问。
1.2 C++中的多维数组是嵌套定义的,即多维数组的基本定义是数组构成的数组,三维数组的元素是二维数组。
1.3 计算机内存是一维编址的,多维数组在内存中的存储必须转换为一维方式,C++多维数组在内存中的排列是行方式,即越低的下标变化快。
设数组a有m行n列,每个元素占内存u个字节,则a[i][j]的首地址为a[0][0]的地址+ (i*n+j)*u。
1.4数组名是整型常量,数组名赋给同类型的指针后,该指针是指向数组首元素的指针。
数组名在表达式中被转换为指向数组首元素的指针常量。
1.5每个对象都有一个指向自身的指针,称为this指针,通过使用它来确定其自身的地址。
该指针只能读,不能写。
1.6在C++中,对象访问成员所用的运算符是.,通过指针访问对象的成员所用的运算符是->。
1.7 当动态分配失败时,系统采用返回NULL来表示发生了异常。
如果new返回的指针丢失,则所分配的自由存储区空间将无法收回,称为内存泄漏。
这部分空间必须在计算机重启才能找回,这是因为无名对象的生命期为整个程序。
1.8默认复制构造函数只能完成对象成员的赋值,可能会造成重复释放,默认的析构函数可能会产生内存泄漏。
“=”运算也会产生对象重复释放。
因此我们需要自定义复制构造函数完成对象的深复制。
1.9 在用new运算符建立一个三维数组int 4*5*6,使用了3 个下标运算符,用delete运算符释放该数组时使用了 1 个下标运算符。
new返回的指针类型是int (*) [5]6]。
2 简答题2.1 用一维数组名作函数参数和用一维数组元素函数参数的含义是否相同?为什么2.2 指针变量与整型量的加减运算代表什么意义?2.3个指向普通变量的指针进行减运算是否有意义?为什么2.4什么是浅拷贝?什么是深拷贝?二者有何异同?何时必须自定义复制构造函数、析构函数,何时必须自定义=运算符中在函数, 自定义的复制构造函数、析构函数应该怎样设计?2.5从右往左解释int *(*(*pf)[5])(double *)中4个*的含义。
C语言-数组-实验题目及答案

实验六数组程序设计【实验目的】1、掌握使用一维数组编程方法2、掌握使用二维数组进行程序设计【实验内容】一、上机验证程序,并分析结果要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1、#include <stdio.h>int main(){ int a[ ]={1,2,3,4,5} , i, j, s=0 ;j = 1;for ( i = 4 ; i>=0 ; i--){s = s+ a[i] * j ;j = j * 10 ;}printf(" s= %d \n" , s );return 0;}二、程序改错题1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。
源代码如下,程序中存在错误,请将其改正。
#include <stdio.h>int main(){int a(10);/*定义数组*/int count,i;/* i循环变量 count 正数个数*/for(i=0;i<=10;i++){/*循环输入*/scanf("%d",a[i]);}count=1;for(i=0;i<=10;i++){/*查找正数*/if(a(i)>0)count++;}printf("数组中正数有:%d个\n",count);return 0;}三编写程序1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。
#include <stdio.h>#define N 30int main(){float score[N],sum=0,aver;int i;for(i=0;i<30;i++){scanf("%f",&score[i]);sum=sum+score[i];}aver=sum/30;printf("平均分为:%.2f\n",aver);for(i=0;i<N;i++)if(score[i]>aver)printf("%.2f ",score[i]);printf("\n");return 0;}2.编写程序:假设有13位评委参与评分工作。
实验5 数组、指针与字符串

实验五:数组、指针与字符串一、实验目的1.学习使用数组数据对象2.掌握指针的使用方法3. 理解深拷贝与浅拷贝的机制二、实验设备计算机,Windows操作系统,VC++6.0三、实验内容1.阅读下列程序分析其结果,理解指针与类成员函数的关系(1)lab5_1_1.cpp为点类Point-指向类的非静态成员的指针,补充完整程序,并体会输出结果#include <iostream>using namespace std;class Point //类的声明{ int X,Y,Z;public: //外部接口Point(int x=0, int y=0,int z=0) {X=x;Y=y;Z=z;} //构造函数int GetX() {return X;} //内联函数,返回Xint GetY() {return Y;} //内联函数,返回Yint GetZ() {return Z;} //内联函数,返回Z};int main() //主函数{ Point Obj(4,5,6); //声明对象ObjPoint *pObj=&Obj; //声明对象指针并初始化int ______________________ ; //声明成员函数指针并初始化,P_getx指向Getx()函数int ______________________ ; //声明成员函数指针并初始化,P_gety指向Gety()函数int ______________________ ; //声明成员函数指针并初始化,P_getz指向Getz()函数cout<<"The coordinate of X is:"<<(Obj.*p_GetX)()<<endl;//语句1:使用成员函数指针cout<<"The coordinate of Y is:"<<(pObj->GetY)()<<endl; //语句2:使用对象指针cout<<"The coordinate of Z is:"<<Obj.GetZ()<<endl; //语句3:使用对象名return 0;}(2)lab5_1_2.cpp为点类Point-指向类的静态数据成员的指针,补充完整程序,体会输出结果#include <iostream>using namespace std;class Point //类的声明{ int X,Y,Z;public: //外部接口//其它成员函数同上案例,这里略…Point(int x=0, int y=0,int z=0) {X=x;Y=y;Z=z;countP++;} //构造函数static int countP; //静态数据成员引用性说明};int Point::countP=0; //静态数据成员定义性说明int main(){ Point Obj1(4,5,6), Obj2(14,15,16); //声明对象int *count=__________________; //语句1:声明指向类的静态数据成员的指针cout<<"The number of the Objects is:"<<_________<<endl; //语句2:直接通过指针访问静态数据成员return 0;}(3)lab5_1_3.cpp为点类Point-指向类的静态函数成员的指针,补充完整程序,体会输出结果#include <iostream>using namespace std;class Point //类的声明{public: //外部接口//其它成员函数同上案例,这里略…Point(int x=0, int y=0,int z=0) {X=x;Y=y;Z=z;countP++;} //构造函数static int GetC() {return countP;} //静态函数成员private: //私有数据int X,Y,Z;static int countP; //静态数据成员引用性说明};int Point::countP=0; //静态数据成员定义性说明int main() //主函数{ ___________________________; //语句1:声明一个指向类的静态成员函数指针gc指向GetCPoint Obj(4,5,6), Obj2(14,15,16); //声明对象cout<<"The number of the Objects is:"<<gc()<<endl;//语句2:通过函数指针调用静态成员函数return 0;}2.阅读下列程序分析其结果,理解深拷贝与浅拷贝的问题(1)lab5_2_1.cpp为动态分配内存过程的深拷贝与浅拷贝的问题#include <iostream>using namespace std;int main(){ int *pi=new int(88),*qi; //声明两个整型指针变量cout<<"The address is as follows:"<<endl <<"pi="<<pi<<", qi="<<qi<<endl;//qi=new int;*qi=*pi; //语句1:浅拷贝delete pi;//delete qi; //错误:由于浅拷贝带来内存重复释放。
C 语言程序设计实验答案_数组、指针与字符串解析

实验06 数组、指针与字符串(4学时)(第6章数组、指针与字符串)一、实验目的二、实验任务6_1(习题6-25)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
6_2(习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方阵),使用指针实现函数的功能。
6_3 编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
6_4 使用string类声明字符串对象,重新实现上一小题。
6_5(习题6-27)声明一个Employee类。
其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。
6_6(习题6-27)声明包含5个元素的对象数组,每个元素都是Employee 类型的对象。
6_7 修改实验4中的people(人员)类。
具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
在测试程序中声明people类的对象数组,录入数据并显示。
三、实验步骤1.(编程,习题6-25)编写矩阵转置函数,输入参数为3×3整型数组。
使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入输出。
程序名:lab6_1.cpp。
参考运行结果:★程序及运行结果://lab6_1.cpp#include<iostream>using namespace std;void move(int matrix[][3]){int temp;for(int i=0;i<3;i++)for(int j=0;j<i;j++){temp=matrix[i][j];matrix[i][j]=matrix[j][i];matrix[j][i]=temp;}}void main(){int i,j,mat[3][3];cout<<"输入3×3矩阵"<<endl;for(i=0;i<3;i++){cout<<"第"<<i+1<<"行:";for(j=0;j<3;j++) cin>>mat[i][j];}cout<<"\n输入的3×3矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<mat[i][j]<<" ";cout<<endl;}move(mat);cout<<"转置后的矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<*(*(mat+i)+j)<<" ";//指针形式cout<<endl;}}2.(编程,习题6-26)编写n×n阶矩阵转置函数,参数为整型指针。
C语言实验报告 实验七 参考答案

实验七字符数组(参考答案)(1) 设计程序sy7-1.c,输入一个字符串,将其中的大写字母都改为对应的小写字母,其他字符不变。
例如,若输入"Ab,cD",则输出"ab,cd"。
算法分析:使用for循环遍历字符串,在遍历的过程中,如果该元素是大写字母时,能过str[i]=str[i]+32把大写字母置换成相应小写字母。
参考答案:#include<stdio.h>#include<string.h>void main(){char str[100];int i;printf("请输入一个字符串:");gets(str);for(i=0; str[i]!='\0' ; i++)if( str[i]>='A'&&str[i]<='Z' ) str[i]=str[i]+32 ;printf("输出转换后的字符串:%s\n",str);}运行结果:(2) 设计程序sy7-2.c,输入一个字符串,删除其中所有的小写字母'c'。
例如,若输入字符串"ac abc bcdef",则应输出字符串" a ab bdef"算法分析:在原字符数组中删除指定字符时,当遍历的字符不等于要删除的字符时,在原数组中赋值。
注意在赋值的时候,元素下标不同步,所以用j做为删除后的下标,并且是赋一个值,其下标自动加1,所以最后j的值为数组的长度,另外为了保证字符数组能正确输出,所以在最后要人为加一个\0参考答案:#include<stdio.h>#include<string.h>void main(){ int i,j=0;char str[20];printf("请输入一个字符串:");gets(str);for(i=0;str[i]!='\0';i++)if(str[i]!='c')str[j++]=str[i]; //将指定字符c删除str[j]= '\0'; //给删除字符后的字符串末尾加上结束标志printf("删除字符c之后的字符串是:%s\n" , str );}(3) 设计程序sy7-3.c,输入一个字符串,统计其中'a' 到'z' 26 个英文小写字母各自出现的次数。
C实验报告6参考答案

《高级语言程序设计》实验报告班级: 学号: 姓名: 成绩:实验6 数组程序设计一、实验目的1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2. 掌握字符数组和字符串函数的使用。
3. 掌握与数组有关的算法。
二、实验内容1(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>void main(){int n=10,i,sum=0;int a[n]; int a[10];for(i=0;i<10;i++){scanf("%d",a[i]); scanf("%d",&a[i]);sum=sum+a[i];}printf("sum=%d\n",sum);}(2)下列程序的功能为:将字符串b 连接到字符串a 。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>void main( ){ char a[]="wel",b[]="come"; char a[20]="wel",b[]="come";int i,n=0;while(!a[n]) n++; while(a[n] != '\0') n++;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];a[n+i]=’\0’;printf("%s\n",a);}(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>#define N 4#define M 4main(){for (i=0;i<N;i++)for (j=0;j<M;j++)scanf("%d",&a[i][j]);flag2=0;for (i=0;i<N;i++){max=a[j][0]; max=a[i][0];for (j=0;j<M;j++)if (a[i][j]>max) if (a[i][j]>=max){max=a[i][j];maxj=j;}for (k=0,flag1=1;k<N&&flag1;k++)if (max>a[k][maxj])flag1=0;if (flag1){printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if ( flag2) if (! flag2)printf("\nThere is no saddle point in the Matrix\n");}2.程序填空题(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。
实验八 指针与字符串

实验八指针与字符串实验目的掌握处理字符串的两种方法,即用char型数组来处理字符串或用char型指针来处理字符串。
要点提示1.在C语言中,对字符串常量是按字符数组处理的,在内存中开辟一块连续的空间存放字符串常量,理解为字符数组存放。
2.字符数组的每个元素只能存放一个字符。
3.字符数组的定义格式:char 数组名[];例:char str[20];4.字符指针的定义格式:char *指针变量;例:char *str;实验内容1.字符数组的定义、初始化和引用2.字符指针的定义、初始化和引用3.字符串指针作函数参数实验步骤读懂并输入程序,完成填空后输出结果,(下面程序中的中文注释可以不输入)实验1编程求一个字符串的长度, 用字符数组实现main(){ int len=0;char str[20], *p;printf("\nInput a string:");scanf("%s",str);p=str;while (*p!='\0'){ len++;【】; /* 字符串指针自增 */}printf("\nThe length is:%d",【】);}程序运行结果:Input a string: ChinaThe length is: 【】main(){int len=0;char str[20], *p;printf("\nInput a string:");scanf("%s",str);p=str;while (*p!='\0'){len++;p++; /* 字符串指针自增 */ }printf("\nThe length is:%d",len);}Input a string:ChinaThe length is:5Press any key to continue实验2main(){ char max, *s="I am a student";int n;max=*s;while (*s!='\0'){ if (*s > max) max=*s;【】;}printf("\nThe max character is: %c", max);}程序运行结果:The max character is: 【】main(){char max, *s="I am a student";int n;max=*s;while (*s!='\0'){if (*s > max)max=*s;s++;}printf("\nThe max character is: %c", max); }The max character is: uPress any key to continue实验3#include <stdio.h>#include <string.h>main(){ char s[81],*p1,*p2;int n;pirntf("\nInput a string:");gets(s);n=strlen(s);p1=s;p2 = 【】;while (【】){ if (*p1!=*p2) break;else { p1++; 【】;}}if (p1<p2) printf("No\n");else printf("Yes\n");}程序运行结果:Input a string: level【】再次运行程序:Input a string: 123453【】#include <stdio.h>#include <string.h>main(){char s[81],*p1,*p2;int n;printf("\nInput a string:");gets(s);n=strlen(s);p1=s;p2 =s+n-1;while (p1<p2){if (*p1!=*p2)break;else{p1++;p2--;}}if (p1<p2)printf("No\n");elseprintf("Yes\n");}Input a string:levelYesPress any key to continueInput a string:123453NoPress any key to continue实验4main(){ char s1[80],s2[80];printf("\nInput a string:");gets(s1);printf("\nInput a string:");gets(s2);conj(s1,s2);puts(s1);}conj(char *p1,char *p2){char *p=p1;while (*p1!='\0') 【 ; 】while (*p2 !='\0') { *p1=【】; p1++;p2++;} *p1='\0';}Input a string: BeiInput a string: jing【】main(){char s1[80],s2[80];printf("\nInput a string:");gets(s1);printf("\nInput a string:");gets(s2);conj(s1,s2);puts(s1);}conj(char *p1,char *p2){char *p=p1;while (*p1!='\0')p1++;while (*p2 !='\0'){*p1=*p2;p1++;p2++;}*p1='\0';}Input a string:beiInput a string:jingbeijingPress any key to continue。
C实验报告答案

C程序设计初步一、实验目的(1) 熟悉C语言程序的运行环境(VC++ 。
(2) 掌握C语言程序的上机步骤,了解运行C程序的方法。
(3) 掌握C语言程序的书写格式和C语言程序的结构。
二、实验内容(均要求给出运行结果)1.程序改错题(1) 以下程序实现计算x×y的值并将结果输出。
请改正程序中的错误。
#include ""void main()/**********FOUND**********/{ int x=y=4;z=x*y;/**********FOUND**********/printf("z=%d/n", Z);}答案:=======(答案1)=======int x=,4,y=4,z;=======(答案2)=======printf("z=%d\n", z);(2) 以下程序实现输入圆的半径,求圆的周长。
请改正程序中的错误。
#include ""void main(){ int r;float l;printf("Enter r:");scanf("%d", &r);/**********FOUND**********/l=2πr/**********FOUND**********/printf("l=%d\n",l);}答案:=======(答案1)=======l=2**r;=======(答案2)=======printf("l=%f\n", l);2.程序填空题(1) 下面程序能对两个整型变量的值进行交换,请填空。
#include ""void main(){ int a=3,b=4,t;t=a;/***********SPACE***********/【】;/***********SPACE***********/【】;printf("a=%d,b=%d\n",a,b);}答案:=======(答案1)=======a=b=======(答案2)=======b=t(2) 下面程序不用第三个变量,实现两个数的对调操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验06 数组、指针与字符串(4学时)(第6章数组、指针与字符串)一、实验目的二、实验任务6_1(习题6-25)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
6_2(习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方阵),使用指针实现函数的功能。
6_3 编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
6_4 使用string类声明字符串对象,重新实现上一小题。
6_5(习题6-27)声明一个Employee类。
其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。
6_6(习题6-27)声明包含5个元素的对象数组,每个元素都是Employee 类型的对象。
6_7 修改实验4中的people(人员)类。
具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
在测试程序中声明people类的对象数组,录入数据并显示。
三、实验步骤1.(编程,习题6-25)编写矩阵转置函数,输入参数为3×3整型数组。
使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入输出。
程序名:lab6_1.cpp。
参考运行结果:★程序及运行结果://lab6_1.cpp#include<iostream>using namespace std;void move(int matrix[][3]){int temp;for(int i=0;i<3;i++)for(int j=0;j<i;j++){temp=matrix[i][j];matrix[i][j]=matrix[j][i];matrix[j][i]=temp;}}void main(){int i,j,mat[3][3];cout<<"输入3×3矩阵"<<endl;for(i=0;i<3;i++){cout<<"第"<<i+1<<"行:";for(j=0;j<3;j++) cin>>mat[i][j];}cout<<"\n输入的3×3矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<mat[i][j]<<" ";cout<<endl;}move(mat);cout<<"转置后的矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<*(*(mat+i)+j)<<" ";//指针形式cout<<endl;}}2.(编程,习题6-26)编写n×n阶矩阵转置函数,参数为整型指针。
使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。
通过调试功能观察指针的内容及其所指的对象中的内容。
程序名:lab6_2.cpp。
注:可使用一维动态数组,或二维动态数组。
★程序及运行结果:(1) 使用一维动态数组表示方阵。
//lab6_2.cpp#include<iostream>#include<iomanip>using namespace std;void move(int *matrix,int n){//矩阵为整型指针,对应一维数组int temp;(2) 使用二维动态数组表示方阵。
(参考实验提示)//lab6_2.cpp#include<iostream>#include<iomanip>using namespace std;void move(int **matrix,int n){//矩阵为指向整型指针的指针,对应二维数组int temp;for(int i=0;i<n;i++)for(int j=0;j<i;j++){temp=matrix[i][j];matrix[i][j]=matrix[j][i];matrix[j][i]=temp;}}void main(){int i,j,n,**mat;cout<<"输入方阵的阶数:";cin>>n;mat=new int*[n];for(i=0;i<n;i++) mat[i]=new int[n];cout<<"输入"<<n<<"×"<<n<<"矩阵"<<endl;for(i=0;i<n;i++){cout<<"第"<<i+1<<"行:";for(j=0;j<n;j++) cin>>mat[i][j];//数组形式}cout<<"\n输入的矩阵为:"<<endl;for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<setw(4)<<mat[i][j];cout<<endl;}move(mat,n);cout<<"转置后的矩阵为:"<<endl;for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<setw(4)<<*(*(mat+i)+j);//指针形式cout<<endl;}delete []mat;}3.(编程)实现两字符串的连接。
声明字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。
程序名:lab6_3.cpp。
用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。
// 字符串的结束标志'\0'参考运行结果:★程序及运行结果:4.(编程)使用string类声明字符串对象,实现两字符串的连接。
在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。
程序名:lab6_4.cpp。
★程序及运行结果://lab6_4.cpp#include<string>//使用C++中的string#include<iostream>using namespace std;void main(){string s1,s2;cout<<"输入字符串s1:";cin>>s1;cout<<"输入字符串s2:";cin>>s2;s1+=s2;cout<<"s1+s2 = "<<s1<<endl;}5.(编程,习题6-27)声明Employee类并应用。
在employee.h文件中声明Employee类。
Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符数组来表示。
成员函数:构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char *, char *name);display() 使用cout显示姓名、街道地址、城市和邮编等属性;change_name() 改变类中表示姓名属性的字符数组类型的数据成员。
在主程序中声明这个类的对象并对其进行操作。
程序名:lab6_5.cpp。
参考运行结果:★程序及运行结果://lab6_5employee.h#include<cstring>//使用C中的string#include<iostream>using namespace std;class Employee{private:char name[10],street[20],city[10],mail[7];//、街道、城市、邮编public:Employee(char *n,char *s,char *c,char *m);void display();void change_name(char *n);};Employee::Employee(char *n,char *s,char *c,char *m){strcpy(name,n); strcpy(street,s);strcpy(city,c); strcpy(mail,m);}void Employee::display(){cout<<":"<<name<<endl;cout<<"街道:"<<street<<endl;cout<<"城市:"<<city<<endl;cout<<"邮编:"<<mail<<endl;}void Employee::change_name(char *n){ strcpy(name,n); }//lab6_5.cpp#include"lab6_5employee.h"void main(){Employee emp("张山","海甸三西路13号","海口市","570228");emp.display();emp.change_name("李世");cout<<endl;emp.display();}6.(编程,习题6-27)使用上一小题中的Employee类声明对象数组emp[5]。