华为(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*) 翻转字符串,来比较.
/* 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*) 翻转字符串,来比较.
相关文章推荐
- 华为(2007年3月)一道面试题: c语言删除一个字符串中的第i个字符后的j个字符
- 华为(2007年3月)一道面试题: c语言删除一个字符串中的第i个字符后的j个字符
- 每日一道算法题:Google面试题:判断一个自然数是否是某个数的平方
- 【华为面试题】给定一个数字(整数),判断它是否回文
- CA一道面试题,判断一个整型数是否是2的幂
- 输入一个正整数,判断其是否为回文数
- python 判断一个正整数是否循环素数
- 华为机试题:判断一个数字中是否包含两个相同的子串 转载
- 判断一个正整数是否为质数的算法
- 输入一个正整数,判断其是否为素数!
- 如何判断一个链表中是否有环(百度面试题)
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个正整数是否是回文数
- 判断一个正整数是否为2的乘方
- 判断一个正整数是否为质数的算法
- 华为机试题:判断一个点是否在三角形内(java)
- 面试题精选(76):给定BST先序遍历序列,不构造BST的情况下判断BST是否每个node都只有一个child
- 四道有趣的单链表面试题(单链表反序、找出链表的中间元素、链表排序、判断一个单链表是否有环)
- (1)任务描述 编写一个程序:输入一个身份证号,判断该号码对应的人是否是18至25岁女孩,是则输出”yes”,否则输出”no” (2)功能要求 ①输入一行给出正整数N(<= 100)是输入的身份证号码
- [笔记]一道C语言面试题:判断字串是否可以通过重新排列字母使之对称