修正#include<stdio.h> void swap(int a,int b) { int temp =a; a=b; b=temp; } int main() { int x=10,y=20 printf("before swap;x=%d,y=%d",x,y); swap (&x,&y); printf("after swap;x=%d,y=%d",x,y); return 0 }
时间: 2023-11-18 10:02:10 浏览: 109
修正后的代码如下,主要是将 swap 函数的参数改为指针类型,并在调用 swap 函数时传入 x 和 y 的地址:
```c
#include<stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("before swap; x=%d, y=%d\n", x, y);
swap(&x, &y);
printf("after swap; x=%d, y=%d\n", x, y);
return 0;
}
```
输出结果为:
```
before swap; x=10, y=20
after swap; x=20, y=10
```
可以看到,经过 swap 函数交换后,x 和 y 的值已经被成功交换了。
相关问题
#include <stdio.h> void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp; } int main() { int a=5,b=6; swap(&a,&b); printf("a=%d,b=%d\n",a,b); return 0; }
这是一个使用指针实现交换两个变量值的 C 语言程序。首先定义了一个函数 `swap`,它接收两个指向整型变量的指针,然后将这两个变量的值进行交换。在 `main` 函数中,定义了两个整型变量 `a` 和 `b`,它们的初值分别为 5 和 6。接着调用 `swap` 函数,将 `a` 和 `b` 的地址传入函数,从而实现了交换。最后,使用 `printf` 函数输出交换后 `a` 和 `b` 的值,程序执行完毕。
#include<stdio.h> void swap(int *,int); void main( ) { int a=3,b=5; swap(&a,b); printf("a=%d,b=%d",a,b); } void swap(int *x,int &y) { int temp ; temp=*x ; *x=y ; y=temp ; }为什么不能这么写
这段代码中的 swap 函数的第二个参数是一个引用类型 int &y,而在函数定义时参数类型为 int。这样会导致编译错误,因为参数类型与函数调用时传递的参数类型不一致。
应该将 swap 函数的第二个参数改为引用类型 int &y,这样在函数中可以直接修改原变量 y 的值。修改后的函数定义如下:
```
void swap(int *x, int &y) {
int temp;
temp = *x;
*x = y;
y = temp;
}
```
这样,在调用 swap 函数时,可以将 a 的地址和 b 的值作为参数传递给 swap 函数,从而实现变量值的交换。具体代码如下:
```
int a = 3, b = 5;
swap(&a, b);
printf("a=%d, b=%d", a, b);
```
需要注意的是,函数中的第一个参数 x 是一个指针类型,需要使用 *x 来访问指针所指向的变量的值。而函数中的第二个参数 y 是一个引用类型,可以直接访问原变量的值。
阅读全文