程序没错误为啥没结果?

#include
using namespace std;
class Num
{private:
int low,up;int a[20];int n;
public:
Num(int t1,int t2):low(t1),up(t2){n=0;}
int nn1(int t)
{int m=t;int x=0;
while(m)
{x=x10+m%10;
m=m/10;}
if(x==t)
return 1;
return 0;
}
int nn2(int t)
{int a=0;int t0=t;int b=1;
while(nn1(t0))
{a=a+t0%10;
b=b
(t0%10);
t0=t0/10; }
if(a==b)
return 1; return 0;}
void fun()
{ for(int i=low;i<up;i++)
if(nn1(i)&&nn2(i))
a[n++]=i;}
void print()
{cout<<"符合条件的回文数:"<<"一共有"<<n<<"个"<<endl;
for(int i=0;i<n;i++)cout<<a[i]<<endl;}
};
int main()
{Num num(1000,1000000);
num.fun();
num.print();
return 0;}

估计是死循环了。计算方法太麻烦,数量太多,导致一直程序在运行。1000-1000000 这得计算多久啊,你把1000000 改成1100试试,一点点判断哪里死循环了

x和t都等于0的时候,或者说当循环到1111时,x和t会变成0,就会死循环

你这个都没写符号啊

img

img

另外数组开的太小了,你这个计算量很大

a[n++]=i
确定满足条件的数不超过20个吗?一旦n>=20,就是数组越界访问,程序就崩溃了,所以print不会执行

头文件不知道为啥发出去后就没了,关键是下面的程序,哪里有问题?请教各位

计算机二级里面的一个题目:就是求这个区间里满足各位数之和等于各位数之积的所有回文数。

#include<iostream>
using namespace std;
class Num
{private:
int low,up;
int a[20];
int n;
public:
Num(int t1,int t2):low(t1),up(t2){n=0;}
int nn1(int t)
{int m=t;
int x=0;
while(m)
{x=x*10+m%10;
m=m/10;
}
if(x==t)
return 1;
return 0;
}
int nn2(int t)
{int a=0;
int t0=t;
int b=1;
    while(nn1(t0))
    {a=a+t0%10;
     b=b*(t0%10);
    t0=t0/10;
    }
    if(a==b)
        return 1;
 return 0;
}
void fun(){
    
for(int i=low;i<up;i++)
if(nn1(i)&&nn2(i))
a[n++]=i;
}
void print()
{cout<<"符合条件的回文数:"<<"一共有"<<n<<"个"<<endl;
for(int i=0;i<n;i++)
cout<<a[i]<<endl;
}
};
int main()
{Num num(1000,1000000);
 num.fun();
 num.print();
 return 0;
}