首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Palindrome2循环不工作

Palindrome2循环不工作
EN

Stack Overflow用户
提问于 2012-12-18 16:51:33
回答 1查看 62关注 0票数 0

在我粘贴的程序中,palindrome2函数在循环中不能正常工作,因为max2给出了输出998000( for循环的上限),而对于单个数字'1441‘,它工作正常,输出为1。你能指导一下吗?

代码语言:javascript
复制
#include <iostream>
long palindrome1(long);
long palindrome2(long);

int main()
{
    using namespace std;
    long a,b=111,max1=0,max2=0;
    for(b=111;b<998001;b++)
    {
      if((palindrome2(b))==1)
      {
          max2=b;
      }
    }
    for(a=11;a<998001;a++)
    {
        if((palindrome2(a))==1)
        {
          max1=a;
        }
    }
     cout<<max1<<endl;
     cout<<max2<<endl;
     cout<<palindrome2(1441)<<endl;
     cin.clear();
     cin.get();
}
long palindrome2(long n)
{
    long a[6],b,c=0;
    do {
        a[c]=n%10;
        n=n/10;
        c++;
    } while(n>0);

    b=c;
    if(b%2!=0)
    {
        for(int l=b/2;l>=0;l--)
            for(int m=(b/2)+1;m<=b;m++)
            {
                if(a[l]!=a[m])
                {
                    return 0;
                    break;
                }
            }
    }
    else
    {
        return 1;   
    }
}

long palindrome1(long n)
{
    long a[6],b,c=0;
    do {
        a[c]=n%10;
        n=n/10;
        c++;
    } while(n>0);

    b=c;
    if(b%2==0)
    {
        for(int k=(b/2)-1;k>=0;k--)
            for(int d=((b/2)+1);d<=b;d++)
            {
                if(a[k]==a[d])
                {
                    return 0;
                    break;
                }
            }
    }
    else
    {
        return 1;   
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 17:00:58

我没有考虑循环边界的情况,但有一些明显的错误:对于所有偶数长度数字,您将返回1。这不可能是正确的。此外,对于奇数长度的数字,如果不匹配,则立即返回0,但如果所有内容都匹配,则不要返回1(跳过else部分,以防这就是您所想的)。

基本上,palindrome2( 10 )将返回1,而palindrome2( 101 )将返回一些垃圾值(这是一个技术术语)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13929317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档