主题:判断对称数
yuhua
[专家分:1730] 发布于 2006-03-29 14:03:00
用c语言
不能用任何系统函数
那位高手给个简单的算法
我是用最笨的方法弄得
对称数
11
1221
123321
之类的
回复列表 (共21个回复)
沙发
yuhua [专家分:1730] 发布于 2006-03-29 14:03:00
一不小心写错了
何必呢?
不是白吃的哥们给个比较好的算法呗?
板凳
euc [专家分:4310] 发布于 2006-04-01 18:29:00
bool symmetry (unsigned int x)
//判断整数x是否对称数,是返回TURE,否返回FALSE
{
static unsigned int tab[5] = {
11, 1221, 123321, 12344321, 1234554321
}
int i;
for (i = 0; i < 5 && x != tab[i]; ++i);
return i < 5;
}
3 楼
euc [专家分:4310] 发布于 2006-04-01 18:32:00
bool symmetry (unsigned int x)
//更裸露的方法
{
if (x == 11) return TRUE;
if (x == 1221) return TRUE;
if (x == 123321) return TRUE;
if (x == 12344321) return TRUE;
if (x == 1234554321) return TRUE;
return FALSE;
}
4 楼
rickone [专家分:15390] 发布于 2006-04-01 22:56:00
LZ说的应该是回文数,在这个论坛上也看到不少了
5 楼
rickone [专家分:15390] 发布于 2006-04-01 23:09:00
#include<stdio.h>
#define TRUE 1
#define FALSE 0
typedef int BOOL;
typedef unsigned long DWORD;
BOOL huiwen(DWORD n)
{
DWORD wei[10]={0};
DWORD length=0;
DWORD i,j;
while(n>0)
{
wei[length++]=n%10;
n/=10;
}
for(i=0,j=length-1;i<j;i++,--j)
if(wei[i]!=wei[j])return FALSE;
return TRUE;
}
int main()
{
DWORD n;
scanf("%d",&n);
if(huiwen(n))
printf("%d 是回文数!\n",n);
else
printf("%d 不是回文数!\n",n);
return 0;
}
7 楼
yuhua [专家分:1730] 发布于 2006-04-03 14:34:00
呵呵
该给分得一定给
像3楼的我是没办法给分的
8 楼
bclover [专家分:0] 发布于 2007-02-14 17:00:00
用VB行不行,C语言我不记的怎么写了,
function huiwen ( n as long) as boolean
dim i as integer
huiwen=true
for i=1 to int(len(n)/2)
if mid(n,i,1)<>mid(n,len(n)-i+1,1) then
huiwen=false
exit for
endif
next
end function
9 楼
bpttc [专家分:8790] 发布于 2007-02-14 18:18:00
楼主恐怕没说清楚 是不是任意数字? 包括重复的数字
如
111111 121121 211112
10 楼
智商大于一百 [专家分:20] 发布于 2007-02-14 19:29:00
如果用数组把需要判断的数按位数带入,
就可以用数组下标带入表达试来判断,比如:
12344321
A[8]={1,2,3,4,4,3,2,1};
for(int I=0;I<=4;I++)
{
if(A[I]!=A[8-I]) cout<<“不是对称数”;
}
cout<<“是对称数”;
我来回复