题目要求
下面程序的运行结果为 。
#include <stdio.h>
main()
{
char ch[7]={"65ab21"};
int i,s =0;
for(i=0;ch[i]>=0&&ch[i]<9;i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
思路分析
这个题还是蛮有代表性的,基础不好就难做了,底子好的人一眼就看出来了里面的猫腻,看这个for循环
突破点在于ch[i]>='0'&&ch[i]<'9';观察数组ch[7],它里面的元素为什么不是"654321",而是"65ab21",就明显暗示了,到ch[2]=a的时候退出不满足for循环条件退出了for循环
运行代码,进入到for循环,执行 s = 10*s + ch[0]-'0' = 10* 0+ 6 -'0' ,所以s=6,然后i+2=2,ch[2]=a,不满足for循环,退出for循环,然后打印s,s=6
验证结果
题目直接把代码都给了,验证结果就行了 s=6