有以下程序  #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(c

admin2022-10-24  35

问题 有以下程序
 #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)调用后输出t1、t2为BB。f2(a,b)为值传递,传入的只是a、b的值,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a、b值的交换,则f3(&t1,&t2)调用后输出t1、t2为BA。因此结果为BAABBB。故本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/SDkp777K
0

最新回复(0)