下列程序输出的结果是( )。 #include<stdio.h> fun1(char a,char B.{char c;c=a;a=b;b。c;} fun2(char*a,char B.{char c;c=*a;*a=b;b=

admin2020-04-07  35

问题 下列程序输出的结果是(    )。
    #include<stdio.h>
    fun1(char a,char B.{char c;c=a;a=b;b。c;}
    fun2(char*a,char B.{char c;c=*a;*a=b;b=c;}
    fun3(char*a,char*B.{char c;c=(*a;*a=*b;*b=c;}
    void main()
    {char a,b;
    a=’A’;b=’B’;fun1(a,B.;putchar(A.;putchar(B.;
    a=’A’;b=’B’;fun2(&a,B.;putchar(A.;putchar(B.;
    a=’A’;b=’B’;fun3(&a,&B.;putchar(A.;putchar(B.;
    putchar(’\n’);
    }

选项 A、BABBAB
B、ABBBBA
C、ABBABA
D、ABABBA

答案B

解析 由程序中的主函数main入手,分别调用fun1,fun2,fun3函数,得到输出结果。其中,三个函数都是实现两个形参的交换功能,只是参数传递的方式不同,有的是地址,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以调用fun1后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,即传递的是地址,所以形参a的改变会影响实参a的值,即BB。同理,调用fun3后为BA。
转载请注明原文地址:https://jikaoti.com/ti/czA0FFFM
0

最新回复(0)