VC课程实践正确答案 1要点Word文件下载.docx
《VC课程实践正确答案 1要点Word文件下载.docx》由会员分享,可在线阅读,更多相关《VC课程实践正确答案 1要点Word文件下载.docx(93页珍藏版)》请在冰豆网上搜索。
l~PP():
析构函数,释放p指向的动态内存空间。
ldoublefun(intn1,doublex):
递归函数,用于求多项式的第n1项。
注意:
将递归公式中的n用作函数参数。
本函数供process函数调用。
lvoidprocess():
完成求前n项的工作,并将它们存放到p指向的动态数组中。
lvoidshow():
输出n和x,并将前n项以每行4个数的形式输出到屏幕上。
(3)在主函数中完成对该类的测试。
先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。
程序源代码
#include<
iostream.h>
classpp{
intn;
doublex;
double*p;
public:
pp(intnum,doublex1);
~pp();
doublefun(intn1,doublex);
voidprocess();
voidshow();
};
pp:
:
pp(intnum,doublex1)
{
n=num;
x=x1;
p=newdouble[num+1];
}
~pp()
delete[]p;
doublepp:
fun(intn1,doublex)
if(n1==0)return1;
if(n1==1)returnx;
if(n1>
1)return((2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x))/n1;
voidpp:
process()
inti;
for(i=0;
i<
=n;
i++)
{
*(p+i)=fun(i,x);
}
show()
cout<
<
"
n="
n<
'
\t'
x="
x<
endl;
for(inti=0,m=1;
n;
i++,m++)
{
cout<
*(p+i)<
;
if(m%4==0)cout<
\n'
}
voidmain()
intnum;
doublex1;
putinnumandx1"
cin>
>
num>
x1;
ppitems(num,x1);
items.process();
items.show();
运行结果
2.试建立一个类SP,求,另有辅助函数power(m,n)用于求。
具体要求如下:
(1)私有成员数据。
lintn,k:
存放公式中n和k的值;
(2)公有成员函数。
lSP(intn1,intk1):
构造函数,初始化成员数据n和k。
lintpower(intm,intn):
求mn。
lintfun():
求公式的累加和。
输出求得的结果。
(3)在主程序中定义对象s,对该类进行测试。
classSP{
intn,k;
SP(intn1,intk1);
intpower(intm,intn);
intfun();
SP:
SP(intn1,intk1)
n=n1;
k=k1;
intSP:
power(intm,intn)
if(n==0)return1;
else
for(i=1;
m*=m;
returnm;
fun()
inty=0,x;
for(x=1;
x++)
y+=power(x,k);
returny;
voidSP:
前n项的和为:
fun()<
intn1,k1;
输入n1和k1的值"
n1>
k1;
SPs(n1,k1);
s.fun();
s.show();
运行结果:
3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。
lfloatarray[20]:
一维整型数组。
数组中元素的个数。
lMOVE(floatb[],intm):
构造函数,初始化成员数据。
lvoidaverage():
输出平均值,并将数组中的元素按要求重新放置。
lvoidprint():
输出一维数组。
(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。
classMOVE{
floatarray[20];
MOVE(floatb[],intm);
voidaverage();
voidprint();
MOVE:
MOVE(floatb[],intm)
n=m;
m;
array[i]=b[i];
voidMOVE:
average()
inti,x;
floata=0;
a+=array[i];
a/=n;
平均值为"
a<
floatff[20];
for(i=0,x=0;
if(array[i]<
a)
ff[x]=array[i];
x++;
for(i=0;
if(array[i]>
{
ff[x]=array[i];
x++;
}
for(i=0;
array[i]=ff[i];
print()
intq,p=1;
for(q=0;
q<
q++)
cout<
array[q]<
if(p%5==0)cout<
p++;
floatb[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};
intm=9;
MOVEaa(b,m);
aa.average();
aa.print();
4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。
lint*array:
lMOVE(intb[],intm):
lvoidexchange():
l~MOVE():
析构函数。
(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。
int*array;
MOVE(intb[],intm);
voidexchange();
~MOVE();
MOVE(intb[],intm)
array=newint[n];
for(intx=0;
array[x]=b[x];
exchange()
inti,*p1,*p2;
Theaverageofthenumberis:
p1=p2=&
array[0];
*p1)p1=&
array[i];
if(array[i]>
*p2)p2=&
i=*p1;
*p1=*p2;
*p2=i;
inti,num=1;
array[i]<
if(num%5==0)cout<
num++;
~MOVE()
{delete[]array;
intb[]={21,65,43,87,12,84,44,97,32,55},n=10;
MOVEff(b,n);
ff.exchange();
ff.print();
5.定义一个类Palindrome,实现绝对回文数。
设计一个算法实现对任意整型数字判断是否为绝对回文数。
所谓绝对回文数,是指十进制数和二进制数均对称的数。
(1)私有数据成员
整型数字。
linty:
标记是否为回文数。
lPalindrome(intx):
构造函数,根据x参数初始化数据成员n,y初始化为0。
lvoidhuiwen():
判断数n是否为绝对回文数。
lvoidshow():
若该数为回文数,则在屏幕显示。
(3)在主程序中定义inta,由键盘输入数字。
定义一个Palindrome类对象p,用a初始化p,完成对该类的测试。
classpalindrome{
inty;
palindrome(intx);
voidhuiwen();
palindrome:
palindrome(intx)
n=x;
y=0;
voidpalindrom