C++程序设计-实践报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
课程实践报告
设计题目: 程序设计(VC++)实践设计时间2013-1- 至2013-1- 学院(系): 计算机科学与工程学院
2013年1月
一.实践任务
选择题目,创新性题目可只选择1 题,仅选提高题应不少于3 题,仅选基础题应不少于6 题,也可组合选题,还可自行选择感兴趣的题目(须经指导老师审定)。对于提高题、创新题及游戏题可组成团队开发,但应制定详细的项目分工说明。
二.实验步骤及记录(题目,源程序代码及运行结果)
1.与学号对应的题(必做题):基础题12
题目:
建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不
等长)。例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。
具体要求如下:
(1)私有数据成员
char str1[60] :存放被插入的字符串。
char str2[40] :存放待插入的字符串。
char str3[100] :存放插入后的字符串。
(2)公有成员函数
STRING (char *s1, char *s2 ):构造函数,用s1 和s2 初始化str1 和str2。
void process():将str2 中的字符串插入到str1 中,存放到str3 中。
void print():输出插入后的字符串。
(3)在主程序中定义STRING 类的对象test 对该类进行测试。
源程序代码:
#include
#include
class STRING{
char str1[60];
char str2[40];
char str3[100];
public:
STRING(char *s1,char *s2){
strcpy(str1,s1);
strcpy(str2,s2);
}
void process(){
char *p1=str1,*p2=str2;
for(int i=0;*p2;i=i+2){
for(int k=strlen(str1);k>=i;k--){
str1[k+1]=str1[k];
}
*p1=*p2;
p1=p1+2;
p2++;
}
}
void print(){
strcpy(str3,str1);
cout< } }; void main(){ char s1[60]="ABCDEFG"; char s2[40]="abcde"; cout<<"原字符串:"< cout<<"交叉插入后的字符串:"; STRING test(s1,s2); test.process(); test.print(); } 运行结果: 2-6为选做题,其中2,3,4为基础题;5,6为提高题。 2.基础题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}对该类进行测试。源程序代码: #include class MOVE{ int *array; public: MOVE(int b[],int m){ n=m; array=new int[m]; for(int i=0;i array[i]=b[i]; } void exchange(){ int b[10]; for(int k=0;k b[k]=array[k]; for(int i=0;i for(int j=i+1;j if(b[j]>=b[i]){ int temp=b[i]; b[i]=b[j]; b[j]=temp; } int max=b[0],min=b[n-1]; for(int p=0;p if(array[p]==max)array[p]=min; else if(array[p]==min)array[p]=max; } } void print(){ for(int i=0;i cout< cout< } ~MOVE(){delete [n]array;} }; void main(){ int a[10]={21,65,43,87,12,84,44,97,32,55}; cout<<"原数组:"< for(int i=0;i<10;i++) cout< cout< cout<<"交换最大值和最小值后的数组:"< MOVE a1(a,10); a1.exchange(); a1.print(); }