江苏科技大学-C++课程实践报告答案Word格式.doc

上传人:聆听****声音 文档编号:271782 上传时间:2023-04-28 格式:DOC 页数:79 大小:2.16MB
下载 相关 举报
江苏科技大学-C++课程实践报告答案Word格式.doc_第1页
第1页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第2页
第2页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第3页
第3页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第4页
第4页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第5页
第5页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第6页
第6页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第7页
第7页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第8页
第8页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第9页
第9页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第10页
第10页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第11页
第11页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第12页
第12页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第13页
第13页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第14页
第14页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第15页
第15页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第16页
第16页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第17页
第17页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第18页
第18页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第19页
第19页 / 共79页
江苏科技大学-C++课程实践报告答案Word格式.doc_第20页
第20页 / 共79页
亲,该文档总共79页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

江苏科技大学-C++课程实践报告答案Word格式.doc

《江苏科技大学-C++课程实践报告答案Word格式.doc》由会员分享,可在线阅读,更多相关《江苏科技大学-C++课程实践报告答案Word格式.doc(79页珍藏版)》请在冰点文库上搜索。

江苏科技大学-C++课程实践报告答案Word格式.doc

SP(intn1,intk1)

{

n=n1;

k=k1;

}

intpower(intm,intn)

intp=1;

for(inti=1;

i<

n+1;

i++)

p*=m;

returnp;

intfun()

ints=0;

s+=power(i,k);

returns;

voidA()

cout<

<

"

n="

n<

k="

k<

f(n,k)="

fun()<

endl;

};

voidmain()

SPa(3,3);

a.power(3,3);

a.fun();

a.A();

}四、实践小结

掌握用循环语句求m^n,和m!

,熟练掌握函数的调用。

五、运行结果

任务三

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

lfloatarray[20]:

一维整型数组。

lintn:

数组中元素的个数。

lMOVE(floatb[],intm):

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

lvoidaverage():

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

lvoidprint():

输出一维数组。

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

四、实践小结

应熟练掌握数组与指针的应用。

任务四

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

lint*array:

lMOVE(intb[],intm):

lvoidexchange():

l~MOVE():

析构函数。

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

学会求数组中最大元素与最小元素方法,并实现交换。

任务六

6.定义一个字符串类String,实现判断该字符串是否为回文字符串。

所谓回文字符串,是指该字符串左右对称。

例如字符串“123321”是回文字符串。

lchar*str;

linty:

标记是否为回文字符串。

lString(char*s):

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

y初始化为0。

lvoidhuiwen():

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

lvoidshow():

在屏幕上显示字符串。

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

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

掌握判断回文字符串的一般形式。

任务十一

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

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

lcharstr1[80]:

存放被插入的字符串。

lcharstr2[40]:

存放待插入的字符串。

lSTRING(char*s1,char*s2):

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

lvoidprocess():

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

输出插入后的字符串。

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

#include<

string.h>

