问题 单项选择题

有以下程序

void swap1(int c0[], int c1[])

int t;

 t=c0[0]; c0[0]=c1[0]; c1[0]=t;void swap2(int *c0, int *c1)

int t;

 t=*c0; *c0=*c1; *c1=t;main()

int a[2]=3,5, b[2]=3,5;

 swap1(a, a+1); swap2(&b[0], &b[1]);

 printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);程序运行后的输出结果是()

A.3 5 5 3

B.5 3 3 5

C.3 5 3 5

D.5 3 5 3

答案

参考答案:D

解析:

[评析]函数swap1、swap2的作用均为交换两个数。主调函数“swap1(a,a+1)”使得数组a的首地址赋给形参c0[],使得 c0指向a[0]所在的存储单元,a[1]的地址赋给形参c1[],使得c1指向a[1]所在的存储单元,故交换c0[0]与c1[0]后,a[0]与a[1]值也发生了变化;主调函数“swap2(&b[0],&br[1]);”起着同样的作用,使得指针变量c0指向了b0)存储单元,c1指向了b[1]存储单元,并在swap2函数中发生了交换,所以b[0]、b[1]的值也发生变化,故本程序输出的结果是5353。

选择题
单项选择题 B1型题