回 帖 发 新 帖 刷新版面

主题:判断对称数

用c语言
不能用任何系统函数
那位高手给个简单的算法
我是用最笨的方法弄得

对称数
11
1221
123321
之类的

回复列表 (共21个回复)

沙发

一不小心写错了
何必呢?
不是白吃的哥们给个比较好的算法呗?

板凳

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 楼

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 楼

LZ说的应该是回文数,在这个论坛上也看到不少了

5 楼

#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;
}

6 楼


用栈呐[em2]

7 楼

呵呵
该给分得一定给
像3楼的我是没办法给分的

8 楼

用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 楼

楼主恐怕没说清楚 是不是任意数字? 包括重复的数字


111111  121121 211112

10 楼

如果用数组把需要判断的数按位数带入,
就可以用数组下标带入表达试来判断,比如:
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<<“是对称数”;

我来回复

您尚未登录,请登录后再回复。点此登录或注册