VC++课程实践报告hw.docx

上传人:b****3 文档编号:4383923 上传时间:2022-12-01 格式:DOCX 页数:20 大小:24.39KB
下载 相关 举报
VC++课程实践报告hw.docx_第1页
第1页 / 共20页
VC++课程实践报告hw.docx_第2页
第2页 / 共20页
VC++课程实践报告hw.docx_第3页
第3页 / 共20页
VC++课程实践报告hw.docx_第4页
第4页 / 共20页
VC++课程实践报告hw.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

VC++课程实践报告hw.docx

《VC++课程实践报告hw.docx》由会员分享,可在线阅读,更多相关《VC++课程实践报告hw.docx(20页珍藏版)》请在冰豆网上搜索。

VC++课程实践报告hw.docx

VC++课程实践报告hw

 

 

课程实践报告

 

 

 

 

 

设计题目:

计算机程序设计实践(VC++)

设计时间:

2012.9.16至2013.9.17

学院:

电子信息学院

专业班级:

学生姓名:

_学号

指导老师:

 

 

2012年9月18日

一、实践任务

任务一:

试建立一个类SP,求f(n,k)=1k+2k+3k+…+nk,另有辅助函数power(m,n)用于求mn。

具体要求如下:

(1)私有成员数据:

●intn,k:

存放公式中n和k的值;

(2)公有成员函数:

●SP(intn1,intk1):

构造函数,初始化成员数据n和k。

●intpower(intm,intn):

求mn。

●intfun():

求公式的累加和。

●voidshow():

输出求得的结果。

(3)在主程序中定义对象s,对该类进行测试。

任务二:

建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。

具体要求如下:

(1)私有数据成员:

●floatarray[20]:

一维整型数组。

●intn:

数组中元素的个数。

(2)公有成员函数:

●MOVE(floatb[],intm):

构造函数,初始化成员函数。

●voidaverage():

输出平均值,并将数组中的元素按要求重新放置。

●voidprint():

输出一维数组。

