【发布时间】:2020-07-20 10:31:08
【问题描述】:
我试图找到一个反转的数字,并通过不同的方法检查它是否是回文,但我得到了一个正确的反转数字,最多两位数,如果数字超过两位,那么我得到错误的输出.我不明白为什么会这样,因为我认为我的代码是正确的。
下面是代码
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int num, rem, t, add;
cin >> t;
while (t--) {
int total = 0, count = 0, i = 1, quo = 0;
cin >> num;
quo = num;
while (quo > 9) //count determiner
{
quo = quo / 10;
++count;
}
while (count >= 0) //reverse number saved in total
{
int den = pow(10, i);
rem = (num % den);
add = rem / pow(10, i - 1);
total = total + (add * pow(10, count));
++i;
--count;
}
if (total == num) {
cout << "Palindrome"
<< "\n";
}
else {
cout << "Not a Palindrome"
<< "\n";
}
}
return 0;
}
请帮助我知道我在这段代码中哪里出错了。
【问题讨论】:
-
C 和 C++ 是两种截然不同的语言,具有不同的规则和语义。请仅标记您的代码实际编写的语言。另外请花一些时间阅读the help pages,阅读SO tour,阅读How to Ask,以及this question checklist。
-
您不需要
pow来反转数字。事实上,它非常简单。 -
另外,这个数字可以是负数吗?如果是这样,您的例行程序将无法正常工作。
-
您在使用调试器时学到了什么?
-
How to debug small programs 是每个程序员都应该能够使用的一项重要技能。使用 StackOverflow 作为调试器比使用调试器进行调试要慢几个数量级。您已经能够很快地重新考虑“我认为我的代码是正确的”。
标签: c++ reverse palindrome