实验六数组指针与字符串评讲电子教案.docx
《实验六数组指针与字符串评讲电子教案.docx》由会员分享,可在线阅读,更多相关《实验六数组指针与字符串评讲电子教案.docx(15页珍藏版)》请在冰豆网上搜索。
![实验六数组指针与字符串评讲电子教案.docx](https://file1.bdocx.com/fileroot1/2023-1/31/2a0dd61c-7e30-4f06-8d93-7fc684cf1450/2a0dd61c-7e30-4f06-8d93-7fc684cf14501.gif)
实验六数组指针与字符串评讲电子教案
实验六--数组、指针与字符串-评讲
姓名:
学号:
班级:
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矩阵。
#include
usingnamespacestd;
voidmove(intmatrix[3][3])
{
inti,j,k;
for(i=0;i<3;i++)
for(j=0;j
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
intmain()
{
inti,j;
intdata[3][3];
cout<<"输入矩阵的元素"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<
";
cin>>data[i][j];
}
cout<<"输入的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<cout<}
move(data);
cout<<"转置后的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<cout<}
}
5)使用动态内存分配生成动态数组来重新完成第(4)题,使用指针实现函数功能(结果与4题同)
#include
usingnamespacestd;
voidmove(int*matrix)
{
inti,j,k;
for(i=0;i<3;i++)
for(j=0;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<<"输入矩阵的元素"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<
";
cin>>p[i*3+j];
}
cout<<"输入的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<
cout<}
move(p);
cout<<"转置后的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<
cout<}
}
6)编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
#include
usingnamespacestd;
intmain()
{
inti=0,j=0;
chars1[200],s2[100];
cout<<"请输入第一个字符串:
";
cin>>s1;
cout<<"请输入第二个字符串:
";
cin>>s2;
while(s1[i])
i++;
while(s2[j])
s1[i++]=s2[j++];
s1[i]='\0';//注释该句会有什么结果
cout<<"连接后的字符串为:
"<}
7)使用string类声明字符串对象,重新实现第(6)(结果同6)。
#include
#include
usingnamespacestd;
intmain()
{
strings1;
strings2;
cout<<"请输入第一个字符串:
";
cin>>s1;
cout<<"请输入第二个字符串:
";
cin>>s2;
s1+=s2;
cout<<"连接后的字符串为:
"<}
8)声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()改变对象的姓名属性,实现并测试这个类。
//employee.h
#include
#include
usingnamespacestd;
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()
{
cout<cout<}
//lab6_5.cpp
#include"employee.h"
intmain()
{
Employeee1("张三","平安大街号","北京","100000");
e1.display();
cout<e1.change_name("李四");
e1.display();
cout<}
9)声明包含5个元素的对象数组,每个元素都是Employee类型对象。
//lab6_6.cpp
#include"employee.h"
intmain()
{
Employeeemp[5]=
{Employee("张三","平安大街号","北京","100000"),
Employee("李四","王府井大街号","北京","100000"),
Employee("赵刚","中山路号","重庆","400000"),
Employee("陈芳","南京路号","上海","200000"),
Employee("周欣","人民东路号","重庆","400000")};
for(inti=0;i<5;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矩阵。
#include
usingnamespacestd;
voidmove(intmatrix[3][3])
{
inti,j,k;
for(i=0;i<3;i++)
for(j=0;j
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
intmain()
{
inti,j;
intdata[3][3];
cout<<"输入矩阵的元素"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<
";
cin>>data[i][j];
}
cout<<"输入的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<cout<}
move(data);
cout<<"转置后的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<cout<}
}
5)使用动态内存分配生成动态数组来重新完成第(4)题,使用指针实现函数功能(结果与4题同)
#include
usingnamespacestd;
voidmove(int*matrix)
{
inti,j,k;
for(i=0;i<3;i++)
for(j=0;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<<"输入矩阵的元素"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<
";
cin>>p[i*3+j];
}
cout<<"输入的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<
cout<}
move(p);
cout<<"转置后的矩阵的为:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<
cout<}
}
6)编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
#include
usingnamespacestd;
intmain()
{
inti=0,j=0;
chars1[200],s2[100];
cout<<"请输入第一个字符串:
";
cin>>s1;
cout<<"请输入第二个字符串:
";
cin>>s2;
while(s1[i])
i++;
while(s2[j])
s1[i++]=s2[j++];
s1[i]='\0';//注释该句会有什么结果
cout<<"连接后的字符串为:
"<}
8)使用string类声明字符串对象,重新实现第(6)(结果同6)。
#include
#include
usingnamespacestd;
intmain()
{
strings1;
strings2;
cout<<"请输入第一个字符串:
";
cin>>s1;
cout<<"请输入第二个字符串:
";
cin>>s2;
s1+=s2;
cout<<"连接后的字符串为:
"<}
8)声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()改变对象的姓名属性,实现并测试这个类。
//employee.h
#include
#include
usingnamespacestd;
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()
{
cout<cout<}
//lab6_5.cpp
#include"employee.h"
intmain()
{
Employeee1("张三","平安大街号","北京","100000");
e1.display();
cout<e1.change_name("李四");
e1.display();
cout<}
9)声明包含5个元素的对象数组,每个元素都是Employee类型对象。
//lab6_6.cpp
#include"employee.h"
intmain()
{
Employeeemp[5]=
{Employee("张三","平安大街号","北京","100000"),
Employee("李四","王府井大街号","北京","100000"),
Employee("赵刚","中山路号","重庆","400000"),
Employee("陈芳","南京路号","上海","200000"),
Employee("周欣","人民东路号","重庆","400000")};
for(inti=0;i<5;i++)
emp[i].display();
}