以下程序的输出结果是( )。 define PR(ar)printf("ar=%d”,ar) main() {int j,a[]={1,8,3,7,6,13,1

13 查阅

以下程序的输出结果是( )。 define PR(ar)printf("ar=%d”,ar) main() {int j,a[]={1,8,3,7,6,13,17,15},*p=a+5; for(j=3;j;j--) switch(j) {case 1: case 2:PR(*p++);break; case 3:PR(*(--p)); } }

参考答案:

ar=6 ar=6 ar=13ar=6 ar=6 ar=13 解析:通过*p=a+5将指针P指向a[5],第1次循环,i=3时,switch(3),执行case 3,*(-p)-a[4]=6,所以输出ar=6;第2次循环,j=2时,switch(2),执行case 2,(*p++)是先引用a[4]的值6,输出ar=6,再将指针P移位指向a[5];第3次循环,j=1时,switch(1),执行case 1,case 1后没有break语句,接着执行case 2,(*p++)是先引用a[5]的值13,输出

计算机二级