classSTRING{

private:

charstr1[80];

//存放被插入的字符串;

charstr2[40];

//存放待插入的字符串;

STRING(char*s1,char*s2)

strcpy(str1,s1);

strcpy(str2,s2);

voidprocess();

voidprint();

voidSTRING:

:

process()

inti,j;

intn=strlen(str1);

if(strlen(str2)>

strlen(str1))

{//当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法:

abcde->

abcde->

空格处依次插入ABCDEFG->

aAbBcCdDeEFG;

for(i=n-1;

i>

0;

i--)

{

str1[i+i]=str1[i];

//被插入的字符串由最后一位开始各位向后移动i位;

}

for(i=1,j=0;

2*n;

i+=2,j++)

str1[i]=str2[j];

//在空出的位置处依次插入字符串;

i--;

for(;

j<

=strlen(str2);

j++,i++)

//将过长额字符串放入被插入的字符串尾部,完成插入;

else//当待插入的字符串abcde比被插入的字符串ABCDEFG短时,逻辑算法:

ABCDEFG->

ABCDEFG->

空格处插入abcde->

AaBbCcDdEeFG;

for(i=n;

strlen(str2)-1;

str1[i+strlen(str2)]=str1[i];

//比待插入的字符串长的部分均向后移strlen(str2)位;

for(i=strlen(str2)-1;

//之前的部分均向后移i位;

2*strlen(str2);

//将待插入的字符串插入空格处,完成插入;

}

}

print()//输出插入后的字符串

cout<

插入后的字符串为:

str1<

voidmain()//测试

STRINGtest("

ABCDE"

"

abcde"

);

test.process();

test.print();

发现字符插入的规律,再依次放入相应字符位置。

任务十二

12.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。

例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。

lcharstr1[60]:

lcharstr3[100]:

存放插入后的字符串。

将str2中的字符串插入到str1中,存放到str3中。

charstr1[60];

charstr3[100];

strcpy(str3,str1);

//将str2中的字符串插入到str1中,存放到str3中;

str3<

ABCDEFG"

任务十三

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

lintarray[20]:

lvoidchange():

进行循环换位。

classMOVE{

intarray[20];

//一维整型数组;

intn;

//数组中的元素个数;

MOVE(intb[],intm)

for(inti=0;

m;

array[i]=b[i];

n=m;

voidchange();

voidMOVE:

change()//进行循环换位,即每个元素后移3位,最后3个元素移到最前面;

inttem[3];

//建立临时数组,用于存放最后3个元素;

inti=0;

while(i<

3)

tem[2-i]=array[n-1-i];

//将最后3个元素依次放入临时数组中;

i++;

for(i=0;

n-3;

i++)//将原数组的最后一个至第4个元素依次后移3位;

array[n-1-i]=array[n-1-3-i];

3;

i++)//将临时数组中存放的最后3个元素依次放入后移后的原数组中,完成循环换位;

array[i]=tem[i];

print()//输出一维数组;

for(inti=0;

n;

array[i]<

'

\t'

;

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

intn=sizeof(s)/sizeof(int);

MOVEtest(s,n);

test.change();

利用临时数组先保存后3位,再依次把数放入对应位。

任务十四

14.建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。

lchar*array:

一维字符数组。

lMOVE(charb[],intm):

进行排序换位。

在主程序中用数据"

fdsUFfsTjfsKFEkWC"

对该类进行测试。

char*array;

intn;

public:

MOVE(charb[],intm)

{ n=m;

array=newchar[n+1];

strcpy(array,b);

}

voidchange()

{

char*p1=newchar[strlen(array)+1];

//用于存大写;

char*p2=newchar[strlen(array)+1];

//存小写;

inti,j=0,k=0;

for(i=0;

strlen(array);

i++)//大写与小写分别存放;

{

if(array[i]>

='

A'

&

Z'

{

p1[j]=array[i];

j++;

}

else{p2[k]=array[i];

k++;

}

p1[j]=p2[k]='

\0'

strcat(p1,p2);

//存放大写组与小写组拼接;

strcpy(array,p1);

//拷贝至array;

delete[]p1;

delete[]p2;

}

voidprint()

{

cout<

array<

~MOVE()

{if(array)

delete[]array;

voidmain()

{

charb[]="

intn;

n=(sizeof(b)-1)/sizeof(char);

MOVEtest(b,n);

test.change();

test.print();

}

利用临时数组,分别保存大写与小写字母,再实现功能。

任务十五

16.定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。

方阵的变换形式为:

F=W*fT

f为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为

1001

0110

lint(*a)[4]:

a指向方阵数组。

lintw[4][4]:

w为变换矩阵。

lintm:

m表示方阵的行和列数。

lCMatrix(inta[][4],intm):

用给定的参数a和m初始化数据成员a和m;

对变换矩阵w进行初始化,要求必须用循环实现。

lvoidTransform():

根据上述变换算法,求出变换后的数组形式,存放在原始数组内。

在屏幕上显示数组元素。

l~CMatrix():

释放动态分配的空间。

在主程序中定义数组intarr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组。

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

classCMatrix{

int(*a)[4];

intw[4][4];

//变换矩阵

intm;

//表示方阵的行和列数;

CMatrix(inta[][4],intm)

inti,j;

this->

a=newint[m][4];

m=m;

for(i=0;

4;

for(j=0;

j++)

{

if(i==j||i+j==4-1)

w[i][j]=1;

else

w[i][j]=0;

}

this->

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

voidTransform();

voidshow();

~CMatrix()

{if(a)delete[]a;

voidCMatrix:

Transform()//根据变换算法,求出变换后的数组形式,存放在原始数组内;

inti,j,k;

i++)//求原始矩阵的转置,并存放在原始数组中;

for(j=i;

k=a[i][j],a[i][j]=a[j][i],a[j][i]=k;

intsum;

//用来存放矩阵乘法中,行列中元素依次相乘的累加和;

intturn[4][4];

//临时数组,用来存放矩阵乘法所求得的值;

i++)//实现矩阵的乘法;

for(j=0;

sum=0;

for(k=0;

k++)

sum+=w[i][k]*a[k][j];

turn[i][j]=sum;

i++)//将临时数组的值存放入原始数组中;

a[i][j]=turn[i][j];

show()//在屏幕上显示数组元素;

for(intj=0;

cout<

a[i][j]<

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

CMatrixtest(arr,4);

原矩阵为:

test.show();

test.Transform();

经线性变换后的矩阵为:

应熟练掌握矩阵的乘法方

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

当前位置:首页 > 求职职场 > 简历

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

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