首页 > 解决方案 > 反转 Int 数字的函数

问题描述

我是 C++ 和编程的初学者。我正在编写一个函数,该函数将采用整数并反转其数字,例如 reverseDigit(2376) = 6732。我遇到了一个我绝对无法理解的问题,尽管我花了几个小时处理代码,跟踪它,打印出结果以跟踪它在做什么。

问题是(对我而言)该函数对于奇数位数的整数与偶数位数的整数的工作方式不同。但是,如果我在此过程中打印每个步骤的结果,我发现代码在任何步骤中所做的事情都没有区别。

这是该函数的代码:

void reverseDigit(int num)
{

    int digCount = digitCount(num); 
    int flippedNum = 0; 

    for (int i = 1; i <= digCount; i++)
    {
        cout << "Run #" << i << ": " << endl;
        cout << "((num % 10)*pow(10, digCount - i)) = " << ((num % 10)*pow(10, digCount - i)) << endl;  
        cout << "num = " << num << ", flippedNum = " << flippedNum << endl; 
        flippedNum += ((num % 10)*pow(10, digCount - i)); 
        num = num / 10; 
    }

    cout << "The new number is " << flippedNum << endl; 
}

这是我得到的偶数 int 和奇数 int 的结果(打印中间结果):

文本

所以你知道这里出了什么问题:当我输入 256(或任何奇数位数的 int)时,flippedNum 会以某种方式递减 1。我终生无法找到我告诉计算机执行的代码中的哪个位置这个!flippedNum 被初始化为 0,我添加到它的值等于 600,但不知何故,flippedNum 得到了值 599!

标签: c++function

解决方案


推荐阅读