VC课程实践正确答案1Word下载.docx
《VC课程实践正确答案1Word下载.docx》由会员分享,可在线阅读,更多相关《VC课程实践正确答案1Word下载.docx(91页珍藏版)》请在冰豆网上搜索。
![VC课程实践正确答案1Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/12/9f732b12-3899-4fb8-85d4-f1e92f25f309/9f732b12-3899-4fb8-85d4-f1e92f25f3091.gif)
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()
coutvv"
n="
<
n<
v'
\t'
vv"
x="
v<
xvvendl;
for(inti=0,m=1;
i<
n;
i++,m++)
cout<
v*(p+i)vv'
;
if(m%4==0)cout«
'
\n'
voidmain()
intnum;
doublex1;
"
putinnumandx1"
endl;
cin»
num>
>
x1;
ppitems(num,x1);
items.process();
items.show();
运行结果
C:
\Users\pzq\Desfcctop\Dmbug\Cppl.exe"
putin
£
numandxl
D
p
b
Fl=6
x=S
1
5
37
305
^3525
Press
anykwytocontinue
2.试建立一个类SP,求,另有辅助函数power(m,n)用于求具体要求如下:
(1)私有成员数据。
intn,k:
存放公式中n和k的值;
(2)公有成员函数。
SP(intn1,intk1):
构造函数,初始化成员数据n和k。
intpower(intm,intn):
求mn。
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==O)return1;
else
for(i=1;
i++)m*=m;
returnm;
fun()
inty=0,x;
for(x=1;
x<
=n;
x++)y+=power(x,k);
returny;
voidSP:
cout«
前n项的和为:
fun()«
endl;
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;
n;
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;
i++)if(array[i]>
i++)array[i]=ff[i];
print()
intq,p=1;
for(q=0;
q<
n;
q++)
array[q]vv'
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();
d,C\Users\pzq\Desk±
Qp\Debug\Cppl.exE'
sags
直为5-43333
4
1-3
34.6
3-3
2
9.1
7.45.6
anyIcej/tocontinue
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;
x<
x++)array[x]=b[x];
exchange()
inti,*p1,*p2;
Theaverageofthenumberis:
p1=p2=&
array[0];
if(array[i]v*p1)p1=&
array[i];
if(array[i]>
*p2)p2=&
i=*p1;
*p1=*p2;
*p2=i;
inti,num=1;
array[i]vv'
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();
#*C:
\Users\pzq\Desktop\Debug\Cppl.exe'
TheaverageofthenumhEris:
54
21654387978444123255Pressanykevtocontinue
5•定义一个类Palindrome,实现绝对回文数。
设计一个算法实现对任意整型数字判断是否为绝对回文数。
所谓绝对回文数,是指十进制数和二进制数均对称的数。
intn:
整型数字。
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])
t仁0;
break;
for(i=0,m=n,p=0;
m/=2)
P++;
c[i]=m%2;
i++;
if(c[i]!
=c[p-i-1])
t2=0;
break;
if(t1&
&
t2)y=1;
if(y==0)cout<
该数不是回文数!
"
elsecout<
该回文数是:
n<
inta;
输入a的值"
cin>
>
a;
palindromep(a);
p.huiwen();
p.show();
运行结果:
■RC:
\Users\pzq\Desktop\Debug\Cppl.exe'
丨u回A
输入艮的值
12345654321
该数不绝对是回文数!
Pressanykeytocontinue
6.定义一个字符串类String,实现判断该字符串是否为回文字符串。
所谓回文字符串,是
指该字符串左右对称。
例如字符串“123321”是回文字符串。
char*str;
标记是否为回文字符串。
String(char*s):
构造函数,用给定的参数s初始化数据成员str。
y初始化为0。
判断str所指向的字符串是否为回文字符串。
在屏幕上显示字符串。
(3)在主程序中定义字符串chars[]=”ababcedbabd'
作为原始字符串。
定义一个String
类对象test,用s初始化test,完成对该类的测试。
#includevstring.h>
classstring{
inty;
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;
elsey=1;
}}voidstring:
show(){
v”字符串为:
”vvstrvvendl;
字符串不是回文数!
elsecoutvvyvvendl;
chars[]="
ababcedbaba"
stringtest(s);
test.huiwen();
test.show();
IZZI
rs\pzq\De5ktop\Debug\Cppl.exe"
为iababcedbaba
丨%1.L
屛?
串不是回文数!
.
Pressanifkeytocon七:
inme
7.建立一个类PHALANX,生成并显示一个折叠方阵。
折叠方阵如下图所示。
折叠方阵的生成过程为:
起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。
int(*p)[20]:
指向按照折叠规律存放方阵的二维整型数组。
intstartnum:
折叠方阵的起始数。
存放方针的层数。
PHALANX(ints,intm):
生成起始数为startnum的n行方阵。
输出折叠方阵。
~PHALANX():
(3)在主程序中对该类进行测试。
#includeviomanip.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;
x++)
for(i=0,j=x;
x;
p[i][j]=num;
num++;
j>
=0;
j--)
inti,j,m=0;
for(j=0;
j<
j++)
{cout<
setw(5)<
p[i][j];
~phalanx()
ints,m;
输入s和m的值"
s»
phalanxpp(s,m);
pp.process();
pp.print();
CiXUsersXpzqXDesktopVDebug\CppLexe'
输入直和m的值
16
12
10
17
26:
43
11
18
27
■
98
7
12
19
28
1615
14
13
20
29
2524
23
22
21
30
3635
34
33
32
31
Pressan^:
keyto
continue
建立一个MATRIX,生成并显示一个螺旋方阵。
螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。
inta[20][20]:
二维整型数组存放螺旋方阵。
螺旋方阵的起始数。
MATRIX(ints,intm):
构造函数,初始化成员数据startnum和n。
voidprocess。
生成起始数为startnum的n行螺旋方阵。
输出螺旋方阵。
(3)在主程序中定义MATRIX类的对象t对该类进行测试。
classmatrix{
inta[20][20];
matrix(ints,intm);
matrix:
matrix(ints,intm)
voidmatrix:
process(){
intst=starnum;
inti,j,x=O,y=n;
=(y-1)/2;
for(i=x,j=x;
j<
(y-x-1);
a[i][j]=st;
st++;
i>
i--)
}if(x==(y-1)/2)a[i][j]=st;
inti,j;
j++)cout<
setw(8)<
a[i][j];
cout<
cin>
matrixpp(s,m);
pp.process();
pp.print();
\Users\p2q\Desktop\Debug\Cppi.exeH
4-dCkI
删人直
和m白
勺值
17
3
6
24
25
26
8
40
41
42
43
9
39
48
49
44
38
47
4&
45
36
35
16
15
ani/
key
to
continue
9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。
具体要求如下:
char*str:
指向要统计的字符串。
char(*p)[2]:
动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的
次数(次数在存放时,用该数字对应的ASCII值存放;
在输出次数时,输出该ASCII字符
对应的ASCII值即可)。
int