一道c语言题,求高手指点迷津……

将一个英文字符串(串长<80)中所有的十进制数找出来,计算它们的和并输出。例如:英文字符串apple25,pear125中共有两个十进制数25和125,所以输出结果为15... 将一个英文字符串(串长<80)中所有的十进制数找出来,计算它们的和并输出。
例如:英文字符串 apple 25,pear 125中共有两个十进制数25和125,所以输出结果为150
c code:
#include<stdio.h>
#include<string.h>
#include<math.h>
main()
{
char a[80];
int sum=0,i=0,k=0,temp=0,t=0,g=0,p=0,w=0;
gets(a);
memset(a,'\0',sizeof(a));
w=strlen(a);
while(!a[i]=='\0')
{
if('0'>=a[i] && a[i]<='9')
{
t=i;
for(p=1;p<=w-i;p++)
{
if('0'>=a[i] && a[i]<='9')
{
k++;
i++;
}
}
for(g=1;g<=k-1;g++)
{
temp+=(a[t]-'0')*0.1*pow(10,k);
temp+=(a[t+1]-'0')*0.1*pow(10,k-1);
}
}
sum+=temp;
t=0;
temp=0;
k=0;
i++;

}
printf("%d",sum);
getch();
}

我承认我的这个太啰嗦,望高手指点指点,帮忙改正,谢了!~!
展开
 我来答
百度网友d6957ec
2012-01-08 · TA获得超过825个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:104万
展开全部
#include<stdio.h>
#include<string.h>
#include<math.h>
main()
{
char a[80];
int sum=0,i=0,k=0,w=0;
gets(a);
w=strlen(a);
a[w]=' '; //如果字符串以数字结尾,不添个非'\0'字符,会跳过while
a[w+1]='\0';
while(a[i]!='\0')
{
if(a[i]>='0'&&a[i]<='9') //这里if else就自己理解吧
k=k*10+((int)a[i]-48);
else
{
sum=sum+k;
k=0;
}
i++;
}
printf("%d",sum);
getch();
}
调试过了,没问题!
匿名用户
2012-01-08
展开全部
看样很急 发了三个帖子
你的程序里 是逐个数字相加 不是数值相加
25 125 你的结果应该是15而不是150
建议改成数组存储数字 然后再输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式