姓名:学号:班级:2012计本实验六数组、指针与字符串(4学时)实验目的(1)学习使用数组数据对象(2)学习字符串数据的组织和处理(3)学习标准C++库的使用(4)掌握指针的使用方法(5)练习通过Debug观察指针的内容及其所指的对象的内容(6)练习通过动态内存分配实现动态数组,并体会指针在其中的作用(7)分别使用字符数组和标准C++库练习处理字符串的方法实验任务1)以例6-3为基础,观察对象数组的声明与引用过程,并与单对象的引用过程的区别。2)以例6-10为基础,观察用指针作为函数参数传递数据的方法,进一步理解值传递与引用传递的思想3)以例5-11为基础,完成例5-25,比较二者的异同4)编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。5)使用动态内存分配生成动态数组来重新完成第(4)题,使用指针实现函数功能6)编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。7)使用string类声明字符串对象,重新实现第(6)。8)声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()改变对象的姓名属性,实现并测试这个类。9)声明包含5个元素的对象数组,每个元素都是Employee类型对象。评讲部分4)编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。#includeiostreamusingnamespacestd;voidmove(intmatrix[3][3]){inti,j,k;for(i=0;i3;i++)for(j=0;ji;j++){k=matrix[i][j];matrix[i][j]=matrix[j][i];matrix[j][i]=k;}}intmain(){inti,j;intdata[3][3];cout输入矩阵的元素endl;for(i=0;i3;i++)for(j=0;j3;j++){cout第i+1行第j+1个元素为:;cindata[i][j];}cout输入的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutdata[i][j];coutendl;}move(data);cout转置后的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutdata[i][j];coutendl;}}5)使用动态内存分配生成动态数组来重新完成第(4)题,使用指针实现函数功能(结果与4题同)#includeiostreamusingnamespacestd;voidmove(int*matrix){inti,j,k;for(i=0;i3;i++)for(j=0;ji;j++){k=*(matrix+i*3+j);*(matrix+i*3+j)=*(matrix+j*3+i);*(matrix+j*3+i)=k;}}intmain(){inti,j;int*p=newint[3*3];cout输入矩阵的元素endl;for(i=0;i3;i++)for(j=0;j3;j++){cout第i+1行第j+1个元素为:;cinp[i*3+j];}cout输入的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutp[i*3+j];coutendl;}move(p);cout转置后的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutp[i*3+j];coutendl;}}6)编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。#includeiostreamusingnamespacestd;intmain(){inti=0,j=0;chars1[200],s2[100];cout请输入第一个字符串:;cins1;cout请输入第二个字符串:;cins2;while(s1[i])i++;while(s2[j])s1[i++]=s2[j++];s1[i]='\0';//注释该句会有什么结果cout连接后的字符串为:s1endl;}7)使用string类声明字符串对象,重新实现第(6)(结果同6)。#includeiostream#includestringusingnamespacestd;intmain(){strings1;strings2;cout请输入第一个字符串:;cins1;cout请输入第二个字符串:;cins2;s1+=s2;cout连接后的字符串为:s1endl;}8)声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()改变对象的姓名属性,实现并测试这个类。//employee.h#includeiostream#includestringusingnamespacestd;classEmployee{private:charname[30];charstreet[30];charcity[18];charzip[7];public:Employee(char*n,char*str,char*ct,char*z);voidchange_name(char*n);voiddisplay();};Employee::Employee(char*n,char*str,char*ct,char*z){strcpy(name,n);strcpy(street,str);strcpy(city,ct);strcpy(zip,z);}voidEmployee::change_name(char*n){strcpy(name,n);}voidEmployee::display(){coutnamestreet;coutcityzipendl;}//lab6_5.cpp#includeemployee.hintmain(){Employeee1(张三,平安大街号,北京,100000);e1.display();coutendl;e1.change_name(李四);e1.display();coutendl;}9)声明包含5个元素的对象数组,每个元素都是Employee类型对象。//lab6_6.cpp#includeemployee.hintmain(){Employeeemp[5]={Employee(张三,平安大街号,北京,100000),Employee(李四,王府井大街号,北京,100000),Employee(赵刚,中山路号,重庆,400000),Employee(陈芳,南京路号,上海,200000),Employee(周欣,人民东路号,重庆,400000)};for(inti=0;i5;i++)emp[i].display();}姓名:学号:班级:2012计本实验六数组、指针与字符串(4学时)实验目的(1)学习使用数组数据对象(2)学习字符串数据的组织和处理(3)学习标准C++库的使用(4)掌握指针的使用方法(5)练习通过Debug观察指针的内容及其所指的对象的内容(6)练习通过动态内存分配实现动态数组,并体会指针在其中的作用(7)分别使用字符数组和标准C++库练习处理字符串的方法实验任务10)以例6-3为基础,观察对象数组的声明与引用过程,并与单对象的引用过程的区别。11)以例6-10为基础,观察用指针作为函数参数传递数据的方法,进一步理解值传递与引用传递的思想12)以例5-11为基础,完成例5-25,比较二者的异同13)编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。14)使用动态内存分配生成动态数组来重新完成第(4)题,使用指针实现函数功能15)编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。16)使用string类声明字符串对象,重新实现第(6)。17)声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()改变对象的姓名属性,实现并测试这个类。18)声明包含5个元素的对象数组,每个元素都是Employee类型对象。评讲部分4)编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。#includeiostreamusingnamespacestd;voidmove(intmatrix[3][3]){inti,j,k;for(i=0;i3;i++)for(j=0;ji;j++){k=matrix[i][j];matrix[i][j]=matrix[j][i];matrix[j][i]=k;}}intmain(){inti,j;intdata[3][3];cout输入矩阵的元素endl;for(i=0;i3;i++)for(j=0;j3;j++){cout第i+1行第j+1个元素为:;cindata[i][j];}cout输入的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutdata[i][j];coutendl;}move(data);cout转置后的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutdata[i][j];coutendl;}}5)使用动态内存分配生成动态数组来重新完成第(4)题,使用指针实现函数功能(结果与4题同)#includeiostreamusingnamespacestd;voidmove(int*matrix){inti,j,k;for(i=0;i3;i++)for(j=0;ji;j++){k=*(matrix+i*3+j);*(matrix+i*3+j)=*(matrix+j*3+i);*(matrix+j*3+i)=k;}}intmain(){inti,j;int*p=newint[3*3];cout输入矩阵的元素endl;for(i=0;i3;i++)for(j=0;j3;j++){cout第i+1行第j+1个元素为:;cinp[i*3+j];}cout输入的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutp[i*3+j];coutendl;}move(p);cout转置后的矩阵的为:endl;for(i=0;i3;i++){for(j=0;j3;j++)coutp[i*3+j];coutendl;}}6)编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。#includeiostreamusingnamespacestd;intmain(){inti=0,j=0;chars1[200],s2[100];cout请输入第一个字符串:;cins1;cout请输入第二个字符串:;cins2;while(s1[i])i++;while(s2[j])s1[i++]=s2[j++];s1[i]='\0';//注释该句会有什么结果cout连接后的字符串为:s1endl;}8)使用string类声明字符串对象,重新实现第(6)(结果同6)。#includeiostream#includestringusingnamespacestd;intmain(){strings1;strings2;cout请输入第一个字符串:;cins1;cout请输入第二个字符串:;cins2;s1+=s2;cout连接后的字符串为:s1endl