C++语言程序设计实验答案-数组、指针与字符串
C+语言程序设计实验答案 - 数组、指针与字符串实验 06 数组、指针与字符串(4 学时)(第 6 章 数组、指针与字符串)一、实验目的(1) 学习使用数组数据对象。(2) 学习字符串数据的组织和处理。(3) 学习标准 C+ 库的使用。(4) 掌握指针的使用方法。(5) 练习通过调试功能观察指针的内容及其所指的对象的内容。(6) 练习通过动态内存分配实现动态数组,并体会指针在其中的作用。(7) 分别使用字符数组和标准 C+ 库练习处理字符串的方法。2二、实验任务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()改变对象的姓名属性,实现并测试这个类。36_6(习题 6-27)声明包含5 个元素的对象数组,每个元素都是Employee类型的对象。6_7 修改实验 4 中的 people(人员)类。具有的属性如下:姓名char name11、编号 char number7 、性别 char sex3、生日birthday 、身份证号 char id16 。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中声明people 类的对象数组 ,录入数据并显示。三、实验步骤1.(编程,习题 6-25)编写矩阵转置函数,输入参数为3×3 整型数组。使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,4编写 main() 函数实现输入输出。程序名:lab6_1.cpp。参考运行结果: 程序及运行结果:/lab6_1.cpp#include<iostream>usingnamespacestd;void move( int matrix3)int temp;for ( int i=0;i<3;i+)for ( int j=0;j<i;j+)temp=matrixij;matrixij=matrixji;matrixji=temp;5void main()int i,j,mat33;cout<<" 输入 3×3 矩阵 " <<endl;for (i=0;i<3;i+)cout<<" 第" <<i+1<<" 行: " ;for (j=0;j<3;j+) cin>>matij;cout<<"n输入的 3×3 矩阵为:" <<endl;for (i=0;i<3;i+)for (j=0;j<3;j+)cout<<matij<< " " ; cout<<endl;move(mat);6cout<<" 转置后的矩阵为: " <<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。7注:可使用一维动态数组, 或二维动态数组。程序及运行结果:(1) 使用一维动态数组表示方阵。/lab6_2.cpp#include<iostream>#include<iomanip>usingnamespacestd;voidmove( int*matrix,intn) / 矩阵为整型指针,对应一维数组int temp;for ( int i=0;i<n;i+)for ( int j=0;j<i;j+)temp=matrixi*n+j;matrixi*n+j=matrixj*n+i;matrixj*n+i=temp;8void main()int i,j,n,*mat;cout<<" 输入方阵的阶数: " ;cin>>n;mat= new int n*n;cout<<" 输入 " <<n<<" ×" <<n<<" 矩阵" <<endl;for (i=0;i<n;i+)cout<<" 第" <<i+1<<" 行: " ;for (j=0;j<n;j+)cin>>mati*n+j;/ 数组形式cout<<"n输入的矩阵为: " <<endl;for (i=0;i<n;i+)for (j=0;j<n;j+)cout<<setw(4)<<mati*n+j;cout<<endl;9move(mat,n);cout<<" 转置后的矩阵为: " <<endl;for (i=0;i<n;i+)for (j=0;j<n;j+)cout<<setw(4)<<*(mat+i*n+j);/指针形式cout<<endl;deletemat;10(2) 使用二维动态数组表示方阵。(参考实验提示)/lab6_2.cpp#include<iostream>#include<iomanip>usingnamespacestd;void move( int *matrix,int n) / 矩阵为指向整型指针的指针,对应二维数组int temp;for ( int i=0;i<n;i+)for ( int j=0;j<i;j+)temp=matrixij;matrixij=matrixji;matrixji=temp;void main()int i,j,n,*mat;11cout<<" 输入方阵的阶数: " ;cin>>n;mat= new int *n;for (i=0;i<n;i+) mati=newint n;cout<<" 输入 " <<n<<" ×" <<n<<" 矩阵" <<endl;for (i=0;i<n;i+)cout<<" 第" <<i+1<<" 行: " ;for (j=0;j<n;j+)cin>>matij;/ 数组形式cout<<"n输入的矩阵为: " <<endl;for (i=0;i<n;i+)for (j=0;j<n;j+)cout<<setw(4)<<matij;cout<<endl;12move(mat,n);cout<<" 转置后的矩阵为: " <<endl;for (i=0;i<n;i+)for (j=0;j<n;j+)cout<<setw(4)<<*(*(mat+i)+j);/指针形式cout<<endl;deletemat;