选择题 30.  若有以下程序:
    #include<stdio.h>
    void sub(double x,double*y,double*z){*Y=*y-1.0; *z=*z+x;}
    main()
    {double a=2.5,b=9.0,*pa,*pb;
    pa=&a; pb=&b;
    sub(b-a,pa,pa); printf("%f\n",a);
    }
    程序运行后的输出结果是______。
【正确答案】 C
【答案解析】 从函数参数来看,x=b-a=6.5;y=z是指向a的指针pa,也就是说*y=*z=2.5;由于指针作为参数,可以将函数中计算得到的对指针引用的*y,*x作为最后计算得到的a的值,从函数语句看,类似作这样的运算,a=a-1.0;a=a+x。这里x=6.5,于是计算得到a=8;由于输出格式为浮点型,输出结果为8.0000000。因此,正确答案为C。