所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,例如12321。判断给出的整数是否是回文数;若是,则输出该整数各位数字之和;否则输出该数不是一个回文数。
原理大致为:任何一个数除以10的余数就是该数最后一位;任何一个数除以10的商就是排除掉最后一位后的数;所以 ,一个数1234 就可以通过这种方法得到 123 和 4;接下来对 123 进行同样的操作,就得到 12 和 3;接下来得到 1 和 2;接着得到 0 和 1;整个过程是个循环,当商不是 0 的时候就一直如此;每次拿到一个余数,都用来构造新数,新数=新数*10+余数;所以经过四次循环后,我们得到新数 4321 ,如果是回文,那么新数应该等于原数,否则,说明不是回文。
代码:
#include <stdio.h>
#include <string.h>
int whether(char a[],int n)
{
int i;
char temp;
for(i=0;i<n/2;i++)//从第一个到中间,判断与后面对应元素的关系
{
if(a[i]==a[n-1-i])
{
continue;
}
else
{
printf("不是回文数");
return 0;
}
}
printf("是回文数");
}
int main()
{
int n;
char a[30];
printf("input a str:\n");
gets(a);
n=strlen(a);//取得元素个数
whether(a,n);
}