基本值交换功能
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 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;
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- C++ - 没有自定义交换功能的移动分配运算符?
- 不正确的比较和交换计数器输出用于快速排序功能
- 如何在专门使用交换功能时修复 gcc8 的编译错误/
- 实现交换/复制功能:有没有更好的方法
- 获取交换功能的分段错误11
- 编写一个功能,该函数将使用框架交换两个整数
- 在C 类中超载交换功能
- 交换功能 - 指针 - 混乱
- 我什么时候需要交换功能
- 第一个交换功能有什么问题?
- std::ref 和交换功能似乎不能很好地协同工作
- 发出写入交换功能
- 交换功能出现分段故障
- 我如何使交换功能更快在c++
- 基本值交换功能
- 基于ai+b mod n的交换功能