int quotient(int , int );
int remainder(int , int );
void seperate(int);

int main()
{
    int input;

    cout << "Input int " << endl;
    cin >> input;

    seperate(input);
}


int quotient(int divident, int divisor)
{
    return divident / divisor;
}

int remainder(int divident, int divisor)
{
    return divident % divisor;
}

void seperate(int input)
{

    int integers[6] = {};

    for (int i = 1; i <= 5; i++)
    {
        integers[i] = quotient(remainder(input, pow(10, 6 - i)), pow(10,5 - i));
    }

    for (int i = 1; i <= 5; i++)
    {
        cout << integers[i] << setw(2);
    }

    cout << endl;

}


我想知道为什么整数分隔适用于小数值(例如1234)但不适用于大数值(例如32767)。如此大的输入值的结果为3 2-2-3-3(带破折号)。有什么建议么?

最佳答案

double pow (double base, double exponent);


pow()返回double,但是在被调用的函数中,您收到的值为int

尝试像这样向下转换:

integers[i] = quotient(remainder(input, (int)pow(10, 6 - i)),
                                         ^^^
                (int)pow(10, 5 - i));
                 ^^^


说明:math.h还有一个名为remainder的函数,

extern double remainder _PARAMS((double, double));


因此,当您调用remainder(int&, double)时,编译器无法检测到哪个remainder()将由编译器执行。

10-06 13:32