实践报告答案江苏科技大学 C++.docx
《实践报告答案江苏科技大学 C++.docx》由会员分享,可在线阅读,更多相关《实践报告答案江苏科技大学 C++.docx(17页珍藏版)》请在冰豆网上搜索。
![实践报告答案江苏科技大学 C++.docx](https://file1.bdocx.com/fileroot1/2023-1/31/c0c49c0c-4f8d-4a83-b7bf-3f4a41fd79aa/c0c49c0c-4f8d-4a83-b7bf-3f4a41fd79aa1.gif)
实践报告答案江苏科技大学C++
江苏科技大学
课程实践报告
设计题目:
程序设计(VC++)实践
设计时间至
学院(系):
专业班级:
学生姓名:
学号
指导老师:
2013年12月
任务一
一、实践任务
2.试建立一个类SP,求
,另有辅助函数power(m,n)用于求
。
二、详细设计
1、类的描述与定义
(1)私有数据成员
●intn,k:
存放公式中n和k的值;
(2)公有成员函数
●SP(intn1,intk1):
构造函数,初始化成员数据n和k。
●intpower(intm,intn):
求mn。
●intfun():
求公式的累加和。
●voidshow():
输出求得的结果。
2、主要函数设计
在主程序中定义对象s,对该类进行测试。
三、源程序清单
#include
classSP
{
intn,k;
public:
SP(intn1,intk1)
{
n=n1;k=k1;
}
intpower(intm,intn)
{
intp=1;
for(inti=1;ip*=m;
returnp;
}
intfun()
{
ints=0;
for(inti=1;is+=power(i,k);
returns;
}
voidA()
{
cout<<"n="<}
};
voidmain()
{
SPa(3,3);
a.power(3,3);
a.fun();
a.A();
}四、实践小结
掌握用循环语句求m^n,和m!
,熟练掌握函数的调用。
五、运行结果
任务二
一、实践任务
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}对该类进行测试。
三、源程序清单
#include
classMOVE{
floatarray[20];
intn;
public:
MOVE(floatb[],intm)
{
n=m;
for(inti=0;iarray[i]=b[i];
}
voidaverage()
{
floatt=0;
for(inti=0;it+=array[i];
floatD=(t/n);
cout<<"平均值为:
"<intj=n-1;
for(i=0;i{
while(array[i]<=D)i++;
while(array[j]>D)j--;
t=array[i];
array[i]=array[j];
array[j]=t;
}
}
voidprint()
{
for(inti=0;icout<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();
}
四、实践小结
应熟练掌握数组与指针的应用。
五、运行结果
任务三
一、实践任务
4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。
二、详细设计
1、类的描述与定义
(1)私有数据成员
●int*array:
一维整型数组。
●intn:
数组中元素的个数。
(2)公有成员函数
●MOVE(intb[],intm):
构造函数,初始化成员数据。
●voidexchange():
输出平均值,并将数组中的元素按要求重新放置。
●voidprint():
输出一维数组。
●~MOVE():
析构函数。
2、主要函数设计
在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。
三、源程序清单
#include
classMOVE
{
int*array;
intn;
public:
MOVE(intb[],intm)
{
n=m;
array=newint[n];
for(inti=0;iarray[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;icout<}
~MOVE()
{
delete[]array;
}
};
voidmain()
{
intB[]={21,65,43,87,12,84,44,97,32,55};
MOVEtest(B,10);
test.exchange();
test.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,完成对该类的测试。
三、源程序清单
#include
#include
classString
{
char*str;
inty;
public:
String(char*s)
{
str=newchar[strlen(s)+1];
strcpy(str,s);
y=0;
}
voidhuiwen()
{
char*p1=str,*p2=str;
while(*p2)p2++;p2--;
for(;p1if(*p1!
=*p2)
{
y=1;
break;
}
}
voidshow()
{
if(y)
cout<elsecout<}
};
voidmain()
{
StringA("1253321");
A.huiwen();
A.show();
}
四、实践小结
掌握判断回文字符串的一般形式。
五、运行结果
任务五
一、实践任务
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对该类进行测试。
三、源程序清单
#include
#include
classSTRING{
charstr1[80],str2[40];
public:
STRING(char*s1,char*s2)
{
strcpy(str1,s1);
strcpy(str2,s2);
}
voidprocess()
{
inti=0,j=0;
chart[80];
strcpy(t,str1);
while(str2[j])
{
str1[i++]=t[j];
str1[i++]=str2[j];
j++;
}
str1[i]='\0';
}
voidprint()
{
cout<}
};
voidmain()
{
chars1[80],s2[40];
cout<<"请输入被插入字符串"<cin.getline(s1,79);
cout<<"请输入待插入字符串"<cin.getline(s2,39);
STRINGtest(s1,s2);
test.process();
test.print();
}四、实践小结
发现字符插入的规律,再依次放入相应字符位置。
五、运行结果
任务六
一、实践任务
14.建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。
二、详细设计
1、类的描述与定义
(1)私有数据成员
●char*array:
一维字符数组。
●intn:
数组中元素的个数。
(2)公有成员函数
●MOVE(charb[],intm):
构造函数,初始化成员数据。
●voidchange():
进行排序换位。
●voidprint():
输出一维数组。
●~MOVE():
析构函数。
2、主要函数设计
在主程序中用数据"fdsUFfsTjfsKFEkWC"对该类进行测试。
三、源程序清单
#include
classMOVE
{
char*array;
intn;
public:
MOVE(charb[],intm)
{
n=m;
array=newchar[n];
for(inti=0;iarray[i]=b[i];
}
voidchange()
{
chara;
for(inti=1;i{
if(array[i-1]>='a'&&array[i-1]<='z')
{
a=array[i-1];
for(intj=i-1;j{
array[j]=array[j+1];
}
array[n-1]=a;
i--;
}
}
}
voidprint()
{
for(inti=0;icout<cout<}
~MOVE()
{
if(array)delete[]array;
}
};
voidmain()
{
char*arr="fdsUFfsTjfsKFEkWC";
MOVEtest(arr,17);
test.change();
test.print();
}四、实践小结
利用临时数组,分别保存大写与小写字母,再实现功能。
五、运行结果