(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。

任务三:

建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。

具体要求如下:

(1)私有数据成员:

●int*array:

一维整型数组。

●intn:

数组中的元素的个数。

(2)公有数据成员:

●MOVE(intb[],intm):

构造函数,初始化成员数据。

●voidexchange():

输出平均值,并将数组中的元素按要求重新放置。

●voidprint():

输出一维数组。

●~MOVE():

析构函数。

(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。

任务四:

建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。

具体要求如下:

(1)私有成员数据:

●intarray[20]:

一维数组整型。

●intn:

数组中元素的个数。

(2)公有成员数据:

●MOVE(intb[],intm):

构造函数,初始化成员数据。

●voidchange():

进行循环换位。

●voidprint():

输出一维数组。

(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。

任务五:

定义一个类SIN,求sin(x)=x/1-x3/3!

+x5/5!

-x7/7!

+…+(-1)n+1x(2n-1)/(2n-1)

具体要求如下:

(1)私有成员数据:

●intx:

输入公式中x的值,求sin(x)。

●intn:

输入公式中n的值。

(2)公有成员数据:

●SIN(intx,intn):

构造函数,用于初始化x和n的值。

●intpower(intq):

求q!

的值。

●intmi(intm,intn):

求mn的值。

●intfun():

用于求SIN(X)的值。

●voidshow():

输出求得结果。

(3)在主程序中定义对象test,对该类进行测试。

任务六:

定义一个方阵累Array,实现对方阵进行顺时针90度旋转,如图所示。

123413951

5678141062

9101112151173

13141516161284

具体要求如下:

(1)私有成员数据:

●inta[4][4]:

用于存放方阵。

(2)公有成员数据:

●Arrat(inta1[][4],intn):

构造函数,用给定的参数a1初始化数据成员a。

●voidxuanzhuan():

实现对方阵a进行顺时针90度的旋转。

●voidshow():

在屏幕上显示数组元素。

(3)在主程序中定义数组intb[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组,定义一个Array类对象test,用b初始化test,完成对该类的测试。

二、系统设计

任务一

1.任务(系统)分析

通过求出数据辅助函数power()求出mn的值,在成员函数fun()中计算出所求值类的定义如下:

classSP{

intn,k;

public:

SP(intn1,intk1);

intpower(intm,intn);

intfun();

voidshow();

};

2.算法设计

(1)求mn

利用循环语句,定义整数mul=1,i=0当i

(2)求累加和

利用循环语句,定义整数sum=0,j=1,i<=n时,sum+=power(j,k),然后j自增,然后返回sum。

3.系统测试

在主函数中初始化SP的对象,并调用其成员函数show()输出测试结果(整数n和k)。

主函数定义如下:

voidmain()

{

intn,k;

cin>>n>>k;

SPtest(n,k);

test.fun();

test.show();

}

用以测试的数为:

n:

2,k:

2

预期的输出结果为:

结果为:

5

任务二

1.任务(系统)分析

通过与数组值平均值比较大小来重新放置各元素,类定义如下:

classMOVE

{

floatarray[20];

intn;

public:

MOVE(floatb[],intm);

voidaverage();

voidprint();

};

2.算法设计

(1)一维数组的赋值:

MOVE:

:

MOVE(floatb[],intm)

{

n=m;

for(inti=0;i

array[i]=b[i];

}

(2)数组的重新排序:

先求出平均值,在将数组元素与该平均值进行比较,进而移位

voidMOVE:

:

average()

{

floatsum=0,c[20],q;

statici=n,p=0;

for(intj=0;j

sum+=array[j];

q=sum/n;}

cout<<"平均数为"<

for(intk=0;k

{c[k]=array[k];

if(c[k]

if(c[k]>q)array[i--]=c[k];

}

}

3.系统测试

在主函数中定义MOVE的对象test,

定义一维数组{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}。

用以测试的整数为:

{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}

预期的输出结果为:

平均数为:

5.43333

1.334.82.34.89.25.67.49.16.2

 

任务三

1.任务(系统)分析

通过成员函数exchange()定义整数average,通过循环语句,求出平均值average,定义整数i=0,定义最大值x1=array[0],最小值x2=array[0],随着i的递增,一次求出array[i],并将array[i]分别与x1,x2比较,从而实现重新排序。

类的定义如下:

classMOVE{

int*array;

intn;

public:

MOVE(intb[],intm);

voidexchange();

voidprint();

~MOVE();

};

2.算法设计

(1)通过成员函数exchange()定义的进度实数sum,通过循环语句,求出平均值average,定义整数i=0,定义最大值x1=array[0],最小值x2=array[0],随着i的递增,一次求出array[i],并将array[i]分别与x1,x2比较,从而实现互换。

(2)通过print()函数输出刚刚求出的array[i];

3.系统测试

在主函数中初始化MOVE的对象,并调用其成员函数print()输出测试结果。

主函数定义如下:

voidmain()

{

intb[10]={21,65,43,87,12,84,44,97,32,55};

MOVEtest(b,10);

test.exchange();

test.print();

}

用以测试的数为:

21,65,43,87,12,84,44,97,32,55

预期的输出结果为:

21,65,43,87,97,84,44,12,32,55

任务四:

1.任务(系统)分析

通过类MOVE的构造函数初始化一维数组array[20],通过调用change()实现元素的换位移动,通过print()函数实现移动后数组的输出。

类的定义如下:

classMOVE{

intarray[20];

intn;

public:

MOVE(intb[],intm);

voidchange();

voidprint();

};

2.算法设计

将前三项数据保存在变量中

定义三个变量a,b,c;将数组的前三项一一赋值给k1,k2,k3,

将数组中的第最后前三项分别换位到一二三项中

用循环for语句,将最后三项一次赋值到一二三项中

将数组中的第三项以后,最后三项以前的所有数据向后移三个位置,通过循环for语句实现。

将k1,k2,k3中的数据分别保存到数组的四五六项中,这样完整的数组就变换完成了。

3.系统测试

在主函数中定义一个数组,a[]={21,65,43,87,12,84,44,97,32,55},定义一个类MOVE的对象t,并用数组a[10]初始化该对象。

通过该对象调用循环换位函数change(),实现数组中数据的循环换位。

再通过该对象调用输出函数print()将换位后的函数输出。

主函数的定义如下:

voidmain(){

inta[]={21,65,43,87,12,84,44,97,32,55};

MOVEtest(a,10);

test.change();

test.print();

}

预期的输出结果为:

97325521654387128444

任务五

1.任务(系统)分析

通过类SIN的构造函数初始化x和n的值,在数据辅助函数power()中求出q!

的值,在函数mi()中求出mn的值,通过成员函数fun()计算出所求值,通过show()输出所求值。

类的定义如下:

#include

classSIN{

intx;

intn;

public:

SIN(intx1,intn1);

intpower(intq);

intmi(intm,intn);

intfun();

voidshow();

};

2.算法设计

求q!

定义一个整型变量t,用递归函数求出q!

的值,令t=q*power(q-1)。

求mn

利用循环语句,定义整数a,b,定义双精度实数c,b=a*a,c=a,i=0当i<(2*n-1)时,c*=b;c*=-1;

求SIN(X)

定义双精度实型变量sum=0,d,e,f,定义整型变量n,x,利用递归语句,d=power((2n)-1);

e=mi(m,n);f=d/e;sum=sum+f;最后返回sum的值。

3.系统测试

在主函数中以整数初始化test的对象,通过该对象调用成员函数fun()得到所求的值,并调用其成员函数show()输出测试结果。

主函数的定义如下:

voidmain(){

intn,x;

SINtest(x,n);

test.fun();

test.show();

}

用以测试的数为:

22

预期的输出结果为:

sin(x)=0.6666667

任务六

1.任务(系统)分析

利用循环语句依次改变每个对象的行下标和列下标,从而实现整个方阵的旋转。

类的定义如下:

classArray{

inta[4][4];

public:

Array(inta1[][4],intn);

voidxuanzhuan();

voidshow();

};

2.算法设计

(1)在xuanzhuan()函数中,定义inta2[4][4];inti=0,intj=0;intk=0利用循环语句使a[j][3-k]=a2[k][j],从而实现方阵的顺时针旋转。

(2)通过show()函数输出结果。

3.系统测试

在主函数中初始化Array的对象,并调用其成员函数show()输出测试结果。

主函数定义如下:

voidmain()

{

intb[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

Arraytest(b,16);

test.xuanzhuan();

test.show();

}

用以测试的数为:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

预期的输出结果为:

123413951

5678141062

9101112151173

13141516161284

三、实践小结

(说明:

主要写实践心得、实践中遇到的问题,是如何解决的。

通过上机实践熟练掌握了一维数组和二维数组的运用,特别是构造函数方面,以及有关函数多态性,明白了它的流程,但是从中也遇到了一些疑问。

析构函数的使用不是很清楚,我主要通过向他人请教,以及翻阅教材中有关章节,还有去图书馆查阅相关资料在多做一些类似的题目(主要是解析实训上的大量习题)去锻炼自己,看自己是否能熟练操作。

构造函数对成员数据初始化有时也不能很精准的掌握,多看看以前做过的题目,从题目中总结经验,得出一些它们的规律,找出相似之处。

对于链表等等这些章节,多是以回归课本,看看书,来了解它的意思。

四、参考文献

[1]齐治昌.软件工程[M].北京:

高等教育出版社出版,2004,35-60

[2]钱雪忠.数据库与SQLServer2005教程[M].北京:

清华大学出版社,2007,194-365

[3]张荣梅,梁晓林等.VisualC++实用教程[M].北京:

中国铁道出版社,2008,31-48

……

五、源程序清单

任务一:

#include

classSP

{

intn,k;

public:

SP(intn1,intk1)

{

n=n1;

k=k1;

}

intpower(intm,intn)

{

intmul=1;

for(inti=0;i

mul*=m;

returnmul;

}

intfun()

{

intsum=0;

for(intj=1;j<=n;j++)

{

sum+=power(j,k);

}

returnsum;

}

voidshow()

{

cout<

}

};

voidmain()

{

intn;

intk;

cin>>n>>k;

SPtest(n,k);

test.show();

}

任务二:

#include

classMOVE

{

floatarray[20];

intn;

public:

MOVE(floatb[],intm);

voidaverage();

voidprint();

};

MOVE:

:

MOVE(floatb[],intm)

{

n=m;

for(inti=0;i

array[i]=b[i];

}

voidMOVE:

:

average()

{

floatsum=0,c[20],q;

statici=n,p=0;

for(intj=0;j

sum+=array[j];

q=sum/n;}

cout<<"平均数为"<

for(intk=0;k

{c[k]=array[k];

if(c[k]

if(c[k]>q)array[i--]=c[k];

}

}

voidMOVE:

:

print()

{

for(inti=0;i

cout<

}

voidmain()

{

floatarray[20]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};

MOVEtest(array,9);

test.average();

test.print();

}

任务三:

#include

classMOVE

{

int*array;intn;

public:

MOVE(intb[],intm)

{

array=newint[n];

for(inti=0;i<=n;i++){

array[i]=b[i];}

n=m;

}

voidexchange()

{

floatsum=0;

for(inti=0;i

{

sum+=array[i];

sum/=n;

}

intx1=array[0],x2=array[0],s1,s2,s3;

for(intj=0;j

{if(x1>array[j]){x1=array[j];

s2=j;}

if(x2

s3=j;}

}

s1=array[s2];

array[s2]=array[s3];

array[s3]=s1;

}

voidprint()

{

for(inti=0;i

cout<

}

~MOVE()

{

if(array)delete[]array;

}

};

voidmain()

{

intb[10]={21,65,43,87,12,84,44,97,32,55};

MOVEtest(b,10);

test.exchange();

test.print();

}

任务四:

#include

#include

classMOVE

{

intarray[20];

intn;

public:

MOVE(intb[],intm)

{

for(inti=0;i<20;i++)

{

array[i]=b[i];

}

n=m;

}

voidchange()

{

intk1,k2,k3;

k1=array[n-1];

k2=array[n-2];

k3=array[n-3];

for(inti=n-4;i>=0;i--)

{

array[i+3]=array[i];

}

array[0]=k3;

array[1]=k2;

array[2]=k1;

}

voidprint()

{

for(intm=0;m

{

cout<

}

}

};

voidmain()

{

inta[]={21,65,43,87,12,84,44,97,32,55};

MOVEtest(a,10);

test.change();

test.print();

}

任务五:

#include

classSIN

{

intx;

intn;

public:

SIN(intx,intn);

intpower(intq);

intmi(intm,intn);

intfun();

voidshow();

};

SIN:

:

SIN(intx,intn){

}

intSIN:

:

power(intq){

intt;

if(q==1)t=1;

elset=q*power(q-1);

returnt;

}

intSIN:

:

mi(intm,intn){

inta,b;

doublec;

b=a*a;

c=a;

for(inti=0;i<=(2*n-1);i+=2){

c=c*b;

c=c*(-1);

}

returnc;

}

intSIN:

:

fun(){

doublesum=0;

doubled,e,f;

intn,x;

d=power((2n)-1);

e=mi(m,n);

f=d/e;

sum=sum+f;

returnsum;

}

voidSIN:

:

show(){

cout<<"SIN(X)="<

}

voidmain(){

intx,n;

SINtest(x,n);

test.show();

}

任务六:

#include

classArray

{

inta[4][4];

public:

Array(inta1[][4],intn);

voidxuanzhuan();

voidshow();

};

Array:

:

Array(inta1[][4],intn)

{

for(inti=0;i<4;i++)

{

for(intj=0;j<4;j++)

a[i][j]=a1[i][j];

}

}

voidArray:

:

xuanzhuan()

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1