C++代码说明



我目前正在开发一个程序,该程序输出一个三位整数的数字 1089(即幻数),该整数的第一个数字大于最后一个数字。我输入了一些代码,但没有收到 1089,而是收到 891。谁能提供一些解释为什么。

 //Uses a cout to inform user will be using the number 412 as an example.
        //Uses a cout to explain to user the number needs to be reversed.
        cout << "Alright, let's walk through an example, using the number 412." << endl;
        int numExample = 412;
        cout << "Please input 412" << endl;
        cin >> numExample;
        cout << "First, the number 412 is reversed." << endl;
        //The following is done for reversing the number 412:
            int reverseNum = 0, remainder = 0;
            while (numExample)
            {
                remainder = numExample % 10;
                reverseNum = (reverseNum * 10) + remainder;
                numExample = numExample / 10;
            }
                cout << "The reverse of 412 is " << reverseNum << endl;
        cout << "Next, we want to subtract the reverse of the original number from its reverse" << endl;
        cout << "This gives us 198" << endl;
        cout << "From there, we want to reverse 198." << endl;
        //The same procedure is used to reverse 198
        int numExample2 = 198;
        cout << "Please enter 198" << endl;
        cin >> numExample2;
            int reverseNum2 = 0, remainder2 = 0;
            while (numExample2)
            {
                remainder2 = numExample2 % 10;
                reverseNum2 = (reverseNum2 * 10) + remainder2;
                numExample2 = numExample2 / 10;
            }
        cout << "The reverse of 198 is " << reverseNum2 << endl;
        int magicNumber = (reverseNum2 + numExample2);
        cout << "Following that, we want to add 891 to 189 which gives us " << magicNumber << endl;

尝试编写一个函数来处理这个问题,这样你的代码就更干净了(这也会让人们更容易帮助你!

#include <iostream> 
#include <cmath>
using namespace std;
int reverseDigit(int num); // For example purposes
int _tmain(int argc, _TCHAR* argv[])
{
    int Number1,
    Number2,
    temp1,
    temp2,
    Result;
    cout << "Enter the number 412: ";
    cin >> Number1;
    temp1 = reverseDigit(Number1);
    temp1 = Number1 - temp1;
    cout << "Enter the number 198: ";
    cin >> Number2;
    temp2 = reverseDigit(Number2);
    Result = temp1 + temp2; 
    cout << "The magic number is: " << Result << endl; 
    return 0; 
}
int reverseDigit(int num) 
{
    int reverseNum = 0;
    bool isNegative = false;
    if (num < 0)
    {
        num = -num;
        isNegative = true;
    }
    while (num > 0)
    {
        reverseNum = reverseNum * 10 + num % 10;
        num = num / 10;
    }
    if (isNegative)
    {
        reverseNum = -reverseNum;
    }
    return reverseNum;
}

我意识到您没有使用负片,因此如果您选择使用它,您可以删除该位,您也可以对其进行扩展......话虽如此,这将使实际的"逆转过程"更容易使用、改进和阅读。

相关内容

  • 没有找到相关文章

最新更新