指出可以实现变量a,b的互换错误:#include <stdio.h> void swap3 (int *p,int *q) {int t; t=*p;p=q;*q=t;} int main() {int a=1,b=2; swap3(&a,&b); printf("%d,%d\n",a,b); return 0;}
时间: 2024-01-23 07:02:37 浏览: 70
在 `swap3()` 函数中,指针 `p` 和 `q` 被交换了,而不是 `p` 所指向的值和 `q` 所指向的值。修改后的代码如下:
```
void swap3(int *p, int *q) {
int t = *p;
*p = *q;
*q = t;
}
```
这样,`a` 和 `b` 的值才能被正确地互换。
相关问题
指出可以实现变量a,b的互换错误:#include <stdio.h> void swap1(int *p,int *q) {int *t; t=p;p=q;q=t;} int main( ) {int a=1,b=2; swap1(&a,&b); printf("%d,%d\n",a,b); return 0;}
在 swap1 函数中,指针 t 没有被正确赋值。应该将 p 所指向的值存入 t,再将 q 所指向的值存入 p,最后将 t 所指向的值存入 q。修改后的代码如下:
```
void swap1(int *p, int *q) {
int t = *p;
*p = *q;
*q = t;
}
```
这样,a 和 b 的值才能被正确地互换。
指出可以实现变量a,b的互换错误:#include <stdio.h> void swap4 (int p,int q) {int t; t=p;p=q; q=t;} int main() {int a=1,b=2 ; swap4(a,b); printf(“%d,%d\n”,a,b); return 0 ;}
在 `swap4()` 函数中,`p` 和 `q` 只是函数的形参,是 `main()` 函数中的 `a` 和 `b` 的拷贝。在函数内部交换 `p` 和 `q` 的值并不会影响到 `main()` 函数中的 `a` 和 `b` 的值。因此,调用 `swap4()` 函数后,`a` 和 `b` 的值并没有被互换。正确的实现应该使用指针或者引用来传递变量,或者返回交换后的值。修改后的代码如下:
```
void swap4(int *p, int *q) {
int t = *p;
*p = *q;
*q = t;
}
int main() {
int a = 1, b = 2;
swap4(&a, &b);
printf("%d,%d\n", a, b);
return 0;
}
```
这样就能正确地交换 `a` 和 `b` 的值了。
阅读全文