实验六--数组、指针与字符串-评讲

实验六--数组、指针与字符串-评讲
实验六--数组、指针与字符串-评讲

姓名:学号:

班级: 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;

相关主题
相关文档
最新文档