有以下程序  #include <stdio.h>  void f1(char *a,char b){char c;c=*a;*a=b;b=c;}  void f2(char a,char b){char c;c=a;a=b;b=c;}  void f3(

admin2022-04-01  27

问题 有以下程序
 #include <stdio.h>
 void f1(char *a,char b){char c;c=*a;*a=b;b=c;}
 void f2(char a,char b){char c;c=a;a=b;b=c;}
 void f3(char *a,char *b){char c;c=*a;*a=*b;*b=c;}
 main()
 {chat t1,t2;
    t1=’A’;t2=’B’;f3(&t1,&t2);putchar(t1);putchar(t2);
    t1=’A’;t2=’B’;f2(t1,t2);putchar(t1);putehar(t2);
    t1=’A’;t2=’B’;f1(&t1,t2);putchar(t1);putchar(t2);
    printf("\n");
 }
 程序运行后的输出结果是(          )。

选项 A、ABBABB
B、BAABBB
C、BABABA
D、BABAAB

答案B

解析 函数f1(*a,b),*a地址传递,b值传递,将b值传给*a,则f1(&t1,t2)调用后输出tl、t2为BB。f2(a,b)值传递,传入的只是a,b的拷贝,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a,b值的交换,则f3(&tl,&t2)调用后输出tl、t2为BA。因此结果为BAABBB。故答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/16kp777K
0

最新回复(0)