C++实验5——数组、指针与字符串

大一时写的,很菜

目录

实验目的:

实验任务:

实验步骤:

参考代码:

 


实验目的:

  1. 学习使用数组数据对象;
  2. 学习字符串数据的组织和处理;
  3. 学习标准C++库的使用;
  4. 掌握指针的使用方法;
  5. 练习通过debug观察指针的内容及其所指的对象的内容;
  6. 练习通过动态内存分配实现动态数组,并体会指针在其中的作用;
  7. 分别使用字符数组和标准C++库练习处理字符串的方法。

实验任务:

  1. 编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
  2. 使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
  3. 编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。
  4. 使用string类定义字符串对象,重新实现上一小题。
  5. 定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。
  6. 定义包含5个元素的对象数组,每个元素都是Employee类型的对象。
  7. (选做)修改实验四中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。

实验步骤:

  1. 编写矩阵转置函数,输入参数为3×3整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_cpp。
  2. 改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过debug观察指针的内容及其所指的对象中的内容。程序名:lab6_cpp。
  3. 编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。
  4. 使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_cpp。
  5. 在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char *, char *name);display()中使用cout显示姓名、街道地址、城市和邮编等属性,change_name()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中定义这个类的对象并对其进行操作。程序名:lab6_cpp。
  6. 使用上一小题中定义的Employee类定义对象数组emp[5],使用循环语句把数据显示出来。程序名:lab6_cpp。

参考代码:

//实验5.1 编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
#include<iostream>
using namespace std;
void transpose(int a[3][3]) {
	for (int i = 0; i < 3; i++)
		for (int j = i + 1; j < 3; j++)//注意j的取值范围! 
		{
			swap(a[i][j], a[j][i]);//swap函数交换两个数的值 
		}
}
int main() {
	int a[3][3];
	cout << "给a[3][3]赋值:" << endl;
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 3; j++)
		{
			cin >> a[i][j];
		}
	cout << "原矩阵为:" << endl;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << a[i][j] << "    ";
		}
		cout << endl;
	}
	transpose(a);
	cout << "转置后的矩阵为:" << endl;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << a[i][j] << "    ";
		}
		cout << endl;
	}
	return 0;
}
/*实验5.2 使用动态内存分配生成动态数组来重新完成上题(实验5.1 编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。),
使用指针实现函数的功能。*/
#include<iostream>
using namespace std;
void transpose(int* p) {
	int a[3][3];
	p = a;
	for (int i = 0; i < 3; i++)
		for (int j = i + 1; j < 3; j++)//注意j的取值范围! 
		{
			p[i][j] = p[j][i];
		}
}
int main() {
	int(*ptr)[3];
	ptr = new int[3][3];
	/*void transpose(int *p);*/
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 3; j++)
		{
			cin >> ptr[i][j];
		}
	cout << "原矩阵为:" << endl;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << ptr[i][j] << "    ";
		}
		cout << endl;
	}
	transpose(*ptr);
	cout << "转置后的矩阵为:" << endl;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << ptr[i][j] << "    ";
		}
		cout << endl;
	}
	//transpose函数的实现 

	delete[]ptr;
	return 0;
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值