验证代码以检查数字是否为回文

时间:2013-11-19 15:43:19

标签: c++ visual-c++

#include <iostream>
 #include "conio.h"
 #include <math.h>

 using namespace std;

void main()
{
    int n;
    int sum=0;
    int a[16];
    cin>>n;
    int i=0;
    while(n>0)
    {

        a[i]=n%10;
        n=n/10;
        i++;
    }
    for(int j=0;j<=i;j++)
    {
        if(a[j]!=a[i-j])
        {
            sum=1;
        }
    }
    if(sum==1)
        cout<<"not a palindrome";
    else
        cout<<" palindrome";
    _getch();
}

我键入上面的代码来检查一个数字是否是回文,但我不断得知它不是回文,而不管我输入的数字。我哪里出错了?

2 个答案:

答案 0 :(得分:5)

while周期结束后ia中的元素数量存储起来。因此,在上面的循环中,您应该将a[0](第一个元素)与a[i-1](最后一个元素)进行比较。相反,您将a[0]a[i]进行比较,而{{1}}不是数字的数字。想想你如何解决这个问题。

答案 1 :(得分:1)

你只有一个错误: 改变这个

if(a[j]!=a[i-j]){

if(a[j]!=a[i-j-1]){

例如,考虑11。 然后我是2,所以i-j是2-0,即2,当j为0时,这意味着你将[0]与[2]进行比较,而不是[1]。