C++上机实验报告 实验四.docx
《C++上机实验报告 实验四.docx》由会员分享,可在线阅读,更多相关《C++上机实验报告 实验四.docx(19页珍藏版)》请在冰豆网上搜索。
C++上机实验报告实验四
实验四数组、指针与字符串
1.实验目的
1.学习使用数组
2.学习字符串数据的组织和处理
3.学习标准C++库的使用
4.掌握指针的使用方法
5.练习通过Debug观察指针的内容及其所指的对象的内容
6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用
7.分别使用字符数组和标准C++库练习处理字符串的方法
2.实验要求
1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。
2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
3.编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
4.使用string类定义字符串对象,重新实现上一小题。
5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。
实现并测试这个类。
6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。
7.(选做)修改实验4中的选做实验中的people(人员)类。
具有的属性如下:
姓名charname[11]、编号charnumber[7]、性别charsex[3]、生日birthday、身份证号charid[16]。
其中“出生日期”定义为一个“日期”类内嵌对象。
用成员函数实现对人员信息的录入和显示。
要求包括:
构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
在测试程序中定义people类的对象数组,录入数据并显示。
3.实验内容及实验步骤
1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。
程序名:
lab6_1.cpp。
2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。
通过Debug观察指针的内容及其所指的对象中的内容。
程序名:
lab6_2.cpp。
3.编程实现两字符串的连接。
定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。
程序名:
lab6_3.cpp。
用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。
4.使用string类定义字符串对象,编程实现两字符串的连接。
在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。
程序名:
lab6_4.cpp。
5.在employee.h文件中定义Employee类。
Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示姓名、街道地址、城市和邮编等属性,change_name()改变类中表示姓名属性的数据成员。
在主程序中定义这个类的对象并对其进行操作。
程序名:
lab6_5.cpp。
6.使用上一小题中定义的Employee类定义对象数组emp[5],使用循环语句把数据显示出来。
程序名:
lab6_6.cpp。
4.思考题
1.如何存储和处理字符串?
(1)可以利用字符数组存储和处理字符串;
(2)利用系统提供的string类存储和处理字符串。
2.头文件和头文件有何区别?
包含头文件后,可以使用系统的字符串处理函数,如strcat(连接).strcpy(复制).strcmp(比较).strlen(求长度).strlwr(转换为小写).strupr(转换为大写)等等;
而包含头文件后,则可以定义string类,并且使用系统提供的string类操作符对string类型的对象进行处理。
3.有几种方法来表示和处理数组元素?
(1)数组下标方法,如a[i]
(2)指针的方法,如int*p=&a[0]
5.源程序
1.lab6_1.cpp
#include
usingnamespacestd;
inta[3][3];
voidshowTrans()
{
inti,j;
cout<<"Thetranspositionmatrixis:
"<for(j=0;j<3;j++)
{
for(i=0;i<3;i++)
{
cout<cout<<"";
}
cout<}
}
voidinput()
{
inti,j;
cout<<"Pleaseinputyour3*3matrix:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cin>>a[i][j];
}
}
}
intmain()
{
input();
showTrans();
return0;
}
2.lab6_2.cpp
#include
usingnamespacestd;
int*p[9];
voidshowTrans()
{
inti,j;
cout<<"Thetranspositionmatrixis:
"<for(i=0;i<3;i++)
{
for(j=i;j<9;j=j+3)
{
cout<<*p[j];
cout<<"";
}
cout<}
}
voidinput()
{
inti,n;
cout<<"Pleaseinputyour3*3matrix:
"<for(i=0;i<9;i++)
{
cin>>n;
p[i]=newint(n);
}
}
intmain()
{
input();
showTrans();
inti;
for(i=0;i<9;i++)
{
deletep[i];
}
return0;
}
3.lab6_3.cpp
#include
//不使用系统自带函数strcpy
usingnamespacestd;
chara[20]={"/0"},b[20]={"/0"},c[45]={"/0"};
intmain()
{
inti,j,k;
cout<<"Inputthefirststring:
"<cin.getline(a,20,'\n');
cout<<"Inputthesecondstring:
"<cin.getline(b,20,'\n');
intm=0,n=0;
//将数组a中的字符串拷贝到数组c中
for(k=0;k<45,a[m]!
='\0';k++,m++)
{
c[k]=a[m];
}
//将数组b中的字符串接着a,拷贝到数组c中
for(;k<45,b[n]!
='\0';k++,n++)
{
c[k]=b[n];
}
cout<return0;
}
4.lab6_4.cpp
#include
#include
usingnamespacestd;
chara[20]={"/0"},b[20]={"/0"};
intmain()
{
cout<<"Inputthefirststring:
"<cin.getline(a,20,'\n');
cout<<"Inputthesecondstring:
"<cin.getline(b,20,'\n');
strings1=a;
strings2=b;
strings3=s1+s2;
cout<return0;
}
5.Employee.h
#ifndefEmployee_H_INCLUDED
#defineEmployee_H_INCLUDED
classEmployee
{
private:
charname[15];
charaddress[25];
charcity[10];
intpostcode;
public:
Employee();
Employee(charn,chara,charc,intp);
~Employee();
voidchange_name();
voidchange_address();
voidchange_city();
voidchange_postcode();
voiddisplay();
};
#endif//Employee_H_INCLUDED
Employee.cpp
#include
#include"Employee.h"
usingnamespacestd;
Employee:
:
Employee(){}
Employee:
:
Employee(charn,chara,charc,intp)
{
name[0]=n;
name[1]='\0';
address[0]=a;
address[1]='\0';
city[0]=c;
city[1]='\0';
postcode=p;
}
Employee:
:
~Employee(){}
voidEmployee:
:
change_name()
{
cout<<"Pleaseinputyourchangedname:
"<cin.getline(name,15,'\n');
}
voidEmployee:
:
change_address()
{
cout<<"Pleaseinputyourchangedaddress:
"<cin.getline(address,25,'\n');
}
voidEmployee:
:
change_city()
{
cout<<"Pleaseinputyourchangedcity:
"<cin.getline(city,10,'\n');
}
voidEmployee:
:
change_postcode()
{
cout<<"Pleaseinputyourchangedpostcode:
"<cin>>postcode;
}
voidEmployee:
:
display()
{
cout<<"Yourinformationshowsasfollow:
"<cout<<"name:
"<cout<<"address:
"<
cout<<"city:
"<cout<<"postcode:
"<}
intmain()
{
Employeeperson(1,1,1,1);
person.display();
person.change_name();
person.change_address();
person.change_