#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();
}
我键入上面的代码来检查一个数字是否是回文,但我不断得知它不是回文,而不管我输入的数字。我哪里出错了?
答案 0 :(得分:5)
while
周期结束后i
将a
中的元素数量存储起来。因此,在上面的循环中,您应该将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]。