实验六--数组、指针与字符串-评讲
姓名:学号:
班级: 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
using namespace std;
void move (int matrix[3][3])
{
int i, 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;
}
}
int main()
{
int i, j;
int data[3][3];
cout << "输入矩阵的元素" << endl;
for(i=0; i<3; i++)
for (j=0; j<3; j++)
{
cout << "第" << i+1 << "行第" << j+1<<"个元素为:";
cin >> data[i][j];
}
cout << "输入的矩阵的为:" << endl;
for(i=0; i<3; i++)
{
for (j=0; j<3; j++)
cout << data[i][j] << " ";
cout << endl;
}
move(data);
cout << "转置后的矩阵的为:" << endl;
for(i=0; i<3; i++)
{
for (j=0; j<3; j++)
cout << data[i][j] << " ";
cout << endl;
}
}
5)使用动态内存分配生成动态数组来重新完成第(4)题,使用指针实现函数功能(结果与4题同)
#include
using namespace std;
void move (int *matrix)
{
int i, 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;
}
}
int main()
{
int i, j;
int *p = new int[3*3];
cout << "输入矩阵的元素" << endl;
for(i=0; i<3; i++)
for (j=0; j<3; j++)
{
cout << "第" << i+1 << "行第" << j+1 <<"个元素为:";
cin >> p[i*3 + j];
}
cout << "输入的矩阵的为:" << endl;
for(i=0; i<3; i++)
{
for (j=0; j<3; j++)
cout << p[i*3 + j] << " ";
cout << endl;
}
move(p);
cout << "转置后的矩阵的为:" << endl;
for(i=0; i<3; i++)
{
for (j=0; j<3; j++)
cout << p[i*3 + j] << " ";
cout << endl;
}
}
6)编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。
#include
using namespace std;
int main()
{
int i=0,j=0;
char s1[200],s2[100];
cout << "请输入第一个字符串:";
cin >> s1;
cout << "请输入第二个字符串:";
cin >>s2;
while(s1[i])
i++;
while(s2[j])
s1[i++] = s2[j++];
s1[i] = '\0'; //注释该句会有什么结果
cout << "连接后的字符串为:" << s1 << endl;
}
7)使用string类声明字符串对象,重新实现第(6)(结果同6)。
#include
#include
using namespace std;
int main()
{
string s1;
string s2;
cout << "请输入第一个字符串:";
cin >> s1;
cout << "请输入第二个字符串:";
cin >>s2;
s1 += s2;
cout << "连接后的字符串为:" << s1 << endl;
}
8)声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()改变对象的姓名属性,实现并测试这个类。
//employee.h
#include
#include
using namespace std;
class Employee
{
private:
char name[30];
char street[30];
char city[18];
char zip[7];
public:
Employee(char *n, char *str, char *ct, char *z);
void change_name(char *n);
void display();
};
Employee::Employee (char *n,char *str,char *ct, char *z)
{
strcpy(name, n);
strcpy(street, str);
strcpy(city, ct);
strcpy(zip, z);
}
void Employee::change_name (char *n)
{
strcpy(name, n);
}
void Employee::display ()
{
cout << name << " " << street << " ";
cout << city << " "<< zip << endl;
}
// lab6_5.cpp
#include"employee.h"
int main()
{
Employee e1("张三","平安大街号", "北京", "100000");
e1.display();
cout << endl;
e1.change_name("李四");
e1.display();
cout << endl;
}
9)声明包含5个元素的对象数组,每个元素都是Employee类型对象。
// lab6_6.cpp
#include"employee.h"
int main()
{
Employee emp[5] =
{ Employee("张三","平安大街号", "北京", "100000"),
Employee("李四","王府井大街号", "北京", "100000"),
Employee("赵刚","中山路号", "重庆", "400000"),
Employee("陈芳","南京路号", "上海", "200000"),
Employee("周欣","人民东路号", "重庆", "400000")};
for(int i=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
using namespace std;
void move (int matrix[3][3])
{
int i, 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;
}
}
int main()
{
int i, j;
int data[3][3];
cout << "输入矩阵的元素" << endl;