基本值交换功能

Basic Value Swap function

本文关键字:功能 交换      更新时间:2023-10-16

我想设计一段这样的代码。用户输入一个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 integern";
        exit(0);
    }
    else if (number >= 1000) {
        cout << "Please enter a 3 digit integern";
        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来测试它是否工作时,它也没有返回任何东西。任何帮助都很感激,我也不是要求你为我做代码。

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;
}

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

你想通过传递给函数

来修改"number"
int digit_swap(int number, int InputOne, int InputTwo) {
int first, second, third;
if (number < 100) {
    cout << "Please enter a 3 digit integern";
    exit(0);
}
else if (number >= 1000) {
    cout << "Please enter a 3 digit integern";
    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;
}

在新的result变量中存储"return of your function"

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

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;