下面程序运行结果是( )

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:36:36
#include<stdio.h>
main()
{ char ch[7]={"12ab56"};
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);
}

要详细说明

i=0,ch[i]='1',进入循环,s=1
i=2,ch[i]='a',不满足循环条件,s仍然等于1

char ch[7]={"12ab56"}; 意思是把12ab56七个字符分别赋值到数组ch[0],ch[1]....ch[6]中。
for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2) 意思是从i=0开始,如果ch[i]大于等于字符‘0’且小于字符‘9’(可以由ASCII码将字符转换为十进制数来计算)那么i=i+2,否者终止循环。字符‘0’ASCII码为48,字符‘9’ASCII码为57;
ch[0]=字符'1'ASCII码为49,所以ch[0]满足大于等于字符‘0’且小于字符‘9’,执行s=10*s+ch[0]-'0'=10*0+49-48=1(全部转化为十进制运算);
i=i+2=2;
ch[2]=字符‘a’ASCII码为97不满足条件,循环结束执行printf("%d\n",s); ,%d表示输出的为十进制整形数字,s=1,所以运行结果为1