题目要求

下面程序的运行结果为             

#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

编程小白C语言练习24

相关文章: