数组与指针实验

数组与指针实验


2024年4月28日发(作者:)

实验三 数组与指针实验

【实验目的】

1.学习使用数组数据对象。

2.掌握指针的使用方法。

3.学习通过动态内存分配实现动态数组的定义和使用,并体会指针在其中的作用。

4.掌握静态成员的使用方法。

5.练习通过Debug观察指针的内容及其所指对象的内容。

【实验内容】

1.用对象数组实现一个简单的银行账户管理系统,完成多个用户的开户、存款、取款

和查询余额等行为。

#include

#include

#include //system("cls")清屏函数和exit()用到此头文件

#include //getch()要用到此头文件

class Account

{

private:

char mName[10]; //银行账户户名

long mSN; //账户帐号

float mBalance; //账户当前的余额

public:

Account(); //无参构造函数

void deposit(); //往账户中存款

int withdraw(); //从账户中取款

void getBalance(); //查询余额

long getmSN()

{return mSN;} //取得客户的帐号

};

Account::Account() //无参构造函数,从键盘输入信息进行初始化

{ cout<<" "<<"请输入:"<

cout<<"户名:"<

cin>>mName;

cout<<"账号:"<

cin>>mSN;

cout<<"存款:"<

cin>>mBalance;

}

//往账户中存款,存款金额为amount

void Account::deposit()

{ float amount;

cout<<"请输入存款金额:";

cin>>amount;

mBalance=amount+mBalance;

}

//从账户中取款,取款金额为amount

int Account::withdraw()

{ cout<<"请输入取款金额:"<

float amount;

cin>>amount;

int c;

c=amount>mBalance?0:1;

if(amount>mBalance)

mBalance=mBalance;

else

mBalance=mBalance-amount;

return(c);

}

//查询帐户当前余额

void Account::getBalance()

{

cout<<"账户余额为:"<

}

//菜单函数

void menu(void)

{ system("cls"); //清屏

cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<

cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<

cout<<" 简单银行帐户系统"<

cout<<"1.存款 "<

cout<<"2:取款"<

cout<<"3:查询余额 "<

cout<<"4:退出 "<

cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<

cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<

cout<

}

//主函数

int main()

{

int cho,n,r,i,flag=0;

long aNo;

cout<<"要开的账户数目为:"<

cin>>n;

Account *p; //定义对象指针

p=new Account[n]; //动态创建对象数组

while(1)

{

menu();

do

{

cout<<"请根据菜单进行操作选择:"<

cin>>cho;

//getch(); //清除键盘缓冲区内容,为下一次正确读入做准备。

}while(cho<1||cho>4);

switch(cho)

{

case 1://存款

cout<<"请输入帐号:";

cin>>aNo;

for(i=0;i

{

if((p+i)->getmSN()==aNo)

{

flag=1;

(p+i)->deposit();

(p+i)->getBalance();

break;

}

}

if(flag==0)

cout<<"对不起,输入帐号有错误!"<

getch();

break;

case 2://取款

cout<<"输入账号:";

cin>>aNo;

for(i=0;i

{ if((p+i)->getmSN()==aNo)

{ flag=1;

r=(p+i)->withdraw();

if(r==0)

cout<<"透支!"<

else

cout<<"成功"<

break;

}

}

if(flag==0)

cout<<"帐号错误!"<

getch();

break;

case 3://查询

cout<<"输入账号:";

cin>>aNo;

for(i=0;i

{ if((p+i)->getmSN()==aNo)

{ flag=1;

(p+i)->getBalance();

break;}

}

if(flag==0)

cout<<"帐号错误!"<

getch();

break;

case 4://退出

return 0;

}

}

delete[] p;

return 0;

}

运行结果:

//释放空间

2. N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。

设计一个学生类,包括学号、姓名和成绩数据成员外,还有两个静态变量sum和num,

分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋

值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。在main()函

数中定义了一个对象数组用于存储输入的学生数据。

程序如下:

#include

#include

#define N 4

class Stud

{

private:

int no;

char name[10];

double deg;

double static sum;

int static num;

public:

void setdata(int n,char na[],double d);

void disp();

double static avg();

};

double Stud::sum=0;

int Stud::num=0;

void Stud::setdata(int n,char na[],double d)

{

no=n;deg=d;

strcpy(name,na);

sum+=d;

num++;

}

void Stud::disp()

{

printf("%-5d%-8s%3dn",no,name,deg);

}

double Stud::avg()

{

return sum/num;

}

void main()

{

Stud st[N];

int i,n;

double d;

char na[10];

for(i=0;i

{

printf("请分别输入学号 姓名 成绩:");

scanf("%d%s%d",&n,na,&d);

st[i].setdata(n,na,d);

}

printf("输出学生信息n");

printf("学号 姓名 成绩n");

for(i=0;i

st[i].disp();

printf("平均分=%dnn",st[N-1].avg());

}

运行结果:

【思考题】

1.数组之间如何赋值?

通过for循环

新建atr1,atr2两个数组,通过for(int i=0;i

数组赋值给atr2数组

使用opy

创建src1,src2两个数组,使用opy(src1, 0, src2, 0, 6);代码将src1

数组赋值给src2数组

使用clone

新建arr1,arr2两个数组,通过arr2=(int[]) ();代码,将arr1数组赋值给

arr2数组

2.引用和指针有何区别?

引用必须被初始化,指针不必;

引用初始化以后不能被改变,指针可以改变所指的对象;

不存在指向空值的引用,但是存在指向空值的指针;

3.对那些类型的数据不能使用引用?

数组和字面值不能使用引用


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714259721a2412173.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信