下列程序有错,请改错。 #include <iostream> using namespace std; void swap(int a,int b) {int t=a; a=b; b=t; } int main() { int a,b; cin>>a>>b; cout<<"a="<<a<<",b="<<b<<endl; swap(a,b); // 交换变量a、b的值 cout<<"a="<<a<<",b="<<b<<endl; return 0; } 输入样例: 8 4 输出样例: a=8,b=4 a=4,b=8 时间限制:500ms内存限制:32000kb
时间: 2023-08-07 07:02:36 浏览: 79
这个程序存在问题,因为在 `swap` 函数中传递的是 `a` 和 `b` 的值,而不是它们的引用。因此,函数中交换变量的操作只是在函数内部生效,对外部的 `a` 和 `b` 没有任何影响。可以通过将 `swap` 函数的参数改为引用来解决这个问题,即:
```
void swap(int& a, int& b) {
int t = a;
a = b;
b = t;
}
```
在这个版本的 `swap` 函数中,传递的是 `a` 和 `b` 的引用,函数中的交换操作将会直接作用于外部的 `a` 和 `b`,从而实现了正确的交换操作。
阅读全文