这道题谁会?帮忙把答案写出来 不会的别吓唬发答案

来源:百度知道 编辑:UC知道 时间:2024/04/30 13:07:08
#include<stdio.h>
void main()
{
int a=-1, b=1;
void f1(int x, int y), f2(int *x , int *y);
void f3 (int * x , int *y),f4 (int x, int y);
f 1(a, b);
printf (“(%d, %d)\n”, a, b);
a= -1, b= 1;
f 2(&a, &b);
printf (“(%d, %d)\n”, a, b);
a= -1, b= 1;
f 3(&a, &b);
printf (“(%d, %d)\n”, a, b);
a= -1, b=1;
f 4(a, b);
printf(“(%d, %d)\n”, a, b);
}
void f 1(int x, int y)
{ int t;
t=x; x=y; y=t;
}
void f 2(int *x, int *y)
{ int t;
t= *x; *x= *y; *y=t;
}
void f 3(int *x, int *y)
{ int *t;
t=x; x=y; y=t;
}
void f 4(int x, int y)
{ int *t= malloc(sizeof(t));
*t=x; x=y; y=*t;
}
(17)程序运行时,第1行输出____(17)____。
A、(1,-1) B、(-1,1) C、(-1,-1) D、(1,1)
(18)程序运行时,第2行输出____(18)____。
A、(1,-1) B、(-1,1) C、(-1,-1) D、(1,1)
(19)程序运行时,第3行输出____(19)____。
A、(1,-1) B、(-1,1) C、(-

17、B
18、A
19、B
20、B

void f 1(int x, int y)
{ int t;
t=x; x=y; y=t;
} 这个函数在C语言中是这样的,它会在内存中申请两个临时变量x,y 然后通过传递参数使x的值等于a,y等于b.这时交换x,y.它们的值交换了,但a,b的值没变.因为改变的只是x和y

void f 2(int *x, int *y)
{ int t;
t= *x; *x= *y; *y=t;
}
这个函数因为参数传送的是a和b的地址.所以a和b的值交换了.

f1 没用指针,交换后的结果不能带回。
f2 用指针,交换后的结果带回。
f3 指针指向的值没有交换。
f4 没用指针。

(-1, 1)
(1, -1)
(-1, 1)
(-1, 1)

17、B
18、A
19、B
20、B

程序由问题不能运行!