教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

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

来源:网络收集 时间:2026-09-05
导读: 数组、指针与字符串 姓名: 学号: 班级: 2012计本 实验六 数组、指针与字符串(4学时) 实验目的 (1)学习使用数组数据对象 (2)学习字符串数据的组织和处理 (3)学习标准C++库的使用 (4)掌握指针的使用方法 (5)练习通过Debug 观察指针的内容及其所

数组、指针与字符串

姓名: 学号: 班级: 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 <iostream>

using namespace std;

void move (int matrix[3][3])

{

int i, j, k;

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

for (j=0; j<i; 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 <iostream>

using namespace std;

void move (int *matrix)

{

int i, j, k;

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

for (j=0; j<i; 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 <iostream>

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 <iostream>

#include <string>

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

<iostream>

数组、指针与字符串

#include <string>

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("张三"," …… 此处隐藏:5052字,全部文档内容请下载后查看。喜欢就下载吧 ……

实验六 数组、指针与字符串 评讲.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1809953.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)