c++课程实践.docx

上传人:b****3 文档编号:26564996 上传时间:2023-06-20 格式:DOCX 页数:26 大小:133.32KB
下载 相关 举报
c++课程实践.docx_第1页
第1页 / 共26页
c++课程实践.docx_第2页
第2页 / 共26页
c++课程实践.docx_第3页
第3页 / 共26页
c++课程实践.docx_第4页
第4页 / 共26页
c++课程实践.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

c++课程实践.docx

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

c++课程实践.docx

c++课程实践

江苏科技大学

 

 

课程实践报告

 

 

 

 

设计题目:

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

设计时间20011-3-6至2011-3-13

学院(系):

机械工程

专业班级:

机制3班

学生姓名:

郑杰学号0940202329

指导老师:

石亮

 

 

2011年03月

任务一

一、实践任务

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

二、系统设计

1、类的描述与定义

(1)私有数据成员

●floatarray[20]:

一维整型数组。

●intn:

数组中元素的个数。

(2)公有成员函数

●MOVE(floatb[],intm):

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

●voidaverage():

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

●voidprint():

输出一维数组。

2、主要函数设计

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

三、系统测试

voidmain()

{

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

intnum;

num=sizeof(b1)/sizeof(float);

MOVEs(b1,num);

s.average();

s.print();

}

 

四、实践小结

通过本题我学会了平均值的求法以及一组数的排序。

五、参考文献

[1]齐志昌。

软件工程。

北京:

高等教育出版社,2004

[2]钱雪忠。

数据库与SQLSever2005教程。

北京:

清华大学出版社,2007

[3]张荣梅,梁晓林等。

VisualC++实用教程。

北京:

中国铁道出版社,2008

[4]张岳新。

VisualC++程序设计。

苏州:

苏州大学出版社,2007

[5]祁云嵩,刘永良,华伟。

VisualC++程序设计解析与训练。

华东理工大学出版社,2006

六、源程序清单

#include

