输入一个字符串,求出字符串内包含的整数数值的和。
输入格式:
输入在一行内不超过80个字符的字符串。
输出格式:
对输入的字符串,输出包含的整数数值的和。
输入样例:
a0120,x;y1.2
输出样例:
123
二话不说上代码
#include<stdio.h>
int main()
{
char str[1000];
int i,j,flag=0,sum=0,ans=0;
for(i=0; (str[i]=getchar())!='\n'; i++);
str[i]='\0';
for(j=0; j<i; j++)
{
if((str[j]<='9')&&(str[j]>='0'))
{
if(flag==1)
sum=sum*10+str[j]-'0';
if(flag==0)
sum=sum+str[j]-'0';
flag=1;//当前一个是数字的时候,flag变为1
}
else
{
flag=0;
ans=ans+sum;//将每一组数字都取出
sum=0;
}
if(j==i-1)//调试发现最后一组没有加进去,赶紧补上
ans=ans+sum;
}
printf("%d",ans);
return 0;
}
第一遍写的时候忘记将每组数字取出了(else那边出错了),纠结了好久,唉,还是逻辑不够严谨啊!!!
利用flag来解决连续性问题,感觉自己发现了新大陆,不知道有没有更好的解法解决这一类问题,欢迎各位大佬指导,对于新手来说易理解的就好