问题 单项选择题

以下程序的输出结果是( )。 #include<stdio.h> void prt(int *x,int *y,int *z) {printf("%d,%d,%d\n",++*x,++*y,*(z++));} main() {inta=10,b=40,c=20; prt(&a,&b,&c); prt(&a,&b,&c);}

A.11,42,31 12,22,41

B.11,41,20 1,42,20

C.11,21,40 11,21,21

D.11,41,21 12,42,22

答案

参考答案:B

解析: 本题考查的是函数参数的传递及自加运算符。主函数中第一次调用函数prt(&a,&b,&c);,此函数中的输出语句printf("%d,%d,%d\n”,++*x,++*y,*(z++));使得a和b的值均加1。而*(z++)由于先执行z++所以c的值不变;第二次调用函数prt(&a,&b,&c);使得a和b在上一次的基础上再各自加1(因为形参和实参进行的是地址传递),而c的值仍不变。

单项选择题
判断题