C++上机实验报告 实验四.docx

上传人:b****1 文档编号:2870646 上传时间:2023-05-04 格式:DOCX 页数:22 大小:166.24KB
下载 相关 举报
C++上机实验报告 实验四.docx_第1页
第1页 / 共22页
C++上机实验报告 实验四.docx_第2页
第2页 / 共22页
C++上机实验报告 实验四.docx_第3页
第3页 / 共22页
C++上机实验报告 实验四.docx_第4页
第4页 / 共22页
C++上机实验报告 实验四.docx_第5页
第5页 / 共22页
C++上机实验报告 实验四.docx_第6页
第6页 / 共22页
C++上机实验报告 实验四.docx_第7页
第7页 / 共22页
C++上机实验报告 实验四.docx_第8页
第8页 / 共22页
C++上机实验报告 实验四.docx_第9页
第9页 / 共22页
C++上机实验报告 实验四.docx_第10页
第10页 / 共22页
C++上机实验报告 实验四.docx_第11页
第11页 / 共22页
C++上机实验报告 实验四.docx_第12页
第12页 / 共22页
C++上机实验报告 实验四.docx_第13页
第13页 / 共22页
C++上机实验报告 实验四.docx_第14页
第14页 / 共22页
C++上机实验报告 实验四.docx_第15页
第15页 / 共22页
C++上机实验报告 实验四.docx_第16页
第16页 / 共22页
C++上机实验报告 实验四.docx_第17页
第17页 / 共22页
C++上机实验报告 实验四.docx_第18页
第18页 / 共22页
C++上机实验报告 实验四.docx_第19页
第19页 / 共22页
C++上机实验报告 实验四.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++上机实验报告 实验四.docx

《C++上机实验报告 实验四.docx》由会员分享,可在线阅读,更多相关《C++上机实验报告 实验四.docx(22页珍藏版)》请在冰点文库上搜索。

C++上机实验报告 实验四.docx

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_city();

person.change_postcode();

person.display();

return0;

}

 

6.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()

{

Employeeemp[5]={Employee(1,1,1,1),Employee(2,2,2,2),Employee(3,3,3,3),Employee(4,4,4,4),Employee(5,5,5,5)};

inti;

for(i=0;i<5;i++)

{

emp[i].display();

emp[i].change_name();

emp[i].change_address();

emp[i].change_city();

emp[i].change_postcode();

cin.get();

}

for(i=0;i<5;i++)

{

cout<<"Theemp"<

emp[i].display();

}

return0;

}

7.

#include

#include

usingnamespacestd;

//Date类

classDate

{

private:

intyear;

intmonth;

intday;

public:

Date();

Date(inty,intm,intd);

Date(Date&p);

~Date();

voidsetDate();

voidshowDate();

};

//People类,其中含Date类型的数据

classPeople

{

private:

charname[11];

charnumber[7];

charsex[3];

Datebirthday;

charid[16];

public:

People();

People(char*n,char*nu,char*s,Dateb,char*i);

People(People&p);

~People();

voidsetName();

voidsetNumber();

voidsetSex();

voidsetId();

voidshowPeople();

};

//Date构造函数

Date:

:

Date(){}

Date:

:

Date(inty,intm,intd)

{

year=y;

month=m;

day=d;

}

Date:

:

Date(Date&p)

{

year=p.year;

month=p.month;

day=p.day;

}

//析构

inlineDate:

:

~Date(){}

//Date成员函数,设置出生年月日

voidDate:

:

setDate()

{

inty,m,d;

cout<<"Inputtheyear:

";

cin>>y;

cout<<"Inputthemonth:

";

cin>>m;

cout<<"Inputtheday:

";

cin>>d;

year=y;

month=m;

day=d;

}

//Date内联成员函数,输出年月日

inlinevoidDate:

:

showDate()

{

cout<<"Birthdayis"<

}

//People构造函数

People:

:

People(){};

People:

:

People(char*n,char*nu,char*s,Dateb,char*i)

{

strcpy(name,n);

strcpy(number,nu);

strcpy(sex,s);

birthday=b;

strcpy(id,i);

}

People:

:

People(People&p)

{

strcpy(name,p.name);

strcpy(number,p.number);

birthday=p.birthday;

strcpy(id,p.id);

}

//People析构

inlinePeople:

:

~People(){}

//People成员函数,设置各类数据

voidPeople:

:

setName()

{

cout<<"Pleaseinputtheperson'sname:

";

cin.getline(name,11,'\n');

}

voidPeople:

:

setNumber()

{

cout<<"Inputnumber:

";

cin.getline(number,7,'\n');

}

voidPeople:

:

setSex()

{

cout<<"Inputsex:

";

cin.getline(sex,3,'\n');

}

voidPeople:

:

setId()

{

cout<<"Inputid:

";

cin.getline(id,16,'\n');

}

//People内联成员函数,输出人员信息

inlinevoidPeople:

:

showPeople()

{

cout<<"Name:

"<

cout<<"Number:

"<

cout<<"Sex:

"<

cout<<"ID:

"<

}

intmain()

{

inti;

charspaceA;

//生成3个Date类型的对象

Datedate[3]={Date(0,0,0),Date(0,0,0),Date(0,0,0)};

//生成3个People类型的对象

Peopleperson[3]={People("0","0","0",date[0],"0"),People("0","0","0",date[1],"0"),People("0","0","0",date[2],"0")};

//设置这3个对象的各类信息

for(i=0;i<3;i++)

{

person[i].setName();

person[i].setNumber();

person[i].setSex();

person[i].setId();

date[i].setDate();

spaceA=getchar();

}

//输出这3个对象的各类信息

for(i=0;i<3;i++)

{

person[i].showPeople();

date[i].showDate();

}

return0;

}

6.运行结果

1.

2.

3.

4.

5

.

6.

7.

7.心得体会

通过本次上机课,我对数组的理解进一步加深,并且学会了对字符串数据的组织和处理,能够运用字符串类对字符串进行直接的运算;并且进一步熟悉了标准C++库的使用和指针的使用方法;通过进一步的练习,对Debug的操作更加熟练;而且实践操作了利用指针和new操作在堆区里开辟空间,然后利用delete释放空间,进一步加深了对不同类型存储空间的理解,提高了自己的实际操作能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2