我的代码在引入巨号时崩溃了

时间:2014-03-03 00:34:35

标签: c++

我有下一个代码,要求用户引入一个大于100000000的数字,然后它要求代码必须在数字中搜索的数字,最后代码显示数字出现在数字上的次数,它似乎很容易,但我有一个限制:

数据类型不能是字符串或字符,这就是我使用int的原因,但是当我引入像100100010000100这样的真正的大数字代码时,代码无法正常工作,我怎么能解决这个问题呢? ??如果有人可以帮我解决这个问题,我会非常感激

#include <iostream>

using namespace std;

int searchDigit(long int num,int digit);

int main()
{
    long int num;
    int digit,x;
        cout << "Give me the number: " << endl;
        cin >> num;
        cout << "Digit " << endl;
        cin >> digito;
        x = searchDigit(num,digit);
        cout << "\nThe digit " << digit << " appears " << x << " times" << endl;
    return 0;
}

int searchDigit(long int num,int digit)
{
    int r,c,p = 0;
    for(c = num;c != 0;c = c/10)
    {
        r = c % 10;
        if(r == digit)
           p++;
    }
    return p;
}

1 个答案:

答案 0 :(得分:0)

请注意,在searchDigit中,for-loop中有c = num。如果long int大于int - 在许多平台上都是如此 - 您将失去num的高位。

如果您启用了更多编译器警告,则可能会选择此警告。由于您没有提供有关平台,编译器或使用的标志的信息,因此很难更具体。