实验三 数组与指针实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三数组与指针实验
【实验目的】
1.学习使用数组数据对象。
2.掌握指针的使用方法。
3.学习通过动态内存分配实现动态数组的定义和使用,并体会指针在其中的作用。
4.练习通过Debug观察指针的内容及其所指对象的内容。
【实验内容】
1.运行下列程序,观察运行结果。
(1)#include<iostream.h>
class ArrayElem
{
int x;
public:
ArrayElem(int i){x=i;} //带参数的构造函数
int getx(){return x;}
};
int main()
{
ArrayElem obs[4] ={-1,-2,-3,-4}; //创建对象数组并初始化
for(int i=0;i<4;i++)
cout<<"obs["<<i<<"].getx():"<<obs[i].getx()<<"\n";//访问数组元素的成员
return(0);
}
(2)#include<iostream.h>
class NumClass
{
int num;
public:
void set_num(int val){num=val;}
void show_num(){cout<<"The num is :"<<num<<"\n";}
};
int main()
{
NumClass ob,*p; //声明一个对象和指向对象的指针
ob.set_num(10); ob.show_num(); //通过对象ob直接调用成员函数
p=&ob; //使对象指针p指向对象ob
p->set_num(20);p->show_num(); //通过指针调用成员函数
return(0);
}
(3)#include<iostream.h>
class NumClass
{
int num;
public:
void set_num(int val){num=val;}
void show_num(){cout<<"The num is :"<<num<<"\n";}
};
int main()
{
NumClass ob[2],*p; //声明一个对象数组和对象指针
ob[0].set_num(10); ob[1].set_num(20); //通过对象数组名和下标来访问元素
p=&ob[0]; //将对象数组的首元素地址赋给指针
p->show_num(); //通过指针显示数组元素
p++; p->show_num();
return(0);
}
(4)#include<iostream.h>
class NumClass
{
int num;
public:
void set_num(int val){num=val;}
void show_num(){cout<<"The num is :"<<num<<"\n";}
};
int main()
{
NumClass *p=new NumClass[2]; //创建一个对象数组
p[0].set_num(10); p[1].set_num(20); //通过指针访问数组元素的成员
p[0].show_num(); p[1].show_num(); //通过指针显示数组元素delete[] p; //删除整个对象数组
return(0);
}
2.编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。
设计一个学生类,包括学号、姓名和成绩数据成员外,还有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。
在main()函数中定义了一个对象数组用于存储输入的学生数据。
3.用对象数组实现一个简单的银行账户管理系统,完成开户、存款、取款和查询余额等行为。
银行账户(Account)类可参考实验二的第2题。
【思考题】
1.数组之间如何赋值?
2.引用和指针有何区别?
3.对那些类型的数据不能使用引用?
4.C++中静态成员有什么作用?静态成员的内存是如何分配的?
5.类的指针成员为何要用new开辟内存空间,这样做的好处是什么?
6.如果你定义了一个类,其指针成员是使用new初始化的,请指出可能出现的3个问题以及如何纠正这些问题。