解释一下数组题,谢了

求详细解答图片

char是字符;
char ch【7】 = {"678abc321"} //字符数组,长度为7即ch【0】~ch[1].......ch【6】共七个ch字符对应双引号里面的字段
for循环是个遍历,当符合条件(ch[i]>0&&ch[i]<9)时遍历,不符合条件时结束遍历,输出sum

由于方法只有一条数据,方法体省略,即循环内方法体只有sum=10*sum+ch[i] - '0';

i=i+2;
即要遍历的有ch[0]=6,ch[2]=8,ch[4]=b,ch[6]=3
当遍历到ch[4]时不符合添加结束循环
即参加遍历的只有6和8
sum=10*0+6-0=6;
sum=10*6+8-0=68

先看循环里面的,循环体为
sum = 10*sum+ch[i]-'0';

 注意这不是数字,是字符,所以计算规则是转化为ascll 码,先说明一下 0的ascll 是30 , 9的ascll 是39,
 字母的ascll大于数字的,具体多少百度一下ascll表就知道了

 第二点注意一下后面i+=2;不是i++;
 所以第一个进入循环的是6 ,6的ascll 为36 - '0'(30) 得到6 ,sum = 0*10+6;
 第二个进入循环的是8 ,8的ascll为38 -'0'(30)得到8,sum=6*10+8; 68;
 第三个是b 不符合循环条件,跳出循环.

一行代码一个注释,请对照着看。

1.定义一个长度为7的数组,病赋初值;

2.定义循环变量,和sum值,并sum赋初值为0;

3.执行for循环,循环变量i=0;循环结束条件为ch[i]非数字型字符【即当ch[i]>='0'&&chp[i]<='9'时,进入下一循环,否则跳出循环】;循环变量叠加的步长为2;

4.第一轮循环,当i=0时,ch[i]='6',sum=10*0+'6'-'0'=0+('6'-'0')=0+6=6;i+=2时,i=2。
第二轮循环,当i=2时,ch[2]='8'.sum=10*6+'8'-'0'=60+('8'-'0')=68;i+=2,i=5。
第三轮循环,当i=4时,ch[4]='b',ch[4]满足循环结束条件,循环结束。故,sum=58。

5.打印sum的值,68。

这道题只要知道了解字符的ASCLL码,应该不存在问题,其实就是字符数组的遍历,自己运行一遍就可以了