基本价值交换功能

时间:2016-08-29 08:05:08

标签: c++ function

我试图设计一段像这样工作的代码。用户输入一个3位数的数字,假设他们选择了653,他们还输入了他们希望交换的整数中的哪些数字。例如:

Enter a number and values you wish to swap: "653 2 3"

然后返回以下值:

635 is the new number. 

我试图在一个名为digit_swap的函数中执行此操作。我不确定如何处理这个问题,因为我对编码很新,甚至更新编码。我想我必须将整数分成单位,数十和数百个组件,为此我做了以下内容:

third = (number % 10);
second = ((number % 100)/10);
first = ((number % 1000)/100);

唯一的问题是,我会使用一堆if语句来确定数字的交换,还是一个循环。我真的不知道该怎么做。至于我的代码,我有以下内容。

#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int digit_swap(int number, int InputOne, int InputTwo) {

int first, second, third;

    if (number < 100) {
        cout << "Please enter a 3 digit integer\n";
        exit(0);
    }
    else if (number >= 1000) {
        cout << "Please enter a 3 digit integer\n";
        exit(0);
    }
    else {

        third = (number % 10);
        second = ((number % 100)/10);
        first = ((number % 1000)/100);

    }   
}

using namespace std;
int main() {
    int option_one, option_two;
    int number;
    cin >> number;
    cin >> option_one >> option_two;
    digit_swap(number, option_one, option_two);
    cout << "New number = " << number;

}

即使我通过在if语句的else段中添加return first进行测试来查看它是否正常工作,它也不返回任何内容。感谢任何帮助,我也没有要求你为我做代码。

3 个答案:

答案 0 :(得分:1)

int digit_swap(int number, int InputOne, int InputTwo) {

    int first, second, third;

    if (number < 100) {
        // DO Something as you are doing 
    }
    else {
        third = (number % 10);
        number /= 10;
        second = (number % 10);
        number /= 10;
        first = (number % 10);
        number /= 10;
    }
    if(InputOne == 1) {
        if(InputTwo == 2) {
            number += second*100 + first*10 + third;
        }
        else if(InputTwo == 3) {
            number += third*100 + second*10 + first;
        }
        else{;}
    }
    else if(InputOne == 2) {
        if(InputTwo == 3) {
            number += first*100 + third*10 + second;
        }
    }
    else{;}
    return number;
}

答案 1 :(得分:0)

我没有测试你的代码,但我认为你想要的方式存在问题。

你要修改&#34;数字&#34;通过将其传递给您的函数

int digit_swap(int number, int InputOne, int InputTwo) {

int first, second, third;

if (number < 100) {
    cout << "Please enter a 3 digit integer\n";
    exit(0);
}
else if (number >= 1000) {
    cout << "Please enter a 3 digit integer\n";
    exit(0);
}
else {

    third = (number % 10);
    second = ((number % 100)/10);
    first = ((number % 1000)/100);

}   

}

如果你想修改一个函数内部的变量,并且可以在外面看到更改,则需要使用指针。如果您不熟悉编程,我建议您在主代码中执行类似的操作。函数的工作方式,它将创建所有参数的副本,您对它们所做的更改不在原始参数上。

int main() {
    int option_one, option_two;
    int number;
    cin >> number;
    cin >> option_one >> option_two;
    int result = digit_swap(number, option_one, option_two);
    cout << "New number = " << result;

}

您在新结果变量中存储&#34;返回您的函数&#34;

答案 2 :(得分:0)

首先你需要通过引用传递数字,否则digit_swap中的数字只是main()中数字的副本。你的另一个选择就是调用这个函数:

number = digit_swap(number, option_one, option_two);

或参考

void digit_swap(int & number, int InputOne, int InputTwo);

为了帮助你进行交换,我建议使用一个int数组。

int arr[3];
arr[0] = number / 100;
arr[1] = number / 10;
arr[2] = number % 10;
int temp = arr[InputOne-1];
arr[InputOne-1] = arr[InputTwo-1];
arr[InputTwo-1] = temp;

我希望有所帮助。