如图,C++如何判断回文数
工具/原料
C++编译器
一、答案:
1、程序如下:#include<iostream.h>int f(int i){罕铞泱殳 int j,m=1; for(j=1;j<=i;j++)m=m*10; return m;}int main(){ int n,m,i,j,flage=1; int p[100]; cin>>n; m=n; for(i=1;1;i++){ m=m/10; if(m==0)break; } for(j=1,p[0]=0;j<=i;j++)p[j]=(n-n/f(j)*f(j)-p[j-1])/f(j-1); for(j=1;j<=i;j++)if(p[j]!=p[i-j+1])flage=0; if(flage==1)cout<<"是回文数"<<endl; else cout<<"不是回文数"<<endl;}
2、运行结果:
二、说明:
1、对于任意输入的数字我们首先要判断数位: for(i=1;1;i++){ m=m/10; if(m==0)break; }这段代码运行后,i的值即为数字位数。
2、然后需要将每位数单独提取出来:for(j=1,p[0]=0;j<=i;j++)p[j]=(n-n/f(j)*f(j)-p[j-1])/f(j-1);
3、这里的自定义函数是用来计算10的i次方的:int f(int i){ int j,m=1; for(j=1;j<=i;j++)m=m*10; return m;}
4、最后我们比较对应数位的数字是否相同: for(j=1;j<=i;j++)if(p[j]!=p[i-j+1])flage=0; if(flage=租涫疼迟=1)cout<<"是回文数"<<endl; else cout<<"不是回文数"<<endl;