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

admin2022-06-24  15

问题 有以下程序:
#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(&tl,&t2);put-char(t1);putchar(t2);
t1='A':t2='B';f2(t1,t2);putchar(t1);putchar(t2);
T1='A';t2='B';fl(&t1,t2);put-char(t1);putchar(t2);
printf("\n");
}
程序运行后的输出结果是(          )。

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

答案B

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

最新回复(0)