请各位高手帮忙解答,要过程,本人新手main()

来源:百度知道 编辑:UC知道 时间:2024/06/03 16:37:46
试题题面:以下程序的输出结果是___
#include <stdio.h>
main()
{ int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
{ switch(j)
{ case 1:
case 2: printf("%d",*p++); break;
case 3: printf("%d",*(--p));
}
}
}

定义三个int类型,一个数,一个数组,一个指针,其中指针p初始化是指向数组a中的11这个元素,
for循环三次,
j=3时,运行case 3: printf("%d",*(--p));
--p是先自减,使得p指向11前一个数9,则输出9
j=2时,运行case 2: printf("%d",*p++); break;
++在后面,则先输出指针指向的9,再使指针指向9的后一个数11
j=1时,运行case 1: 为空,跳过,运行case 2
同理,输出指针指向的11后,p指针自加,指向11的后一个数13
break,j=0,for循环终止,程序终止。
综上所述,输出:9911