classMOVE{

private:

floatarray[20];

intn;

public:

MOVE(floatb[],intm)

{

for(inti=0;i

{

array[i]=b[i];

}

n=m;

}

voidaverage();

voidprint();

~MOVE()

{};

};

voidMOVE:

:

average()

{

floatave=0;

inti,j;

for(i=0;i

{

ave+=array[i];

}

ave/=n;

cout<

floatturn[20];

j=0;

for(i=0;i

{

if(array[i]<=ave)

{

turn[j]=array[i];

j++;

}

}

j=0;

for(i=0;i

{

if(array[i]>ave)

{

turn[n-1-j]=array[i];

j++;

}

}

for(i=0;i

{

array[i]=turn[i];

}

}

voidMOVE:

:

print()

{

for(inti=0;i

{

cout<

}

}

voidmain()

{

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

intnum;

num=sizeof(b1)/sizeof(float);

MOVEs(b1,num);

s.average();

s.print();

}

 

任务二

一、实践任务

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

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

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

二、详细设计

1、类的描述与定义

(1)私有数据成员

●char*str;

●inty:

标记是否为回文字符串。

(2)公有成员函数

●String(char*s):

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

y初始化为0。

●voidhuiwen():

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

●voidshow():

在屏幕上显示字符串。

2、主要函数设计

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

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

三、系统测试

voidmain()//测试;

{

chars[]="ababcedbaba";

Stringtest(s);

test.huiwen();

test.show();

}

四、实践小结

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

五、参考文献

[1]齐志昌。

软件工程。

北京:

高等教育出版社,2004

[2]钱雪忠。

数据库与SQLSever2005教程。

北京:

清华大学出版社,2007

[3]张荣梅,梁晓林等。

VisualC++实用教程。

北京:

中国铁道出版社,2008

[4]张岳新。

VisualC++程序设计。

苏州:

苏州大学出版社,2007

[5]祁云嵩,刘永良,华伟。

VisualC++程序设计解析与训练。

华东理工大学出版社,2006

六、源程序清单

#include

#include

classString{

private:

char*str;

inty;

public:

String(char*s)

{

intn=strlen(s);

str=newchar[n+1];

strcpy(str,s);

y=0;

}

voidhuiwen();

voidshow();

~String()

{if(str)delete[]str;}

};

voidString:

:

huiwen()//判断str所指向的字符串是否为回文字符串;

{

intn,judge=0;

n=strlen(str);

for(inti=0;i<(n/2);i++)

{

if(str[i]==str[n-1-i])judge++;

}

if(judge==i)y=1;

}

voidString:

:

show()//输出;

{

if(y==1)cout<<"y=1,¸该字符串是回文数"<

elsecout<<"y=0,该字符串不是回文数"<

}

voidmain()//测试;

{

chars[]="ababcedbaba";

Stringtest(s);

test.huiwen();

test.show();

}

任务三

一、实践任务

7.建立一个类PHALANX,生成并显示一个折叠方阵。

折叠方阵如下图所示。

折叠方阵的生成过程为:

起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。

二、详细设计

1、类的描述与定义

(1)私有数据成员

●int(*p)[20]:

指向按照折叠规律存放方阵的二维整型数组。

●intstartnum:

折叠方阵的起始数。

●intn:

存放方针的层数。

(2)公有成员函数

●PHALANX(ints,intm):

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

●voidprocess():

生成起始数为startnum的n行方阵。

●voidprint():

输出折叠方阵。

●~PHALANX():

析构函数。

2、主要函数设计

在主程序中对该类进行测试。

三、系统测试

voidmain()

{

ints1,m1;

cout<<"请输入该折叠方阵的起始数和行数";

cin>>s1>>m1;

PHALANXtest(s1,m1);

test.process();

test.print();

}

四、实践小结

根据折叠方阵的产生方式进行相应的逻辑循环实现。

五、参考文献

[1]齐志昌。

软件工程。

北京:

高等教育出版社,2004

[2]钱雪忠。

数据库与SQLSever2005教程。

北京:

清华大学出版社,2007

[3]张荣梅,梁晓林等。

VisualC++实用教程。

北京:

中国铁道出版社,2008

[4]张岳新。

VisualC++程序设计。

苏州:

苏州大学出版社,2007

[5]祁云嵩,刘永良,华伟。

VisualC++程序设计解析与训练。

华东理工大学出版社,2006

六、源程序清单

#include

classPHALANX{

private:

int(*p)[20];

intstartnum;

intn;

public:

PHALANX(ints,intm)

{

startnum=s;

n=m;

p=newint[m][20];

}

voidprocess();

voidprint();

~PHALANX()

{if(p)delete[]p;}

};

voidPHALANX:

:

process()//生成起始数为stratnum的n行螺旋方阵;

{

intturn;

turn=p[0][0]=startnum;

inti,j;

for(intk=n-2;k>=0;k--)//按照折叠方阵的生成过程进行赋值;

{

for(i=0,j=n-k-1;i

p[i][j]=++turn;

i--;

j--;

for(;j>=0;j--)

p[i][j]=++turn;

}

}

voidPHALANX:

:

print()

{

for(inti=0;i

{

for(intj=0;j

{

cout<

}

cout<

}

}

voidmain()

{

ints1,m1;

cout<<"请输入该折叠方阵的起始数和行数";

cin>>s1>>m1;

PHALANXtest(s1,m1);

test.process();

test.print();

}

任务四

一、实践任务

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

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

二、详细设计

1、类的描述与定义

(1)私有数据成员

●charstr1[80]:

存放被插入的字符串。

●charstr2[40]:

存放待插入的字符串。

(2)公有成员函数

●STRING(char*s1,char*s2):

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

●voidprocess():

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

●voidprint():

输出插入后的字符串。

2、主要函数设计

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

三、系统测试

voidmain()//测试

{

STRINGtest("ABCDE","abcde");

test.process();

test.print();

}

四、实践小结

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

五、参考文献

[1]齐志昌。

软件工程。

北京:

高等教育出版社,2004

[2]钱雪忠。

数据库与SQLSever2005教程。

北京:

清华大学出版社,2007

[3]张荣梅,梁晓林等。

VisualC++实用教程。

北京:

中国铁道出版社,2008

[4]张岳新。

VisualC++程序设计。

苏州:

苏州大学出版社,2007

[5]祁云嵩,刘永良,华伟。

VisualC++程序设计解析与训练。

华东理工大学出版社,2006

六、源程序清单

#include

#include

classSTRING{

private:

charstr1[80];//存放被插入的字符串;

charstr2[40];//存放待插入的字符串;

public:

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;i<2*n;i+=2,j++)

{

str1[i]=str2[j];//在空出的位置处依次插入字符串;

}

i--;

for(;j<=strlen(str2);j++,i++)

{

str1[i]=str2[j];//将过长额字符串放入被插入的字符串尾部,完成插入;

}

}

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

ABCDEFG->ABCDEFG->空格处插入abcde->AaBbCcDdEeFG;

{

for(i=n;i>strlen(str2)-1;i--)

{

str1[i+strlen(str2)]=str1[i];//比待插入的字符串长的部分均向后移strlen(str2)位;

}

for(i=strlen(str2)-1;i>0;i--)

{

str1[i+i]=str1[i];//之前的部分均向后移i位;

}

for(i=1,j=0;i<2*strlen(str2);i+=2,j++)

{

str1[i]=str2[j];//将待插入的字符串插入空格处,完成插入;

}

}

}

voidSTRING:

:

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

{

cout<<"插入后的字符串为:

"<

}

voidmain()//测试

{

STRINGtest("ABCDE","abcde");

test.process();

test.print();

}

 

任务五

一、实践任务

27.建立一个类NUM,求指定数据范围内的所有素数(质数)。

提示:

素数定义是“只能被1和它本身整除的整数”,即质数。

二、详细设计

1、类的描述与定义

(1)私有数据成员

●intdata[10]:

依次存放原始数据。

●intprime[10]:

存放指定数据内所求出的所有素数。

●intnum:

存放素数个数。

(2)公有成员函数

●NUM(intn[]):

构造函数,用参数n初始化data,同时初始化num为0。

●intisprime(intx):

判断x是否为素数。

若是素数,返回1,否则,返回0。

●voidprocess():

求指定data数组中的所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num。

●voidprint():

输出求出的素数个数及所有素数,每行输出4个素数。

2、主要函数设计

在主函数中完成对该类的测试。

定义NUM类对象test,通过test调用成员函数完成求素数及输出素数的工作。

原始数据为{4,5,9,11,36,29,31,101,56,199}。

三、系统测试

voidmain()

{

intn[]={4,5,9,11,36,29,31,101,56,199};

NUMtest(n);

test.process();

test.print();

}

四、实践小结

应熟练掌握质数的判断方法

五、参考文献

[1]齐志昌。

软件工程。

北京:

高等教育出版社,2004

[2]钱雪忠。

数据库与SQLSever2005教程。

北京:

清华大学出版社,2007

[3]张荣梅,梁晓林等。

VisualC++实用教程。

北京:

中国铁道出版社,2008

[4]张岳新。

VisualC++程序设计。

苏州:

苏州大学出版社,2007

[5]祁云嵩,刘永良,华伟。

VisualC++程序设计解析与训练。

华东理工大学出版社,2006

六、源程序清单

#include

#include

classNUM{

private:

intdata[10];

intprime[10];

intnum;

public:

NUM(intn[])

{

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

data[i]=n[i];//依次存放原始数据;

num=0;

}

intisprime(intx);

voidprocess();

voidprint();

};

intNUM:

:

isprime(intx)//判断x是否为素数。

若是素数,返回1,否则,返回0;

{

if(x>1)

{

if(x==2||x==3)return1;

else

{

for(inti=2;i<=sqrt(x);i++)

{

if(x%2==0)return0;

}

if(i>sqrt(x))return1;

}

}

elsereturn0;

}

voidNUM:

:

process()//求指定data数组中的所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num;

{

for(inti=0,j=0;i<10;i++)

{

if(isprime(data[i]))

{

prime[j]=data[i];//存放指定数据内所求出的所有素数;

j++;

num++;//存放素数个数;

}

}

}

voidNUM:

:

print()//输出求出的素数个数及所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num;

{

cout<<"素数个数为:

"<

for(inti=0;i

{

cout<

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

}

cout<

}

voidmain()

{

intn[]={4,5,9,11,36,29,31,101,56,199};

NUMtest(n);

test.process();

test.print();

}

 

任务六

一、实践任务

32.建立一个类SUM,使用二维数组输入“Followme”,“BASIC”,“Greatwall”,“Fortran”,“Pascal”,将它们按从小到大的顺序排列后输出。

二、详细设计

1、类的描述与定义

(1)私有数据成员

●int*p[5]:

存放二维数组每行的字符串的地址。

(2)公有成员函数

●SUM(intd[5][5]):

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

●voidprocess1():

对二维数组中存放的字符串进行排序。

●voidprint():

输出二维数组中排好序的字符串。

2、主要函数设计

在主程序中对该类进行测试。

三、系统测试

voidmain()

{//每个字符串的值为该字符串的首元素地址,故将每个地址值转换为整型数值保存在整型数组中;

Intd[5][5]={{int("Followme")},{int("BASIC")},{int("Greatwall")},{int("Fortran")},{int("Pascal")}};

SUMtest(d);

cout<<"原字符串为:

"<

test.print();

test.process1();

cout<<"排好序的字符串为:

"<

test.print();

}

四、实践小结

掌握各数据类型之间的转化。

五、参考文献

[1]齐志昌。

软件工程。

北京:

高等教育出版社,2004

[2]钱雪忠。

数据库与SQLSever2005教程。

北京:

清华大学出版社,2007

[3]张荣梅,梁晓林等。

VisualC++实用教程。

北京:

中国铁道出版社,2008

[4]张岳新。

VisualC++程序设计。

苏州:

苏州大学出版社,2007

[5]祁云嵩,刘永良,华伟。

VisualC++程序设计解析与训练。

华东理工大学出版社,2006

六、源程序清单

#include

#include

classSUM{

private:

int*p[5];//存放二维数组每行的字符串的地址;

public:

SUM(intd[5][5])

{

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

p[i]=(int*)d[i][0];//整型数组每行第0列保存字符串的地址(为int类型),故在赋值时需要转换为int*类型;

}

voidprocess1();

voidprint();

};

voidSUM:

:

process1()//对二维数组中存放的字符串进行排序;

{

int*t;

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

{

for(intj=i+1;j<5;j++)

{

if(strcmp((char*)p[i],(char*)p[j])>0)//将int*类型数据转换为char*类型,才可利用strcmp()函数对该地址值上的字符串比较,排序;

{

t=p[i];

p[i]=p[j];

p[j]=t;

}

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

当前位置:首页 > PPT模板 > 商务科技

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

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