回文数就是正着看和反着看都一样的比如12321这种。
这个题目是这样的:
从任意一个两位或者两位以上的数开始,将这个数与它的逆序数(反着读的)相加,得到一个新数,再用新得来的这个数再和逆序数相加,经过若干次之后就可以得到一个回文数了,设计一个程序,由计算机在局部范围验证“回文数猜想”,并把每个步骤都显示一下。
#include <iostream>
using namespace std;
//拿1992做猜想
long fun(long n);//算逆序相加
bool judge(long n);
int main()
{
long num,rev;
bool res;
cin>>num;
rev=fun(num);
res=judge(rev+num);
while(!res){
cout<<num<<"+"<<rev<<"="<<num+rev<<endl;
num=rev+num;
rev=fun(num);
res=judge(rev+num);
}
cout<<num<<"+"<<rev<<"="<<num+rev<<endl;
return 0;
}
long fun(long n){//反序的函数
long rev;
for(rev=0;n>0;n/=10){
rev=rev*10+n%10;
}
return rev;
}
bool judge(long n){
if(fun(n)==n)return true;
else return false;
}
写的特别啰嗦,但是好歹实现了,其实应该在while里头就judge,这样好看并且不容易出错,我这么写了也不改了就,完成任务就得了,初学以完成任务为目的