这是一道检验回文数的程序(在2~16进制下)~
题目链接:题目
思路大致如下:
- 需要一个字符数组用于记录输入数在某进制下的表示数,然后对其进行头尾回文比较。
- 需要一个数组记录输入数在哪些进制下存在回文数或它根本不是回文数。
- 用循环去实现对每个输入数在哪些进制下为回文数的判断
代码如下:
#include <stdio.h>
int main()
{
int n,i,x;
while(scanf("%d",&n)&&n)
{
x=0;
char s[16]={0};
int b[15]={0};
int j;
for(j=2;j<=16;j++)
{
int p=n;
i=0;
while(p)
{
s[i]=p%j;
i++;
p/=j;
}
int k;
for(k=0;k<i/2;k++)
{
if(s[k]!=s[i-k-1])
break;
}
if(k>=i/2)
b[x++]=j;
}
if(x==0)
printf("Number %d is not a palindrom\n",n);
else
{
printf("Number %d is palindrom in basis",n);
int m;
for(m=0;m<x;m++)
printf(" %d",b[m]);
printf("\n");
}
}
return 0;
}