C++课程实践报告试题及答案.docx
- 文档编号:9941880
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:18
- 大小:17.74KB
C++课程实践报告试题及答案.docx
《C++课程实践报告试题及答案.docx》由会员分享,可在线阅读,更多相关《C++课程实践报告试题及答案.docx(18页珍藏版)》请在冰点文库上搜索。
C++课程实践报告试题及答案
C++课程实践报告试题及答案
任务一一、实践任务1.试建立一个类PP,求出下列多项式的前n项的值。
n_Pn__Pn__Pnn/))()1()()12(
(1)(2n1-
110nnn二、详细设计1、类的描述与定义
(1)私有数据成员intn:
前若干项的项数。
double
_:
存放_的值。
double_p:
根据n的大小动态申请存放Pn(_)前n项的数组空间。
(2)公有成员函数PP(intnum,double_1):
构造函数,初始化数据成员n和_,使p指向动态申请的数组空间。
~PP():
析构函数,释放p指向的动态内存空间。
doublefun(intn1,double_):
递归函数,用于求多项式)(_Pn的第n1项。
注意:
将递归公式中的n用作函数参数。
本函数供process函数调用。
voidprocess():
完成求前n项的工作,并将它们存放到p指向的动态数组中。
voidshow():
输出n和_,并将前n项以每行4个数的形式输出到屏幕上。
2、主要函数设计
在主函数中完成对该类的测试。
先输入num和_1,并定义一个PP类的对象items,用num和_1初始化items的成员n和_,调用items的成员函数,求出并输出多项式前num项的值。
三、源程序清单#include
intn;
double_;
double_p;public:
PP(intnum,double_1)
{
n=num;
_=_1;
p=newdouble[n];
}
~PP
{
if(p)delete[]p;
}
doublefun(intn1,double_);
voidprocess;
voidshow;};doublePP:
:
fun(intn1,double_){
if(n1==0)return1;
elseif(n1==1)return_;
elseif(n1>1)return((2_n1-1)___fun(n1-1,_)-(n1-1)_fun(n1-2,_))/n1;}voidPP:
:
process{
for(inti=0;i { p[i]=fun(i,_); }}voidPP: : show{ cout<<“n=”< for(inti=0;i { cout< if((i+1)%4==0)cout< }}voidmain{ intnum; double_1; cout<<“请输入num和_1: ”; cin>>num>>_1; PPitems(num,_1); items.process; items.show;} 任务二 一、实践任务2.试建立一个类SP,求kkkknknf.... 321),(,另有辅助函数power(m,n)用于求nm。 二、详细设计1、类的描述与定义 (1)私有数据成员intn,k: 存放公式中n和k的值; (2)公有成员函数SP(intn1,intk1): 构造函数,初始化成员数据n和k。 intpower(intm,intn): 求mn。 intfun(): 求公式的累加和。 voidshow(): 输出求得的结果。 2、主要函数设计在主程序中定义对象s,对该类进行测试。 三、源程序清单#include private: intn,k;public: SP(intn1,intk1) { n=n1; k=k1; } intpower(intm,intn); intfun; voidshow;};intSP: : power(intm,intn){ ints=1; for(inti=0;i { s_=m; } returns;}intSP: : fun{ ints=0; for(inti=1;i<=n;i++) { s+=power(i,k); } returns;} voidSP: : show{ cout<<“f(”< intn1,k1; cout<<“请输入n1,k1: ”; cin>>n1>>k1; SPs(n1,k1); s.fun; s.show;} 任务三 一、实践任务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 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< 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): 构造函数,初始化成员数据。 voide_change: 输出平均值,并将数组中的元素按要求重新放置。 voidprint: 输出一维数组。 ~MOVE: 析构函数。 2、主要函数设计在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。 三、源程序清单#include int_array; intn;public: MOVE(intb[],intm) { array=newint[m]; n=m; for(inti=0;i { array[i]=b[i]; } } voide_change; voidprint; ~MOVE { if(array)deletearray; }};voidMOVE: : e_change { floatave=0; for(inti=0;i { ave+=array[i]; } ave/=n; cout<<“平均值为”< intma_,min; ma_=min=array[0]; intm; for(i=0,m=0;i { if(array[i]>=ma_)m=i,ma_=array[i]; } intl; for(i=0,l=0;i { if(array[i] } i=array[m],array[m]=array[l],array[l]=i; }voidMOVE: : print { for(inti=0;i cout< { intte_t[]={21,65,43,87,12,84,44,97,32,55}; intnum; num=sizeof(te_t)/sizeof(int); MOVEs(te_t,num); s.print; cout< s.e_change; s.print;} 任务五一、实践任务定义一个类Palindrome,实现绝对回文数。 设计一个算法实现对任意整型数字判断是否为绝对回文数。 所谓绝对回文数,是指十进制数和二进制数均对称的数。 二、详细设计1、类的描述与定义 (1)私有数据成员intn: 整型数字。 inty: 标记是否为回文数。 (2)公有成员函数Palindrome(int_): 构造函数,根据_参数初始化数据成员n,y初始化为0。 voidhuiwen: 判断数n是否为绝对回文数。 voidshow(): 若该数为回文数,则在屏幕显示。 2、主要函数设计 在主程序中定义inta,由键盘输入数字。 定义一个Palindrome类对象p,用a初始化p,完成对该类的测试。 三、源程序清单#include intn; inty;public: Palindrome(int_) { n=_; y=0; } voidhuiwen; voidshow;};voidPalindrome: : huiwen{ inti=0,j=0; intm; m=n; while(m) { m/=10; i++; } m=n; while(m) { m/=2; j++; } int_s10=newint[i]; int_s2=newint[j]; m=n; for(intk=0;k { s10[i-1-k]=m%10; m/=10; } m=n; for(k=0;k { s2[j-1-k]=m%2; m/=2; } intnum10=0; for(k=0;k { if(s10[i-1-k]==s10[k])num10++; elsebreak; } intnum2=0; for(k=0;k { if(s2[j-1-k]==s2[k])num2++; elsebreak; } if(num10==(i/2);;num2==(j/2))y=1; }voidPalindrome: : show{ inti=0,j=0; intm; m=n; while(m) { m/=10; i++; } m=n; while(m) { m/=2; j++; } int_s10=newint[i+1]; int_s2=newint[j+1]; m=n; for(intk=0;k { s10[i-1-k]=m%10; m/=10; } m=n; for(k=0;k { s2[j-1-k]=m%2; m/=2; } if(y) { cout<<“该数为绝对回文数! : ”< cout<<“十进制表示为: ”; for(k=0;k cout< cout<<“二进制表示为: ”; for(k=0;k cout< } else { cout<<“该数不是绝对回文数! : ”< cout<<“十进制表示为: ”; for(k=0;k cout< cout<<“二进制表示为: ”; for(k=0;k cout< } cout< inta; cout<<“请输入一个数字: ”; cin>>a; Palindromep(a); p.huiwen; p.show;} 任务六 一、实践任务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 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{ 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,cedil;该字符串是回文数”< elsecout<<“y=0,该字符串不是回文数”< chars[]=“ababcedbaba”; Stringtest(s); test.huiwen; test.show;} 任务七 一、实践任务7.建立一个类PHALAN_,生成并显示一个折叠方阵。 折叠方阵如下图所示。 折叠方阵的生成过程为: 起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。 二、详细设计1、类的描述与定义 (1)私有数据成员1 2 4 3 ... 11 2 5 104 3 6 119 8 7 1216 15 14 13 int(_p)[20]: 指向按照折叠规律存放方阵的二维整型数组。 intstartnum: 折叠方阵的起始数。 intn: 存放方针的层数。 (2)公有成员函数PHALAN_(ints,intm): 构造函数,初始化成员数据。 voidprocess: 生成起始数为startnum的n行方阵。 voidprint: 输出折叠方阵。 ~PHALAN_(): 析构函数。 2、主要函数设计在主程序中对该类进行测试。 三、源程序清单#include int(_p)[20]; intstartnum; intn; public: phalan_(ints[20][20],intm) { startnum=1; p=s; n=m; } voidprocess { p[0][0]=startnum; for(inti=0;i for(intj=0;j {if(i>j){p[i][j]=1+i_i+i+i-j;} else{p[i][j]=1+j_j+i;}} } voidprint { for(inti=0;i { for(intj=0;j cout<<"\n"; } } ~phalan_{} }; voidmain { intm; ints[20][20]; cout<<“请输入折叠层数: ”; cin>>m; cout<<"\n"; phalan_pp(s,m); pp.process; pp.print; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程 实践 报告 试题 答案