对一个字符串内整数数值求和 (10 分)
输入一个字符串,求出字符串内包含的整数数值的和。
输入格式:
输入在一行内不超过80个字符的字符串。
输出格式:
对输入的字符串,输出包含的整数数值的和。
输入样例:
a0120,x;y1.2
输出样例:
123
代码展示:
#include<stdio.h>
#include<string.h>//为了使用strlen来决定循环次数(其实可以遍历数组,但为了效率而使用strlen)
int main()
{
int sum = 0, x = 0;
char a[81];//保证数组至少有一个位置给'\0'
gets(a);
for (int i = 0; i<=strlen(a); i++)//这里的循环条件是重点,保证字符串最后的'\0'进入循环体
{
if (a[i] >= '0' && a[i] <= '9')
{
x = x * 10 + (a[i] - '0');
continue;//直接进入下一轮循环
}
sum += x;//当当前字符不是数字字符时,将其前面的数字(即x)取出加进sum里
x = 0;//归零,保证下一次取数字的正确
}
printf("%d", sum);
return 0;
}
在vs上似乎要将gets改成gets_s才能运行
其实一开始我准备用flag来判断并解决字符串以数字结尾的问题,但后来发现字符串都以'\0'结尾的话就不需要那么麻烦了(所以注释一直在强调'\0')
PS:本人水平不足,第一次尝试写博客,若有瑕疵还请大佬们见谅啦