1.源代码
#include <stdio.h>
#include <math.h>
int is_huiwen(long x){
int a[100],i=0,p;//此题请关注注意a[]数组的使用,x的数位将保留在数组中
while(x){
a[i]=x%10;
i++;
x/=10;
}
for(p=0;p<=(i-1)/2;p++)
if( a[p]!=a[i-p-1] )
return 0;//判断数组元素是否相等
return 1;
}
int main(){
long x;
scanf("%ld",&x);
if(is_huiwen(x))
printf("YES");
else
printf("NO");
return 0;
}
2.代码思路
- 定义一个函数
is_huiwen
,它接受一个长整型参数x
,并返回一个整型值,表示x
是否是回文数。函数的逻辑是:- 声明一个长度为100的整型数组
a
,一个循环控制变量i
,一个判断变量p
。 - 使用一个
while
循环,将x
的每一位数字从右到左存放到数组a
中,即a[i]=x%10
,其中x%10
表示x
除以10的余数,也就是x
的最后一位数字。然后将i
加一,表示数组的实际长度增加一位。再将x
除以10,去掉x
的最后一位数字,即x/=10
。循环的条件是x
不为0,即x
还有数字未处理。 - 使用一个
for
循环,从数组的两端向中间遍历,判断数组的元素是否对称,即a[p]
是否等于a[i-p-1]
,其中p
从0到(i-1)/2
变化,i
是数组的实际长度。如果有任何一对元素不相等,就说明x
不是回文数,返回0;如果所有的元素都相等,就说明x
是回文数,返回1。
- 声明一个长度为100的整型数组
- 定义一个主函数
main
,它首先声明一个长整型变量x
,然后使用scanf
函数从标准输入读取一个长整型数,赋值给x
。然后调用函数is_huiwen
,传入参数x
,判断x
是否是回文数。如果是,就使用printf
函数输出YES
;如果不是,就输出NO
。最后返回0表示程序正常结束。
这段代码的效果是,对于从标准输入读取的一个长整型数,它会判断它是否是回文数,并输出到标准输出。例如,如果输入的数是1234321
,那么输出的结果是YES
。