所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,例如12321。判断给出的整数是否是回文数;若是,则输出该整数各位数字之和;否则输出该数不是一个回文数。
原理大致为:任何一个数除以10的余数就是该数最后一位;任何一个数除以10的商就是排除掉最后一位后的数;所以 ,一个数1234 就可以通过这种方法得到 123 和 4;接下来对 123 进行同样的操作,就得到 12 和 3;接下来得到 1 和 2;接着得到 0 和 1;整个过程是个循环,当商不是 0 的时候就一直如此;每次拿到一个余数,都用来构造新数,新数=新数*10+余数;所以经过四次循环后,我们得到新数 4321 ,如果是回文,那么新数应该等于原数,否则,说明不是回文。
1、判断一个数是不是回文数
#include <stdio.h> void main() { int sum=0,s,n; scanf("%d",&s); n=s; while(n>0) { sum=sum*10+n%10; n=n/10; } if(sum==s) { printf("%d是一个回文数\n",s); }else { printf("%d不是一个回文数",s); } }
2、判断一个字符串是不是回文数
#include <stdio.h> void main() { int i,j,n; char a[100],b[100]; scanf("%s",a); n=strlen(a); j=n-1; for(i=0;i<n;i++)//循环将字符串a逆序赋值给b { b[j]=a[i]; j--; } for(i=0;i<n;i++) { if(a[i]!=b[i]) break; } if(i==n) printf("是一个回文数\n"); else printf("不是一个回文数\n"); }