题目:编写一个函数,求一字符串中出现的所有整数的和。
例如:字符串"247>>>9dajk00+lew45#" 结果为301=247+9+00+45
其实这题挺简单的,但当时我有点紧张,而且我最不喜欢当着别人面写程序,一点写程序的感觉都没有。我看到题目就动手写了,没仔细思考,结果被狠狠地BS了一下。
尽管心理有些不爽,但之后还是经过思考自己又完成了。代码贴于此,一来纪念这次经历,二来供大家交流学习。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int pow10(int x) //计算10的x次幂
{
if(x == 0) return 1;
int r = 1;
for(int i = 0; i < x; ++i) r *= 10;
return r;
}
int calc(char* str)
{
int sum = 0;
int index = -1;
for(int i = strlen(str) - 1; i >= 0; --i)
{
if(isdigit(str[i]))
sum += (str[i] - '0') * pow10(++index);
else
index = -1;
}
return sum;
}
int main(int argc, char *argv[])
{
printf("%d/n", calc("247>>>9dajk00+lew45#")); //247+9+00+45=301
return 0;
}