VC课程实践正确含答案docxWord文档格式.docx
- 文档编号:22331582
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:120
- 大小:39.14KB
VC课程实践正确含答案docxWord文档格式.docx
《VC课程实践正确含答案docxWord文档格式.docx》由会员分享,可在线阅读,更多相关《VC课程实践正确含答案docxWord文档格式.docx(120页珍藏版)》请在冰豆网上搜索。
用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++)
*(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)私有成员数据。
intn,k:
存放公式中
k的值;
(2)公有成员函数。
SP(intn1,intk1):
构造函数,初始化成员数据
intpower(intm,intn):
求mn。
k。
intfun():
求公式的累加和。
输出求得的结果。
(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,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。
floatarray[20]:
一维整型数组。
数组中元素的个数。
MOVE(floatb[],intm):
构造函数,初始化成员数据。
voidaverage():
输出平均值,并将数组中的元素按要求重新放置。
voidprint():
输出一维数组。
(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++;
if(array[i]>
array[i]=ff[i];
print()
intq,p=1;
for(q=0;
q<
q++)
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,将数组中最大元素的值与最小元素的值互换。
int*array:
MOVE(intb[],intm):
voidexchange():
~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];
*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,实现绝对回文数。
设计一个算法实现对任意整型数字判断是否
为绝对回文数。
所谓绝对回文数,是指十进制数和二进制数均对称的数。
整型数字。
inty:
标记是否为回文数。
Palindrome(intx):
构造函数,根据x参数初始化数据成员n,y初始化为0。
voidhuiwen():
判断数n是否为绝对回文数。
若该数为回文数,则在屏幕显示。
(3)在主程序中定义inta,由键盘输入数字。
定义一个
Palindrome
类对象
p,用
a初始
化p,完成对该类的测试。
classpalindrome{
inty;
palindrome(intx);
voidhuiwen();
palindrome:
palindrome(intx)
n=x;
y=0;
voidpalindrome:
huiwen()
intb[20],c[50],m,i,p=0,t1=1,t2=1;
m=n;
m>
0;
m/=10)
b[i]=m%10;
i++;
p;
if(b[i]!
=b[p-i-1])
t1=0;
break;
for(i=0,m=n,p=0;
m/=2)
c[i]=m%2;
if(c[i]!
=c[p-i-1])
t2=0;
if(t1&
&
t2)y=1;
if(y==0)cout<
该数不是回文数!
elsecout<
该回文数是:
inta;
输入a的值"
a;
palindromep(a);
p.huiwen();
p.show();
6.定义一个字符串类String,实现判断该字符串是否为回文字符串。
所谓回文字符串,是
指该字符串左右对称。
例如字符串“123321”是回文字符串。
(1)私有数据成员
char*str;
标记是否为回文字符串。
(2)公有成员函数
String(char*s):
构造函数,用给定的参数s初始化数据成员str。
y初始化为0。
判断str所指向的字符串是否为回文字符串。
在屏幕上显示字符串。
(3)在主程序中定义字符串chars[]=”ababcedbaba”作为原始字符串。
定义一个String
类对象test,用s初始化test,完成对该类的测试。
string.h>
classstring{
string(char*s);
string:
string(char*s)
str=newchar[strlen(s)];
strcpy(str,s);
voidstring:
char*p1,*p2;
p2=p1=str;
for(inti=0;
str[i];
i++,p2++);
p2--;
for(;
p1!
=p2;
p1++,p2--)
if(*p1!
=*p2)
{y=0;
y=1;
”字符串为:
”<
str<
字符串不是回文数!
y<
chars[]="
ababcedbaba"
stringtest(s);
test.huiwen();
test.show();
7.建立一个类PHALANX,生成并显示一个折叠方阵。
折叠方阵如下图所示。
折叠方阵的生成过程为:
起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。
int(*p)[20]:
指向按照折叠规律存放方阵的二维整型数组。
intstartnum:
折叠方阵的起始数。
存放方针的层数。
PHALANX(ints,intm):
voidprocess():
生成起始数为startnum的n行方阵。
输出折叠方阵。
~PHALANX():
(3)在主程序中对该类进行测试。
iomanip.h>
classphalanx{
int(*p)[20];
intstarnum;
phalanx(ints,intm);
~phalanx();
phalanx:
phalanx(ints,intm)
starnum=s;
voidphalanx:
intnum=starnum;
inty=n,i,j,x;
p=newint[20][20];
for(x=0;
y;
for(i=0,j=x;
x;
p[i][j]=num;
j>
=0;
j--)
inti,j,m=0;
for(j=0;
j<
j++)
setw(5)<
p[i][j];
~phalanx()
ints,m;
输入s和m的值"
s>
phalanxpp(s,m);
pp.process();
pp.print();
8.建立一个MATRIX,生成并显示一个螺旋方阵。
螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。
inta[20][20]:
二维整型数组存放螺旋方阵。
螺旋方阵的起始数。
MATRIX(ints,intm):
构造函数,初始化成员数据startnum和n。
生成起始数为startnum的n行螺旋方阵。
输出螺旋方阵。
(3)在主程序中定义MATRIX类的对象t对该类进行测试。
classmatrix{
inta[20][20];
matrix(ints,intm);
matrix:
matrix(ints,intm)
voidmatrix:
intst=starnum;
inti,j,x=0,y=n;
=(y-1)/2;
for(i=x,j=x;
(y-x-1);
a[i][j]=st;
st++;
i>
i--)
if(x==(y-1)/2)a[i][j]=st;
inti,j;
setw(8)<
a[i][j];
matrixpp(s,m);
9.定义一个字符串类
CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。
char*str:
指向要统计的字符串。
char(*p)[2]:
动态分配二维空间,用以存放
次数(次数在存放时,用该数字对应的ASCII
对应的ASCII值即可)。
str所指字符串中出现的字符及其出现的
值存放;
在输出次数时,输出该ASCII字符
intsize:
存放字符串中出现的所有不同的字符的个数。
CString(char*s):
根据s参数初始化数据成员str;
p和size初始值为0。
voidCount():
p根据s所指字符串长度分配空间。
然后把str所指字符串中的每个字符
放入p数组中,设置每个字符的出现次数为1。
根据p数组统计不同字符出现的频率,并求
得size的实际大小。
最后根据size的实际大小,重新分配p所指空间,并把不同字符及其
出现次数重新放回p数组(提示:
可以借助临时数组或指针来实现)。
voidShow():
屏幕显示字符串、字符串的每个字符和与之对应的次数。
~CString():
释放动态分配的空间。
(3)在主程序中定义字符串chars[]=”abdabcdesffffd”。
定义一个CString类对象test,
用s以初始化test,完成对该类的测试。
classcstring{
char*str;
char(*p)[2];
intsize;
cstring(char*s);
voidcount();
~cstring();
cstring:
cstring(char*s)
p=0;
size=0;
str=s;
voidcstring:
count()
p=newchar[strlen(str)][2];
charn;
n='
\0'
p1=&
for(intm=0;
str[m];
m++)
p2=&
if(*p1==*p2)n++;
p2++;
p[i][0]=str[i];
p[i][1]=n;
strlen(str);
intm,x=1;
for(m=0;
m<
i;
if(p[m][0]==p[i][0])
x=0;
if(x==1)cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 课程 实践 正确 答案 docx