黑马程序员技术交流社区

标题: 下面的函数怎么分析,求解答 [打印本页]

作者: shenxian88    时间: 2015-5-1 12:11
标题: 下面的函数怎么分析,求解答
int main()
{
    char  ch[7]={ "6a72b"};
    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);
   return 0;
}

作者: 许庭洲    时间: 2015-5-4 11:04
char  ch[7]={ "6a72b"};// 定义字符数组,数组前五个元素是'6','a','7','2','b'  第六个元素是'\0', 最后一个元素是空字符
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);
return 0;

作者: HHE_johnson    时间: 2015-5-4 11:57
该函数的功能是将字符串的偶数位数字找出来,然后组合到一起成为一个新的数字。
作者: 凌乱    时间: 2015-5-4 12:00
s=10*s+ch[i]- '0';   这一句是什么意思呢?
作者: HHE_johnson    时间: 2015-5-4 12:39
凌乱 发表于 2015-5-4 12:00
s=10*s+ch- '0';   这一句是什么意思呢?

转成十进制的数字。在for循环中,当i==0时,ch[0]='6',然后s=(10*s+ch)- '0'=6-'0';讲字符串中字符转成数字格式。同理,下一次循环变为s=(10*6+ch-'0') ;这句就是讲字符串的数符转成一个整形数字。
作者: wx_BZhrvVik    时间: 2015-5-4 18:40

int main()
{
    char  ch[7]={ "6a72b"};//定义一个有7个字符的数字,前5个为6a72b
    int  i,s=0;
    for(i=0;ch[i]>= '0'&&ch[i]<= '9';i+=2)//判断条件为:'0'<=ch[i]<'9',每次循环以每次以偶数递增
        s=10*s+ch[i]- '0';//将字符型转为整型数字
    printf("%d\n",s);//打印
   return 0;
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2