一道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();
}
我承认我的这个太啰嗦,望高手指点指点,帮忙改正,谢了!~! 展开
例如:英文字符串 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();
}
我承认我的这个太啰嗦,望高手指点指点,帮忙改正,谢了!~! 展开
2个回答
展开全部
#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();
}
调试过了,没问题!
#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
建议改成数组存储数字 然后再输出
你的程序里 是逐个数字相加 不是数值相加
25 125 你的结果应该是15而不是150
建议改成数组存储数字 然后再输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询