完整版江苏科技大学VC++程序实践答案.docx

上传人:b****2 文档编号:1918426 上传时间:2023-05-02 格式:DOCX 页数:22 大小:50.10KB
下载 相关 举报
完整版江苏科技大学VC++程序实践答案.docx_第1页
第1页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第2页
第2页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第3页
第3页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第4页
第4页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第5页
第5页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第6页
第6页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第7页
第7页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第8页
第8页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第9页
第9页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第10页
第10页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第11页
第11页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第12页
第12页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第13页
第13页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第14页
第14页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第15页
第15页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第16页
第16页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第17页
第17页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第18页
第18页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第19页
第19页 / 共22页
完整版江苏科技大学VC++程序实践答案.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整版江苏科技大学VC++程序实践答案.docx

《完整版江苏科技大学VC++程序实践答案.docx》由会员分享,可在线阅读,更多相关《完整版江苏科技大学VC++程序实践答案.docx(22页珍藏版)》请在冰点文库上搜索。

完整版江苏科技大学VC++程序实践答案.docx

完整版江苏科技大学VC++程序实践答案

江苏科技大学

 

VC++实践报告

 

一、实践任务

任务一(第2题):

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

具体要求如下:

(1)私有成员数据:

intn,k:

存放公式中n和k得值。

(2)公有成员函数:

SP(intn1,intk1):

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

intpower(intm,intn):

求m^n。

intfun():

求公式的累加和。

voidshow():

输出求的结果。

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

任务一分析

1、任务分析

通过SP的成员函数power()可求出m^n的值,再通过累加函数fun(),可求出累加和。

类的定义如下:

#include

classSP

{

intn,k;

public:

SP()

intpower()

intfun()

voidshow()

};

2、算法设计

求m^n:

定义变量P=1,循环n次,每次循环P乘以m

求累加和:

定义变量S=0,通过for循环,将power()函数计算的结果累加。

3、系统测试

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

主函数定义如下:

voidmain()

{

SPa(2,3);

a.power(2,3);

a.fun();

a.show();

}

用以测试的数据为:

n=2,k=3;

预期的输出结果为:

当n=2,k=3时,f(n,k)=9

任务一程序

#include

classSP

{

intn,k;

public:

SP(intn1,intk1)

{

n=n1;k=k1;

}

intpower(intm,intn)

{

intp=1;

for(inti=1;i<=n;i++)

p*=m;

returnp;

}

intfun()

{

ints=0;

for(inti=1;i<=n;i++)

s+=power(i,k);

returns;

}

voidshow()

{

cout<<"当n="<

}

};

voidmain()

{

SPa(2,3);

a.power(2,3);

a.fun();

a.show();

}

 

任务二(第24题):

建立一个NUM,并统计特定序列中相同的字符的个数。

具体要求如下:

(1)、私有数据成员

●chardata[25]:

随机生成25个字符。

●intnum[128]:

储存每个字符出现的个数。

(1)公有成员函数

●NUM(intdata):

构造函数,同时初始化数组data。

●voidprocess():

统计data中没得字符出现的个数,并保存到数组num中。

●voidprint():

输出每个出现过的额字符及其出现的个数,每行输出5个,没有出现过的字符不显示

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

1、任务(系统)分析

由利用头文件#include,程序会自动产生随机的整数,在主函数中将整数转化为字符,用字符初始化类的对象,用循环语句遍历真个字符数组,用这些字符的ASCII字判断它们所出现的次数,然后输出。

类的定义如下:

classNUM

{

chardata[25];

intnum[128];

public:

NUM(chara[25])

voidprocess()

voidprint()

};

任务二分析

(1)将程序随机产生的整数利用循环语句转换为字符,保存在数组a中

(2)将num数组中的每一个元素初始化为0,然后利用这些字符的ASCII字判断它们所出现的次数,保存在num中;

3.系统测试

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

主函数定义如下:

voidmain()

{

chara[25];

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

a[i]=rand()%128;

a[24]=0;

NUMt(a);

t.process();

t.print();

}

输出结果为:

任务二程序

#include

