if(j%5==0)cout<<”\n”;//每输出5个换行
}
}
第五步:
使用数组方法解决裴波那契数列问题。
#include
voidmain()
{
inti,fib[20]={1,1};//初始化
for(i=2;i<20;i++)
fib[i]=fib[i-1]+fib[i-2];
for(i=1;i<=20;i++);
{
cout<if(i%5==0)cout<<”\n”;//每输出5个换行
}
}
第六步:
使用选择法解释排序问题。
#include
voidmain()
{
inti,j,data[120],temp;
intmin_a;
cout<<”\npleaseinput”<”;
for(i=0;i<=size;i++)
cin>>data[i];
for(i=0;i{
min_a=i;
for(j=i;jif(ata[j]min_a=j;
data[min_a]=data[i];
data[i]=temp;
}
cout<<”\naftersorted:
”;
for(i=0;icout<<””<}
第七步:
使用递归方法解决背包问题。
#include
voidmain()
{
intf;
if(s==0)f=1;
elseif((s<0)||((s>0)&&(n
)))f=0;
elseif(knap(s-w[n],n-1)==1){cout<<”\nw[“<elsef=knap(s,n-1);
returnf;
}
voidmain()
{
inti;
i=knap(29,8);
if(i==0)
cout<<”nosolution\n”;//背包问题无解
第八步:
使用动态分配和指针操作求9个double数的乘积。
#include
constsize=9;
double*init()//返回指针值的函数
{
returnnewdouble(size);//分配空间将首地址返回
}
voidreadin(double*a)//从a指向的存储单元开始读入数据
{
inti;
cout<<”\nplealseenter”<”;
for(i=0;icin>>*(a+i);//读入数据到a+i指向的存储单元
}
voidproduct(double*arr,intsize,double*resule)
//计算从arr指向的存储单元开始的
//连续size个存储单元的乘积
{
for(size--,*result=*(arr+size);--size>=0;*result=*(arr+size));
//乘积的结果放入result指向的存储单元
}
voidmain()
{
double*x,res,*init();
if((x=init())==null)
return;
readin(x);
product(x,size,&res);
cout<<”theproductis:
”<deletex;
}
实验三类与对象
(一)
一、实验性质
验证性实验、设计性实验4学时
二、实验目的与要求
1、掌握类、类的数据成员、类的成员函数的定义方式
2、理解类成员的访问控制方式
3、掌握对象的定义和操作对象的方法
4、理解构造函数和析构函数的定义与执行过程
5、掌握重载构造函数的方法
6、了解拷贝构造函数的方法
三、总的设计思想,及环境语言、工具等
通过设计一个time类和一个stock类达到实验目的,使用visualc++或turboc3.0集成开发环境
四、实验内容:
1.声明一个时间类,时间类中有3个私有数据成员(hour,minute,second)和两个公有成员函数(settime和print_time).settime根据传递的3个参数为对象设置时间;print_time负责将对象表示的时间显示输出。
在主函数中,建立一个时间类的对象,设置时间为9点20分30秒并显示该时间。
2.使用构造函数代替上面的settime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。
3.重载时间类的构造函数(不带参数)使小时,分,秒均为0。
4.在时间类的析构函数中输出“goodbye!
”
5.定义拷贝构造函数并调用。
五、主要实验步骤:
1.#include
classtime
{
public:
voidsettime(intc,intm,ints)
{
clock=c;
minute=m;
second=s;
}
voidprint_time()
{
cout<"<"<}
private:
intclock,minute,second;
};
voidmain()
{
timetime1;
time1.settime(9,20,30);
time1.print_time();
}
2.
#include
classtime
{
public:
time(intc,intm,ints)
{
clock=c;
minute=m;
second=s;
}
voidprint_time()
{
cout<"<"<}
private:
intclock,minute,second;
};
voidmain()
{
timetime1(10,40,50);
time1.print_time();
}
3.#include
classtime
{
public:
time()
{
clock=0;
minute=0;
second=0;
}
time(intc,intm,ints)
{
clock=c;
minute=m;
second=s;
}
voidprint_time()
{
cout<"<"<}
private:
intclock,minute,second;
};
voidmain()
{
timetime1;
time1.print_time();
timetime2(9,20,30);
time2.print_time();
}
4.#include
classtime
{
public:
time()
{
clock=0;
minute=0;
second=0;
}
time(intc,intm,ints)
{
clock=c;
minute=m;
second=s;
}
print_time()
{
cout<"<"<}
~time()
{
cout<<"goodbye"<}
private:
intclock,minute,second;
};
voidmain()
{
timetime1;
time1.print_time();
timetime2(9,20,30);
time2.print_time();
}
5.#include
classtime
{
public:
time()
{
clock=0;
minute=0;
second=0;
}
time(intc,intm,ints)
{
clock=c;
minute=m;
second=s;
}
print_time()
{
cout<"<"<}
~time()
{
cout<<"goodbye"<}
time(consttime&p)
{
clock=p.clock;
minute=p.minute;
second=p.second;
}
private:
intclock,minute,second;
};
voidmain()
{
timetime1;
time1.print_time();
timetime2(9,20,30);
time2.print_time();
timetime3(9,20,30);
timetime4(time3);
time3.print_time();
time4.print_time();
}
实验四类与对象
(二)
一、实验性质
验证性实验、设计性实验4学时
二、实验目的和要求
1.掌握对象数组的定义与使用方法。
2.理解对象指针的概念,学会用指针引用对象。
3.了解this指针的工作方式。
4.掌握静态数据成员和静态成员函数的基本使用方法。
5.理解友元与友元函数的作用,掌握其使用方法。
三、实验内容
使用实验三中的股票类stock,定义一个对象数组存放连续5个交易日的股票信息。
编写一个主函数,计算两个stock对象(前后两日)的当日收盘价,计算当日涨幅。
用指针引用对象数组中的两个对象。
在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。
在stock类中定义一个静态数据成员,记录当前stock对象的数量。
设计一个成员函数assign-stock为对象赋值,其中的形式参数是对另一个stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用assign-stock赋值的对象。
定义一个友元函数计算stock对象的当日开盘价是否高于当日开盘价。
若是,返回真;否则,返回假。
四、实验步骤
第一步:
定义类stock,计算两个stock对象(前后当日)的当日收盘价并计算当日涨幅。
#include“iostream.h”
constn=5;
classstock
{
public:
stock(){};
stock(intn,floatmi,floatb,floate);
voidset_stock(intn,floatma,floatmi,floatb,floate);
voidset_stock();
floatget-end();
voidshow_stock();
private:
intnumber;
floatmax,min,begin,end;
);
stock:
:
stock(intn,floatma,floatmi,floatb,floate)
{
number=n;
max=ma;
min=mi;
begin=b;
end=e;
}
voidstock:
:
set_stock(intn,floatma,floatmi,floatb,floate)
{
number=n;
max=ma;
min=mi;
begin=b;
end=e;
}
floatstock:
:
get_end()
{
returnend;
}
voidstock:
:
show_stock()
{
cout<cout<cout<cout<cout<}
voidstock:
:
set_stock()
{
cout<<”number:
”;
cin>>number;
cout<<”max:
”;
cin>>max;
cout<<”min:
”;
cin>>min;
cout<<”begin:
”;
cin>>begin;
cout<<”end:
”;
cin>>end;
}
voidmain()
{
inti;
stocksl[100];
stock*p;
for(i=0,p=s1;ip->set_stock();
for(i=0,p=s1;ip->show_stock();
for(i=1,p=s1+1;icout<<”\n”<<\
(p->get_end()-(p-1)->get_end())/(p-1)->get_end()*100<<”%”;
}
第二步:
添加静态数据成员。
#include
constn=2;
classstock
{
public:
stock(){}
stock(intn,floatma,floatmi,floatb,floate);
voidset_stock(intn,floatma,floatmi,floatb,floate);
voidset_stock();
floatget_end();
voidshow_stock();
intget_n_count();
private:
staticintn_count;
intnumber;
floatmax,min,begin,end;
};
intstock:
n_count=0;
stock:
:
stock(intn,floatma,floatmi,floatb,floate)
{
n_count++;
numb