#include <stdio.h>
#include <string.h>
int main()
{
int i,sum=0,len;
char str[100];
gets(str);
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]>='0'&&str[i]<='9')
{
sum=sum+str[i]-'0';
}
}
printf("%d\n",sum);
return 0;
}
<=9 ,表示包含9在内,如果< 9 ,9就排除在外了。
字符 ’0‘ 和数字 0 在计算机内不同的ascii值,str[i]-'0'就是将相应的数字字符转换为数字。
'0'与0差0x30,'0'即16进制即0x30;
'0' ~ '9'即0x30~0x39,
0 = '0' - '0';
1 = '1' - '0';
str[i]>='0' && str[i]<='9'表示这个字符是一个数字字符,'0'在ASCII码中的值是48,所以,如果要得到0这个数,就需要减去'0'(也就是减去48),'1'-'0'=49-48 = 1,这样得到这个字符所对应的实际的数。
如有帮助,请采纳一下,谢谢。