if(num%5==0)cout«'\n';
num++;
}
}
MOVE:
:
~MOVE()
{delete[]array;}
voidmain()
{
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,实现绝对回文数。
设计一个算法实现对任意整型数字判断是否为绝对回文数。
所谓绝对回文数,是指十进制数和二进制数均对称的数。
具体要求如下:
(1)私有数据成员
intn:
整型数字。
inty:
标记是否为回文数。
(2)公有成员函数
Palindrome(intx):
构造函数,根据x参数初始化数据成员n,y初始化为0。
voidhuiwen():
判断数n是否为绝对回文数。
voidshow():
若该数为回文数,则在屏幕显示。
(3)在主程序中定义inta,由键盘输入数字。
定义一个Palindrome类对象p,用a初始
化p,完成对该类的测试。
程序源代码
#include
classpalindrome{
intn;
inty;
public:
palindrome(intx);
voidhuiwen();
voidshow();
};
palindrome:
:
palindrome(intx)
{
n=x;
y=0;
}
voidpalindrome:
:
huiwen()
{
intb[20],c[50],m,i,p=0,t1=1,t2=1;
m=n;
for(i=0;m>0;m/=10)
{
p++;
b[i]=m%10;
i++;
}
for(i=0;i
if(b[i]!
=b[p-i-1])
{
t仁0;
break;
}
for(i=0,m=n,p=0;m>0;m/=2)
{
P++;
c[i]=m%2;
i++;
}for(i=0;i
if(c[i]!
=c[p-i-1])
{
t2=0;break;
}
if(t1&&t2)y=1;
}
voidpalindrome:
:
show()
{
if(y==0)cout<<"该数不是回文数!
"<"<}
voidmain()
{
inta;
cout«"输入a的值"<>a;
palindromep(a);
p.huiwen();
p.show();
}
运行结果:
■RC:
\Users\pzq\Desktop\Debug\Cppl.exe'
丨u回A
输入艮的值
4
12345654321
该数不绝对是回文数!
Pressanykeytocontinue
6.定义一个字符串类String,实现判断该字符串是否为回文字符串。
所谓回文字符串,是
指该字符串左右对称。
例如字符串“123321”是回文字符串。
具体要求如下:
(1)私有数据成员
char*str;
inty:
标记是否为回文字符串。
(2)公有成员函数
String(char*s):
构造函数,用给定的参数s初始化数据成员str。
y初始化为0。
voidhuiwen():
判断str所指向的字符串是否为回文字符串。
voidshow():
在屏幕上显示字符串。
(3)在主程序中定义字符串chars[]=”ababcedbabd'作为原始字符串。
定义一个String
类对象test,用s初始化test,完成对该类的测试。
程序源代码
#include
#includevstring.h>classstring{
char*str;inty;
public:
string(char*s);
voidhuiwen();
voidshow();
};
string:
:
string(char*s){
str=newchar[strlen(s)];
strcpy(str,s);
y=0;
}voidstring:
:
huiwen()
{
char*p1,*p2;
p2=p1=str;
for(inti=0;str[i];i++,p2++);
p2--;
for(;p1!
=p2;p1++,p2--)
{
if(*p1!
=*p2)
{y=0;break;}
elsey=1;
}}voidstring:
:
show(){
cout”vvstrvvendl;
if(y==0)cout<<"字符串不是回文数!
"<}
voidmain()
{
chars[]="ababcedbaba";
stringtest(s);
test.huiwen();test.show();
}
IZZI
运行结果:
rs\pzq\De5ktop\Debug\Cppl.exe"
为iababcedbaba
丨%1.L
屛?
串不是回文数!
.
Pressanifkeytocon七:
inme
7.建立一个类PHALANX,生成并显示一个折叠方阵。
折叠方阵如下图所示。
折叠方阵的生成过程为:
起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。
具体要求如下:
(1)私有数据成员
int(*p)[20]:
指向按照折叠规律存放方阵的二维整型数组。
intstartnum:
折叠方阵的起始数。
intn:
存放方针的层数。
(2)公有成员函数
PHALANX(ints,intm):
构造函数,初始化成员数据。
voidprocess():
生成起始数为startnum的n行方阵。
voidprint():
输出折叠方阵。
~PHALANX():
析构函数。
(3)在主程序中对该类进行测试。
程序源代码
#include
#includeviomanip.h>
classphalanx{
int(*p)[20];
intstarnum;
intn;
public:
phalanx(ints,intm);
voidprocess();
voidprint();
〜phalanx();
};
phalanx:
:
phalanx(ints,intm)
{
starnum=s;
n=m;
}
voidphalanx:
:
process()
{
intnum=starnum;
inty=n,i,j,x;
p=newint[20][20];
for(x=0;x{
for(i=0,j=x;i{
p[i][j]=num;num++;
}
for(;j>=0;j--)
{
p[i][j]=num;num++;
}
}
}
voidphalanx:
:
print()
{
inti,j,m=0;
for(i=0;i{
for(j=0;j{cout<}
cout<<'\n';
}
}
phalanx:
:
~phalanx()
{
delete[]p;
}
voidmain()
{
ints,m;
cout«"输入s和m的值"<>s»m;
phalanxpp(s,m);
pp.process();
pp.print();
}
运行结果
'CiXUsersXpzqXDesktopVDebug\CppLexe'
输入直和m的值
D
16
12
5
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,生成并显示一个螺旋方阵。
螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。
具体要求如下:
(1)私有数据成员
inta[20][20]:
二维整型数组存放螺旋方阵。
intstartnum:
螺旋方阵的起始数。
intn:
存放方针的层数。
(2)公有成员函数
MATRIX(ints,intm):
构造函数,初始化成员数据startnum和n。
voidprocess。
:
生成起始数为startnum的n行螺旋方阵。
voidprint():
输出螺旋方阵。
(3)在主程序中定义MATRIX类的对象t对该类进行测试。
程序源代码
#include
#includeviomanip.h>
classmatrix{
inta[20][20];
intstarnum;
intn;
public:
matrix(ints,intm);
voidprocess();
voidprint();
};
matrix:
:
matrix(ints,intm)
{
starnum=s;
n=m;
}
voidmatrix:
:
process(){
intst=starnum;
inti,j,x=O,y=n;
for(;x<=(y-1)/2;x++)
{
for(i=x,j=x;j<(y-x-1);j++)
{
a[i][j]=st;st++;
}
for(;i<(y-x-1);i++)
{
a[i][j]=st;st++;
}
for(;j>x;j--)
{
a[i][j]=st;st++;
}
for(;i>x;i--)
{
a[i][j]=st;st++;
}if(x==(y-1)/2)a[i][j]=st;
}
}
voidmatrix:
:
print()
{
inti,j;
for(i=0;i{
for(j=0;j}
}
voidmain()
{
ints,m;
cout«"输入s和m的值"<cin>>s»m;
matrixpp(s,m);pp.process();pp.print();
}
运行结果
"C:
\Users\p2q\Desktop\Debug\Cppi.exeH
4-dCkI
删人直
和m白
勺值
17
1
2
3
4
5
6
7
24
25
26
27
28
29
8
23
40
41
42
43
30
9
22
39
48
49
44
31
10
21
38
47
4&
45
32
11
26
37
36
35
34
33
12
19
18
17
16
15
14
13
Press
ani/
key
to
continue
9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。
具体要求如下:
(1)私有数据成员
char*str:
指向要统计的字符串。
char(*p)[2]:
动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的
次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符
对应的ASCII值即可)。
int