【发布时间】:2018-01-24 13:30:47
【问题描述】:
我编写了一个函数,它应该打印给定整数的所有数字的总和。但是程序输出不正确的结果,它应该输出19。我想问为什么会这样?程序输出2686935。
#include <iostream>
#include <vector>
using namespace std;
vector <int> a;
int sumDigits(int n)
{
int tmp;
if((n>1 && n<9) || n==1 || n==9)
{
tmp=n;
return tmp;
}
while(n>9)
{
a.push_back(n%10);
n/=10;
if((n>1 && n<9) || n==1 || n==9)
{
a.push_back(n);
}
}
for(int i=0; i<a.size(); i++)
{
tmp+=a[i];
}
return tmp;
}
int main()
{
cout<<sumDigits(12745);
return 0;
}
【问题讨论】:
-
显示预期输出、实际输出和您的调试尝试。
-
将数字转换为字符串,然后将字符串的每个字符转换回整数可能会容易得多。不过,这可能会慢得多。
-
你知道在 C++ 中也有
>=和<=运算符 -
你得到的输出是什么?
-
您不必将数字存储到向量中,您可以直接将它们相加。