如何计算很多数字的乘积?

时间:2015-03-21 19:01:42

标签: c++

所以我是c ++编程的初学者,我在网上遇到了一些问题。 我必须计算从999到100的所有数字乘积(Eg.999 * 999,999 * 998 ... 800 * 800,800 * 799 ......,100 * 100)。我可以轻松打印出这些产品,但当我尝试将这些值传递给函数时,它们无法正常工作。 你能看一下下面的代码并指出任何错误吗? 我认为它与缓冲区有关,但我不知道如何解决这个问题。感谢。

#include <iostream>

using namespace std;

unsigned long int num,rev,temp,rem = 0,reversed = 0;
int ispalin(unsigned long int n)
{
    temp=n;
    while(temp!=0)
    {
        rem = temp%10;
        reversed = reversed*10 + rem;
        temp/=10;
    }   
   if(reversed == n)
   {
      return 1;
   }
   return 0;
}
int main()
{
    int maxi = 0;
    for (int i =999 ; i >= 100;i--)
    {
        for(int j = i;j >= 100; j--)
        {
            rev = ispalin(i*j);
            if (rev == 1)
            {
                if(i*j > maxi)
                {
                    maxi = i*j;
                }
            }
        }
    }
    cout<<maxi<<" This is max"<<endl;
}

1 个答案:

答案 0 :(得分:1)

在每次对回文检查开始时,

reversed必须重置为零。最好的方法是使reversed(和其他人)成为ispalin的本地变量。