该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
class addptr
{
private: //只所以使用类,是怕内存泄漏,而且编程很快....
int *p;int xiang;int number;
public:
addptr(const int &ber,const int& num)
{
number=ber;xiang=num;
p=new int[xiang];
for(int i=0;i
}
void decs() //自减操作,可重载--运算符,我还是采用成员函数了!
{
int *q=(p+(xiang-1));*q-=1;
while(*q<=0)
{
if(*q<=1&&q==p) break;
q--;*q-=1;
}
while(q!=(p+(xiang-1)))
{
q++;
*q=*(q-1);
}
}
void printout() //结果输出!
{
printf("%d=",number);
for(int i=0;i
{
if(i!=0&&i!=xiang) printf("+");
printf("%d",*(p+i));
}
printf("\n");
}
bool isright() //相加等于number吗?
{
int total=0;
for(int i=0;i
total+=*(p+i);
if(total==number) return true;
return false;
}
bool bexit() //应该退出吗?
{
if(*p<=1) return true;
return false;
}
~addptr()
{
delete []p;
}
};
int main(int argc, char* argv[])
{
int number=0;
printf("请输入一个大于零的整数!\n");
scanf("%d",&number);
for(int i=1;i<=number;i++)
{
addptr pt(number,i);
while(!pt.bexit())
{
pt.decs();
if(pt.isright())
pt.printout();
}
}
return 0;
}