[英]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.