大家帮帮我想想这个二级(c)的题目,谢谢了!

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:37:24
main()

{char *p[]={"BOOL","OPK","H","SP"};

int i;

for(i=3;i>=0;i--,i--) printf("%c",*p[i]);

printf("\n");

getch();

}
输出的结果是SO,不知道是如何得来的,请告诉我详细的步骤,谢谢大家了

这个很简单啊,主要就是要理解for循环中的"i--,i--",这是一条由逗号运算符连接的语句,与其等价的语句为i-=2或i=i-2;
其次要理解*p[i]的含义,*p[i]表示的是p[i]指针指向的字符串的第一个字符,其等价语句为p[i][0];
所以上面的语句等价为
main()
{
char *p[]={"BOOL","OPK","H","SP"};
int i;
for(i=3;i>=0;i-=2) printf("%c",p[i][0]);
printf("\n");
getchar();
}
程序执行过程为先执行i=3,判断i>=0是否成立,成立输出p[3][0],即S
再将i减去2得到i=1,判断i>=0是否成立,成立输出p[1][0],即O
再将i减去2得到i=-1,i>=0不成立,结束循环
所以最后的输出就是SO