怎么判断一个数是否为回环数,程序,code!!

性能侠客行 2008-05-12 08:53:29
回环数 如234565432,4567654,1234321 ...等等为回环数.
怎么判断, 小弟 想了 半天 想出个 笨方法...
大家有没有 更好更精简 的程序, 贴 code....
我先贴出自己的笨方法..
#include <stdio.h>
bool CheckCycleNum(unsigned long *pnum)
{
unsigned long tmp;
bool result = false;
int i,j;
char array[19]={0};
tmp = *pnum;
for(i=0;i<19 && tmp>0 ;i++)
{
array[i] = (char)(tmp%10);
tmp = tmp/10;
}
j = i;
while(--j>=0)
printf("%d ",array[j]);
printf("\ni=%d\n",i);
if(i%2==0)
{
result = false;
}
else
{
i--;
result = true;
for(j=0;j<i/2;j++)
{
if(!(array[i-j]==array[j] && (array[j]+1)==array[j+1]))
{
result = false;
break;
}
}

}
if(result)
printf("okok The num:%u is a cycle num.\n\n\n",*pnum);
else
printf("notnotThe num:%u isnot a cycle num.\n\n\n",*pnum);
return result;
}

void main()
{
unsigned long int cyclenum[10] ={12321,45678987654,778899887,987656789,567898765,1,2,3,4};
for(int i=0;i<10;i++)
{
CheckCycleNum(&cyclenum[i]);
}

}
...全文
1004 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
性能侠客行 2008-05-13
  • 打赏
  • 举报
回复

看了一下,原来自己做的也不复杂,因为今天这个面试题目.
要求是 输入的数,不能用字符串...
看我的怎样....
bool CheckCycleNum(unsigned long *pnum)
{
unsigned long tmp;
bool result = false;
int i,j;
char array[19]={0};
tmp = *pnum;
for(i=0;i<19 && tmp>0 ;i++)
{
array[i] = (char)(tmp%10);
tmp = tmp/10;
}
if(i%2==0)
{
result = false;
}
else
{
result = true;
for(j=0;j<i/2;j++)
{
if(!(array[i-1-j]==array[j] && (array[j]+1)==array[j+1]))
{
result = false;
break;
}
}

}

return result;
}
fengdream 2008-05-12
  • 打赏
  • 举报
回复
int cirtle(char *p)
{
int Len,i;
Len = strlen(p);

if(Len%2==0)
return 0;

for(i=0;i<Len/2;i++)
if(p[i]!=p[Len-i-1])
return 0;
return 1;
}
int main()
{
printf("12321 is cirtle? %d\n",cirtle("12321"));
}
PcrazyC 2008-05-12
  • 打赏
  • 举报
回复
不知道你是不是这个意思

#include<iostream>

using namespace std;

int Str_Judge(char *str,int n)
{
char *p,*q,ch=*str;
int i;
p=str;
q=str+n-1;
for(i=0;p<=q;i++,p++,q--)
{
if(*p!=*q||*p!=ch+i||*q!=ch+i)
return 0;
}
return 1;
}

int main()
{
char str[50];
while(cin>>str)
printf("%d\n",Str_Judge(str,strlen(str)));
return 0;
}
hujinyong199 2008-05-12
  • 打赏
  • 举报
回复
这个问题不难,lz自己思考比较由好处。
性能侠客行 2008-05-12
  • 打赏
  • 举报
回复
more code ....
ding
ding

性能侠客行 2008-05-12
  • 打赏
  • 举报
回复
more code ....
ding
ding




































性能侠客行 2008-05-12
  • 打赏
  • 举报
回复
上楼 ,你的程序有点问题??
如 112233221 , 75457, 87678,等是回环数吗?
.............疑惑...
PcrazyC 2008-05-12
  • 打赏
  • 举报
回复
#include<iostream>

using namespace std;

int Str_Judge(char *str,int n)
{
char *p,*q;
p=str;
q=str+n-1;
for(;p<q;)
{
if(*p++!=*q--)
return 0;
}
return 1;
}

int main()
{
char str[50];
while(cin>>str)
printf("%d\n",Str_Judge(str,strlen(str)));
return 0;
}
性能侠客行 2008-05-12
  • 打赏
  • 举报
回复
没有多少分散,自己顶一下...






















































































69,322

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