下列程序段的输出结果是:( ). void fun( int *x, int *y) { printf("%d %d",*x,*y);*x=3;*y=4;} main( )

main( )
{ int x=1, y=2;
fun(&y, &x);
printf("%d %d", x, y);
}
A、2 1 1 2
B、1 2 3 4
C、2 1 4 3
D、1 2 1 2

fun(&y, &x);函数内容是什么啊?
原题是不是:

下列程序段的输出结果是:( ).
void fun( int *x, int *y)
{ printf("%d %d",*x,*y);*x=3;*y=4;}
main( )
{ int x=1, y=2;
fun(&y, &x);
printf("%d %d", x, y);
}
应该选择C
fun(&y, &x);把y的地址传递给x,把x的地址传递给y,即运行到printf("%d %d",*x,*y);时x=2,y=1;
然后*x=3;*y=4;给x,y赋值,但是x,y在网下传时,想,y的值是交换了的(即fun(&y, &x);把y的地址传递给x,把x的地址传递给y),所以运行到x=3;*y=4;时其实主函数中的x=4,y=3的,所以,printf("%d %d", x, y);执行的结果是x=4,y=3,所以选c追问

小菜鸟 自学的 为什么还会有 4,3输出啊

追答

首先程序入口是:main( )函数,然后声明了变量x=1, y=2; 下一步fun(&y, &x);程序就会跳转到fun这个函数中去,fun函数中y的地址传递给x,把x的地址传递给y,此时 x=2,y=1; 所以fun函数中输出2,1.然后*x=3;*y=4;给x,y赋值,但是fun(&y, &x);是把y的地址传递给x,把x的地址传递给y),所以运行到x=3;*y=4;时其实主函数main中的x=4,y=3的,然后回到main函数中,输出的就是4,3。
好好研究一下fun函数。
void fun( int *x, int *y)
{
printf("%d %d",*x,*y);
*x=3;
*y=4;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2022-04-21
v考查的是参数传递,及指针应用。
fun(&y,&x); 参数为地址传送,void fun(int *x,int *y)接收的是(x=&y,y=&x) 输出是y x也就是2 1
将地址赋的值更改为*x=3,*y=4;相当于主函数的y=3,x=4.
返回主函数输出的是4 3
故最后输出结假果:2143 答案是A

...void fun( int *x, int *y) { printf("%d %d",*x,*y);*...
下列程序段的输出结果是:( ).void fun( int *x, int *y){ printf("%d %d",*x,*y);*x=3;*y=4;} main( ){ int x=1, y=2;fun(&y, &x);printf("%d %d", x, y);} 应该选择C fun(&y, &x);把y的地址传递给x,把x的地址传递给y,即运行到printf("%d %d",*x,...

void fun(int *x,int *y) {printf("%d%d", *x=3,*y=4;}
fun(&y,&x); 参数为地址传送,void fun(int *x,int *y)接收的是(x=&y,y=&x) 输出是y x也就是2 1 将地址赋的值更改为*x=3,*y=4;相当于主函数的y=3,x=4.返回主函数输出的是4 3 故最后输出结假果:2143 答案是A

{ printf("%d %d", *x, *y); *x=3; *y=4;}
void fun(int *x, int *y) \/\/调用时是fun(&y,&x),先出入y,后传入x的 { printf("%d %d", *x, *y); *x=3; *y=4;} \/\/*x指向main中的y的地址,*y指向main中的x的地址 所以最后输出2 14 3

2020年计算机二级MySQL考试每日一练(6月28日)
答案:B 4.有以下程序段:int x=3;do {printf("%d",x-=2);)while(!(--x));其输出结果是( )。A.1 B.3 0 C.1 -2 D.死循环 答案:C 5.下列程序的输出结果是( )。void fun(int*X,int y){ printf("%d%d",*x,*y);*x=3;*y=1;} main(){ int x=1,y=2;fun(&...

以下程序段的输出结果是 #include <stdio.h> int fun(int x,int y){...
以下程序段的输出结果是 :8

C语言 以下程序的运行结果为( ) void fun(int n) { if(n) fun(n-1...
先递归,再打印,当n为0的时候结束打印,但0还是会执行后续的输出 于是是从0打印到5 选c

void fun(int x,int y) {x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y...
结果为:3,2,2,3 void fun(int x,int y)\/\/ 由于这里传入参数不是指针,引用,所以这里x,y只是main函数中x,y值的一个拷贝,所以修改后不会对main中x,y的值有影响。{x=x+y;y=x-y;x=x-y;printf("%d,%d,",x,y);} \/\/ 这里输出:3,2,main(){ int x=2,y=3;fun(x,y);...

{ printf("%d %d", *x, *y); *x=3; *y=4;}
函数fun()的参数传递方式是传递存储单元的地址,因此在fun()函数中,是x->B,y->A,则*x=(B)=2,*y=(A)=1,当运行到*x=3;*y=4时,实际上是令(B)=3,(A)=4。回到main()后,由于主程序中仍然是x->A,y->B的关系,所以此时x=4,y=3 这个问题主要是理解变量的作用域和指针...

以下程序的输出结果是【 】。 void fun(int *a, int *b) { int *k...
结果没变还是3 6 x y分别是指向a b的指针,fun函数只是交换了x y指向指向的地址,不影响a b的值

void fun(int *n) { while((*n)--); printf("%d",++(*n));} void ma...
下列程序的输出结果是__0___原因如下:在main函数中,将&a伪作参数传递给fun(int *n) ,所以指针n指向了a的地址,*n的值即为a的值,也就是100 在fun函数中,while((*n)--);注意,这个while语句后面有一个;分号,所以这一个while循环的作用是:将*n的值循环递减,直到(*n)--的值为0。...

相似回答