#include<iostream> using namespace std; void exchange(int x,int y); int main() { int a; int b; cout << "输入a" << endl; cin >> a; cout << "输入b" << endl; cin >> b; cout << "交换前,a 的值:" << a << endl; cout << "交换前,b 的值:" << b << endl; exchange(a,b); cout << "交换后,a 的值:" << a << endl; cout << "交换后,b 的值:" << b << endl; return 0; } void exchange(int x,int y) { int c; c = x; x = y; y = c; return; }
时间: 2023-08-20 13:54:49 浏览: 152
这段代码是一个简单的交换两个整数值的程序。在主函数中,首先输入两个整数a和b,然后调用函数exchange来交换它们的值。在函数exchange中,通过一个临时变量c来实现交换。
然而,这段代码存在一个问题:在函数exchange中进行的交换操作并不会影响到主函数中的变量a和b的值。这是因为参数传递是按值传递的,即函数内部对参数的修改不会影响到函数外部的变量。
要解决这个问题,可以使用指针参数来实现交换操作,或者将交换后的值作为函数的返回值返回给主函数。以下是使用指针参数的修改后的代码示例:
```cpp
#include<iostream>
using namespace std;
void exchange(int* x, int* y);
int main()
{
int a;
int b;
cout << "输入a" << endl;
cin >> a;
cout << "输入b" << endl;
cin >> b;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
exchange(&a, &b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
void exchange(int* x, int* y)
{
int c;
c = *x;
*x = *y;
*y = c;
return;
}
```
这样修改后,通过传递变量的地址给函数,函数内部可以直接修改变量的值,从而达到交换的目的。
阅读全文