题目要求
对于所给任意数,判断该数在2到16进制下是否为回文数,如果是,输出该数,并输出在哪种进制下为回文数。
3.2解决方法
通过循环,将输入数字的在2到16进制下的转换存入数组中,判断是否为回文。
3.3程序
3.3.1 程序
#include<stdio.h>
int panduan(int a,int b){
int m=0,n=0,i=0,j=0;
int s[80];
//转化进制
while(a>0){
s[m++]=a%b;
a=a/b;
}
m=m-1;
//判断是否为回文数
while(n<=m){
if(s[n++]==s[m--])
continue;
else return 0;
}
return 1;
}
int main(){
int x,i,flag=0;
scanf("%d",&x);
for(i=2;i<=16;i++){
if(panduan(x,i)){
if(flag==0){
printf("Number %d is palindrom in basis ",x,i);
flag=1;
}
if(flag==1) printf(" %d",i);
}//如果不是第一次为回文数,只输出该进制
} if(flag==0) printf("Number %d is not palindrom.\n",x);
}