我试图设计一段像这样工作的代码。用户输入一个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
进行测试来查看它是否正常工作,它也不返回任何内容。感谢任何帮助,我也没有要求你为我做代码。
答案 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;
我希望有所帮助。