江苏科技大学课程实践报告.docx
- 文档编号:24624509
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:22
- 大小:19.67KB
江苏科技大学课程实践报告.docx
《江苏科技大学课程实践报告.docx》由会员分享,可在线阅读,更多相关《江苏科技大学课程实践报告.docx(22页珍藏版)》请在冰豆网上搜索。
江苏科技大学课程实践报告
江苏科技大学
课程实践报告
设计题目:
计算机程序设计实践(VC++)
设计时间:
2013.01.08至2013.01.11
学院:
能源与动力工程
专业班级:
11级建筑环境与设备工程专业2班
学生姓名:
刘鹏高学号***********
********
2013年01月10日
任务一
11.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。
例如将字符串“abcde” 交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。
具体要求如下:
(1)私有数据成员
char str1[80] :
存放被插入的字符串。
char str2[40] :
存放待插入的字符串。
(2)公有成员函数
STRING (char *s1, char *s2 ):
构造函数,用s1和s2初始化str1和str2。
void process():
将str2中的字符串插入到str1中。
void print():
输出插入后的字符串。
(3)在主程序中定义STRING类的对象test对该类进行测试。
任务二
13.建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。
具体要求如下:
(1)私有数据成员
int array[20]:
一维整型数组。
int n:
数组中元素的个数。
(2)公有成员函数
MOVE(int b[],int m):
构造函数,初始化成员数据。
void change():
进行循环换位。
void print():
输出一维数组。
(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。
任务三
4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。
具体要求如下:
(1)私有数据成员
int *array:
一维整型数组。
int n:
数组中元素的个数。
(2)公有成员函数
MOVE(int b[],int m):
构造函数,初始化成员数据。
void exchange():
输出平均值,并将数组中的元素按要求重新放置。
void print():
输出一维数组。
~MOVE():
析构函数。
(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。
任务四
2.试建立一个类SP,求,另有辅助函数power(m,n)用于求。
具体要求如下:
(1)私有成员数据。
int n,k:
存放公式中n和k的值;
(2)公有成员函数。
SP(int n1,int k1):
构造函数,初始化成员数据n和k。
int power(int m, int n):
求mn。
int fun( ):
求公式的累加和。
void show( ):
输出求得的结果。
(3)在主程序中定义对象s,对该类进行测试
任务五
6.定义一个字符串类String,实现判断该字符串是否为回文字符串。
所谓回文字符串,是指该字符串左右对称。
例如字符串“123321”是回文字符串。
具体要求如下:
(1)私有数据成员
char *str;
int y:
标记是否为回文字符串。
(2)公有成员函数
String (char *s) :
构造函数,用给定的参数s初始化数据成员str。
y初始化为0。
void huiwen () :
判断str所指向的字符串是否为回文字符串。
void show( ) :
在屏幕上显示字符串。
(3)在主程序中定义字符串char s[]=”ababcedbaba”作为原始字符串。
定义一个String类对象test,用s初始化test,完成对该类的测试。
任务六
24.建立一个类NUM,并统计特定序列中相同的数字的个数。
具体要求如下:
(1)私有数据成员
int data[25]:
随机生成25个在0-9之间的数字。
int num[10]:
储存每个数字出现的个数。
(2)公有数据成员
NUM(int data):
构造函数,初始化数组data。
void process( ):
统计数组data中每个数字出现的个数,并保存到数组num中。
void print( ):
输出每个数字出现的个数,每行输出5个
(3)在主程序中定义一个对象,对该类进行测试。
二、系统设计
任务一
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”
……
任务二
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
任务三
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]。
遍阅完毕后,互换最值。
3.系统测试
在主函数中初始化对象数组,并调用其成员函数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
任务四
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
}任务五
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"
该数组不是回文字符窜。
任务六
将程序随机产生的整数利用循环语句转换为字符,保存在数组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();
}
三、实践小结
(说明:
主要写实践心得、实践中遇到的问题,是如何解决的。
)
四、参考文献
[1]齐治昌.软件工程[M].北京:
高等教育出版社出版,2004,35-60
[2]钱雪忠.数据库与SQLServer2005教程[M].北京:
清华大学出版社,2007,194-365
[3]张荣梅,梁晓林等.VisualC++实用教程[M].北京:
中国铁道出版社,2008,31-48
……
五、源程序清单
任务一
#include
#include
classSTRING{
charstr1[80],str2[40];
public:
STRING(char*s1,char*s2)//构造函数
{
strcpy(str1,s1);
strcpy(str2,s2);
}
voidprocess()//将str2中的字符插入到str1中
{
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); cin.getline(s2,39); STRINGtest(s1,s2); test.process(); test.print(); } 任务二 #include classMOVE { intarray[20]; intn; public: MOVE(intb[],intm) { n=m; for(inti=0;i { array[i]=b[i]; } } voidchange() { for(intj=0;j<3;j++) { inta=array[n-1]; for(inti=n-1;i>0;i--) { array[i]=array[i-1]; } array[0]=a; } } voidprint() { for(inti=0;i cout< } }; voidmain() { ints[10]={21,65,43,87,12,84,44,97,32,55}; MOVEtest(s,10); test.change(); test.print(); } 任务三 #include classMOVE { int*array; intn; public: MOVE(intb[],intm) { n=m; array=newint[n]; for(inti=0;i { array[i]=b[i]; } } voidexchange() { floatx=0; intmax=0,m=0,min=0; for(inti=0;i { x+=array[i]; if(array[i]>array[max]) { max=i; } if(array[i] { min=i; } } x/=n; cout<<"平均数为: "< x=array[min]; array[min]=array[max]; array[max]=x; } voidprint() { for(inti=0;i { cout< } } ~MOVE() { deletearray; } }; voidmain() { ints[10]={21,65,43,87,12,84,44,97,32,55}; MOVEa(s,10); a.exchange(); a.print(); } 任务四 #include classsp { private: intn,k; public: sp(intn1,intk1); intpowers(intm,intn); intfun(intm,intn); voidshow(); }; sp: : sp(intn1,intk1) { n=n1; k=k1; } intsp: : powers(intm,intn){ inti,p=1; for(i=1;i<=n;i++) p*=m; returnp; } intsp: : fun(intn,intk) { ints=0; for(inti=1;i<=n;i++) s+=powers(i,k); returns; } voidsp: : show() { cout< } voidmain() { intx,y; cin>>x>>y; sps(x,y); s.show(); } 任务五 #include #include classString { char*str; inty; public: String(char*s) { if(s) { str=(char*)newchar[strlen(s)+1]; strcpy(str,s); } elsestr=0; y=0; } voidhuiwen(); voidshow(); }; voidString: : huiwen() { char*t1,*t2; t1=t2=str; while(*t2)t2++; t2--; while(t1 { if(*t1++! =*t2--)y=1; } } voidString: : show() { cout< if(y)cout<<"不是回文字符串"< elsecout<<"是回文字符串"< } voidmain() { chars[]="ababcedbaba"; Stringtext(s); text.huiwen(); text.show(); } 任务六 #include #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(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏 科技大学 课程 实践 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)