首先我们得知道几个知识点:
1、回文数:是指顺读和反读都一样的数(例如:12321,145541)
2、如何将一个数逆序,部分代码如下:
d0{
m=n%10;
s=s*10+m;
}while(m);
当然,我们也可以用数组的方式,这里不需要将它的逆序输出来比较,而是通过用里面的每一个数值进行比较,部分代码如下:
do{
digit[k++]=n%10;
n/=10;
}while(n);
3、判断它是否为回文数的最重要一步,就是比较变化后的数与变化前的数(适用于第一种:即输出逆序法),或者说比较数字左右两端的数(适用于第二种)。
接下来再来写完整代码,法一:
#include<stdio.h>
int f(int n)
{
int m=0,s=0,n1=n;
do
{
m = n % 10;
s = s * 10 + m;
n/=10;
} while (n);
if(s==n1)
return 0;
else
return 1;
}
void main()
{
int n;
printf("请输入一个正整数\n");
scanf("%d", &n);
if(f(n)!=0)
printf("此数不是回文数\n");
else
printf("此数是回文数\n");
}
思路:(调用函数)先判断逆序值s是否等于n最开始的值,然后返回一个值(0或1),若返回值为0即是回文数,反之。
法二:
#include<stdio.h>
void main()
{
int digit[10], k=0,n=0,n1,i;
scanf("%d", &n);
n1 = n;
do {
digit[k++] = n % 10;
n/= 10;
} while (n);
k--;
for (i = 0; i < k; i++)
if (digit[i] != digit[k]) break;
if (i < k)
printf("%d不是回文数\n", n1);
else
printf("%d是回文数\n", n1);
}
思路:(运用数组)将每个数字按顺序保存在数组里,然后比较左右两端的数字若对应的两个数都相等,则是回文数,反之。