我正在尝试创建一个在线回文传感器(字母表由 0、1、2、3、...9 组成)。代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int x=0;
int y=0;
int c;
int i=0;
while(1)
{
cin>>c;
//I keep a track of previous number in x and its reverse in y and use them to create the
//the new number and reverse at every input. Then I compare x and y. If equal the number is
//a palindrome.
/*eg:(When 121 is entered digit by digit)
i=0:-
x=10*0+1 y=0+ 10^0 *1
i=1:-
x=10*1+2 y=1+ 10^1 *2
i=2:-
x=10*12+1 y=21+ 10^2 *1
*/
x=10*x+c;
y=y+ static_cast<int>(pow(10.0,static_cast<double>(i)) *c);
cout<<"y= "<<y<<" and "<<"x= "<<x<<endl;
if(y==x)
cout<<"Palindrome"<<endl;
i++;
}
return 0;
}
首先,我输入 1,它被指示为回文(如预期的那样)。然后,我输入 2 并没有发生任何事情(如预期的那样,'y= 21 and x= 12'
被打印)。但是,然后我再次输入 1,这一次也没有发生任何事情(不像预期的那样),这被打印出来了:
y= 120 and x= 121
谁能告诉我,本来应该是 121 的你是怎么变成 120 的?