选择题
18. 若有以下程序:
#include<stdio.h>
void fun(float*a,float*b)
{ float w;
*a=*a+*a;w=*a;*a=*b;*b=w;
}
main()
{ float x=2.0,y=3.0,*px=&x,*py=&y;
fun(px,py);printf("%2.0f,%2.0f\n",x,y);
}
程序的运行结果是______。
【正确答案】
C
【答案解析】
#include<stdio.h>
void fun(float*a,float*b) //a即指向px的指针,b即指向py的指针,则*a指向x,*b指向y
{
float w;
*a=*a+*a; //将x地址存放的数据自加,x变为4
w=*a;
*a=*b;
*b=w; //将x和y地址里面的数据互换,则x变为3,y变为4
}
main()
{
float x=2.0,y=3.0,*px=&x,*py=&y; //px和py分别是指向x和y地址的指针
fun(px,py);
printf("%2.0f,%2.0f\n",x,y); //%2.0f表示结果前面有2个空格,小数点后有0位,即保留到个位