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

admin2020-07-28  23

问题 有以下程序
#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()
{   char  t1, t2;
    t1 = ’A’; t2 = ’B’; f3( &t1,&t2 ); putchar(t1); putchar(t2);
    t1 = ’A’; t2 = ’B’; f2(  t1, t2 ); putchar(t1); putchar(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/XU3p777K
0

最新回复(0)