您的位置:首页 > 编程语言 > C语言/C++

华为(2007年3月)一道面试题: c语言判断一个正整数, 是否是一个对称数

2007-03-08 18:58 656 查看
/* 华为(2007年3月)一道面试题: c语言判断一个正整数(如:3456543),是否是一个对称数(注不能转成字符串来比较) */
/* test.c */

#include <stdio.h>
#define TRUE 1;
#define FALSE 0;

typedef unsigned char BOOL;



BOOL IsSymmetry(unsigned long N)
{
unsigned long i=N,j=0;

/*先把该整数按低位到高位置换*/
while(i)
{
j=j*10+i%10;
i/=10;
}
/*再用置换的数与原数比较*/
if(j==N)
{
return TRUE;
}
else
{
return FALSE;
};
}

void main()
{

unsigned long N=3456543;

if(IsSymmetry(N))
{
printf("%lu is symmetry/n",N);
}
else
{
printf("%lu is not symmetry/n",N) ;
}

}

另外,它若允许转成字符串再比较就简单了,用指针一头一尾移动判断即可

或者用itoa(int,char*,radix) 或 ltoa(long,char*,radix)转成字符串,再用strrev(char*) 翻转字符串,来比较.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