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();
}
运行结果
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])
{
t1=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<<"该数不是回文数!
"<elsecout<<"该回文数是:
"<}
voidmain()
{
inta;
cout<<"输入a的值"<cin>>a;
palindromep(a);
p.huiwen();
p.show();
}
运行结果:
6.定义一个字符串类String,实现判断该字符串是否为回文字符串。
所谓回文字符串,是指该字符串左右对称。
例如字符串“123321”是回文字符串。
具体要求如下:
(1)私有数据成员
char*str;
inty:
标记是否为回文字符串。
(2)公有成员函数
String(char*s):
构造函数,用给定的参数s初始化数据成员str。
y初始化为0。
voidhuiwen():
判断str所指向的字符串是否为回文字符串。
voidshow():
在屏幕上显示字符串。
(3)在主程序中定义字符串chars[]=”ababcedbaba”作为原始字符串。
定义一个String类对象test,用s初始化test,完成对该类的测试。
程序源代码
#include
#include
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;}
else
y=1;
}
}
voidstring:
:
show()
{
cout<<”字符串为:
”<if(y==0)cout<<"字符串不是回文数!
"<elsecout<}
voidmain()
{
chars[]="ababcedbaba";
stringtest(s);
test.huiwen();
test.show();
}
运行结果:
7.建立一个类PHALANX,生成并显示一个折叠方阵。
折叠方阵如下图所示。
折叠方阵的生成过程为:
起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。
具体要求如下:
(1)私有数据成员
int(*p)[20]:
指向按照折叠规律存放方阵的二维整型数组。
intstartnum:
折叠方阵的起始数。
intn:
存放方针的层数。
(2)公有成员函数
PHALANX(ints,intm):
构造函数,初始化成员数据。
voidprocess():
生成起始数为startnum的n行方阵。
voidprint():
输出折叠方阵。
~PHALANX():
析构函数。
(3)在主程序中对该类进行测试。
程序源代码
#include
#include
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的值"<cin>>s>>m;
phalanxpp(s,m);
pp.process();
pp.print();
}
运行结果
8.建立一个MATRIX,生成并显示一个螺旋方阵。
螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。
具体要求如下:
(1)私有数据成员
inta[20][20]:
二维整型数组存放螺旋方阵。
intstartnum:
螺旋方阵的起始数。
intn:
存放方针的层数。
(2)公有成员函数
MATRIX(ints,intm):
构造函数,初始化成员数据startnum和n。
voidprocess():
生成起始数为startnum的n行螺旋方阵。
voidprint():
输出螺旋方阵。
(3)在主程序中定义MATRIX类的对象t对该类进行测试。
程序源代码
#include
#include
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=0,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;jcout<cout<<'\n';
}
}
voidmain()
{
ints,m;
cout<<"输入s和m的值"<cin>>s>>m;
matrixpp(s,m);
pp.process();
pp.print();
}
运行结果
9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。
具体要求如下:
(1)私有数据成员
char*str:
指向要统计的字符串。
char(*p)[2]:
动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符对应的ASCII值即可)。
intsize:
存放字符串中出现的所有不同的字符的个数。
(2)公有成员函数
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,完成对该类的测试。
程序源代码
#include
#include
classcstring{
char*str;
char(*p)[2];
intsize;
public:
cstring(char*s);
voidcount();
voidshow();
~cstring();
};
cstring:
:
cstring(char*s)
{
p=0;
size=0;
str=s;
}
voidcstring:
:
count()
{
p=newchar[strlen(str)][2];
charn;
char*p1,*p2;
for(inti=0;str[i];i++)
{
n='\0';
p1=&str[i];
for(intm=0;str[m];m++)
{
p2=&str[m];
if(*p1==*p2)n++;
p2++;
}
p[i][0]=str[i];
p[i][1]=n;
}
}
voidcstring:
:
show()
{
for(inti=0;i{