classNUM{

chardata[25];

intnum[128];

public:

NUM(intdata)

{

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

this->data[i]=rand()%128;

}

voidprocess()

{

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

num[i]=0;

for(i=0;i<25;i++)

num[data[i]]++;

}

voidprint()

{

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

{

cout<

if((i+1)%5==0)cout<

intk=0;

for(i=0;i<128;i++)

{if(num[i]!

=0)

{chartemp=i;

cout<

k++;}

if(k%5==0)cout<

}

}

};

voidmain()

{

NUMtest

(1);

test.process();

test.print();

}

 

任务三(第13题):

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

具体要求如下:

(1)私有数据成员

intarray[20]:

一维整型数组。

intn:

数组中元素的个数。

(2)公有成员函数

MOVE(intb[],intm):

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

voidchange():

进行循环换位。

voidprint():

输出一维数组。

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

任务三分析

1、任务分析

初始化对象数组,定义3个变量依次存放对象数组的最后3个元素。

通过循环语句将前面的元素依次后移3个单位。

最后再把3个变量中的元素值赋给最前的三个数。

类的定义如下:

#include

classMOVE

{

intarray[20];

intn;

public:

MOVE(intb[],intm)

voidchange()

voidprint()

};

2、算法设计

初始化对象数组,定义3个变量a,b,c,依次将array数组的最后三个元素赋给它们。

再通过for循环语句,依次把前面的元素后移3位。

最后再把3个变量中的元素值赋给最前的三个数。

3、系统测试

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

主函数的定义如下:

voidmain()

{

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

MOVEs(a,10);

s.change();

s.print();

}

用以测试的数据为:

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

预期的结果为:

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

任务三程序

#include

classMOVE

{

intarray[20];

intn;

public:

MOVE(intb[],intm)

{

n=m;

for(inti=0;i

array[i]=b[i];

}

voidchange()

{

inta,b,c,t=n;

a=array[t-1];b=array[t-2];c=array[t-3];

for(1;t-4>=0;t--)

array[t-1]=array[t-4];

array[0]=c;array[1]=b;array[2]=a;

}

voidprint()

{

for(inti=0;i

cout<

cout<

}

};

voidmain()

{

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

MOVEs(a,10);

s.change();

s.print();

}

 

任务四(第4题):

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

具体要求如下:

(1)私有成员数据

int*array:

一维整型数组。

intn:

数组中元素的个数。

(2)公有成员函数

MOVE(floatb[],intm):

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

voidexchange():

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

voidprint():

输出一维数组。

~MOVE():

析构函数。

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

任务四分析

1、任务分析

给成员数据array分配合适大小的动态空间。

初始化后,通过for从句计算得出所有元素的和,之后求出平均值。

通过互换函数exchange()互换最值。

最后释放动态空间。

类的定义如下:

#include

classMOVE

{

int*array;

intn;

public:

MOVE(intb[],intm)

voidexchange()

voidprint()

~MOVE()

};

2、算法设计

初始化后,通过for从句计算得出所有元素的和,之后求出平均值。

互换最值:

将第一个元素array[0]分别赋给最大值max和最小值min。

通过for从句,依次将后续元素和最值比较。

若比最大值大,则将该元素的值赋给max,同时记录元素位置,记为array[x];若比最小值小,则将该元素的值赋给min,同时记录元素位置array[y]。

遍阅完毕后,互换最值。

1、系统测试

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

主函数的定义如下:

voidmain()

{

intb[]={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

 

任务四程序

#include

classMOVE

{

int*array;

intn;

public:

MOVE(intb[],intm)

{

n=m;

array=newint[n];

for(inti=0;i

array[i]=b[i];

}

voidexchange()

{

ints=0,max,min,x,y;

floatave;

max=min=array[0];

for(inti=0;i

{

s+=array[i];

if(array[i]>max){max=array[i];x=i;}

if(array[i]

}

ave=s/n;

cout<<"该数组的平均值为:

"<

array[y]=max;array[x]=min;

}

voidprint()

{

for(inti=0;i

cout<

}

~MOVE()

{

delete[]array;

}

};

voidmain()

{

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

MOVEtest(b,10);

test.exchange();

test.print();

}

 

任务五(第6题):

定义一个字符窜类String,实现判断该字符窜是否为回文字符窜,所谓回文字符窜就是指该字符窜左右对称。

具体要求如下:

(1)私有数据成员

char*str;

nty:

标记是否为回文字符窜

(2)公有成员函数

String(char*s):

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

Y初始化为0.

voidhuiwen():

判断str所指的字符窜是否为回文字符窜。

voidshow():

在屏幕上显示字符窜。

(3)在主程序中定义字符窜chars[]=”ababcedbaba”作为原始字符窜。

定义一个String类对象test,用s初始化test,完成对该类的测试。

任务五分析

1、任务分析

给数据成员str分配合适大小的动态空间。

初始化后,通过回文字符窜判断函数huiwen()进行判断。

输出字符窜,最后释放动态空间。

类的定义如下:

#include

#include

classString

{

char*str;

inty;

public:

String(char*s)

voidhuiwen()

voidshow()

~String(){delete[]str;}

};

2、算法设计

初始化后,定义变量y=1。

将字符窜str赋值给数组t,让数组t指针自增到指向最后一个元素。

同时让指针q指向原数组str的第一个元素。

通过for语句和if语句判断,循环时让t自减,q自增。

若循环过程中出现两指针所指元素不相等,则y=0。

最后通过switch语句输出判断提示语。

3、系统测试

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

主函数的定义如下:

voidmain()

{

chars[]="ababcedbaba";

Stringtest(s);

test.show();

test.huiwen();

}

用以测试的数据为:

"ababcedbaba"

预期的结果为:

"ababcedbaba"

该数组不是回文字符窜。

任务五程序

#include

#include

classString

{

char*str;

inty;

public:

String(char*s)

{

y=0;

str=newchar[strlen(s)+1];

strcpy(str,s);

}

voidhuiwen()

{

char*t,*q=str;

inty=1;

t=str;

while(*t)t++;

t--;

for(;q

{

if(q++!

=t--)y=0;

}

switch(y)

{

case1:

cout<<"该数组为回文数组."<

case0:

cout<<"该数组不是回文数组."<

}

}

voidshow()

{

cout<

}

~String(){delete[]str;}

};

voidmain()

{

chars[]="ababcedbaba";

Stringtest(s);

test.show();

test.huiwen();

}

 

任务六(第11题):

建立一个STRING,将一个字符窜交叉插入到另一个字符窜中(假定字符窜等长)。

例如将字符窜”abcde”交叉插入字符窜”ABCDE”的结果为”aAbBcCdDeE”或是”AaBbCcDdEe”。

具体要求如下:

(1)私有数据成员

charstr1[80]:

存放被插入的字符窜。

charstr2[40]:

存放待插入的字符窜。

(2)公有成员函数

STRING(char*s1,char*s2):

构造函数,用s1和s2初始化str1和str2。

voidprocess():

将str2中的字符串插入到str1中。

voidprint():

输出插入后的字符串。

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

任务六分析

1、任务分析

定义2个字符数组,保存需要交相出入的2个字符串。

再临时定义第三个字符串t用以保存被插入的字符串str1。

通过循环语句把需插入的字符串str2插入到被插入字符串str1中。

类的定义如下:

#include

#include

classSTRING

{

charstr1[80];

charstr2[40];

public:

STRING(char*s1,char*s2)

voidprocess()

voidprint()

};

2、算法设计

初始化2个字符串str1和str2。

定义第三个字符串t,将被插入字符串str1复制到t中。

通过while语句,让指向str1的指针在每被插入一次字符就自增一次。

插入字符串str2和t在每次插入一个字符之后都自增一次。

3、系统测试

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

主函数的定义如下:

voidmain()

{

chars1[20]="abcde";chars2[20]="ABCDE";

STRINGtest(s1,s2);

test.process();

test.print();

}

用以测试的数据为:

"abcde""ABCDE"

预期的结果为:

”aAbBcCdDeE”

 

任务六程序

#include

#include

classSTRING

{

charstr1[80];

charstr2[40];

public:

STRING(char*s1,char*s2)

{

strcpy(str1,s1);

strcpy(str2,s2);

}

voidprocess()

{

chart[80];

strcpy(t,str1);

inti=0,j=0;

while(str2[i])

{

str1[j++]=str2[i];

str1[j++]=t[i];

i++;

}

str1[j]='\0';

}

voidprint()

{

cout<

}

};

voidmain()

{

chars1[20]="abcde";chars2[20]="ABCDE";

STRINGtest(s1,s2);

test.process();

test.print();

}

 

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2