簡體   English   中英

基本值交換功能

[英]Basic Value Swap 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添加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;
}

我沒有測試您的代碼,但我認為您要進行的方式存在問題。

您想要通過將“數字”傳遞給函數來對其進行修改

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;

}

您在新的結果變量中存儲“函數的返回值”

首先,您要么需要通過引用傳遞數字,否則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;

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM