字符串处理
发布日期:2021-07-01 00:13:05 浏览次数:3 分类:技术文章

本文共 1750 字,大约阅读时间需要 5 分钟。

字符串处理

时间限制: 1 Sec  内存限制: 32 MB

题目描述

读入两个字符串,字符串除了数字还可能包括 '—'、'E'、'e'、'.',相加之后输出结果,如果是浮点型,要求用科学计数法表示(最多包含10个有效数字)。

输入

输入包含多组测试数据。

每组输入占两行,每行一个字符串,测试数据保证字符串的构成严格按照题目中的描述。

输出

输出两个数字相加的结果,每组输出占一行。

样例输入

34.562.45e2

样例输出

2.7956e2
#include
int main(){ char str1[50],str2[50]; long long s,s1,s2,ans; int i,a1,a2,a,b,c,w,flag; while(scanf("%s %s",str1,str2)!=EOF){ s1=s2=flag=b=c=a1=0; for(i=0;str1[i];i++){ if(str1[i]=='-') flag=1; else if(str1[i]=='.') c=1; else if(str1[i]=='e'||str1[i]=='E'){ sscanf(str1+i+1,"%d",&b); a1+=b; break; } else{ s1=s1*10+str1[i]-'0'; a1-=c; } } if(flag) s1=-s1; flag=b=c=a2=0; for(i=0;str2[i];i++){ if(str2[i]=='-') flag=1; else if(str2[i]=='.') c=1; else if(str2[i]=='e'||str2[i]=='E'){ sscanf(str2+i+1,"%d",&b); a2+=b; break; } else{ s2=s2*10+str2[i]-'0'; a2-=c; } } if(flag) s2=-s2; if(a1
a2) for(;a1>a2;a1--) s1*=10; a=a1;s=s1+s2; if(!s){ printf("0\n"); continue; } while(a<0&&s%10==0){ s/=10; a++; } if(a>=0){ printf("%lld",s); for(i=0;i
1){ ans/=10; w--; } if(flag) printf("-"); printf("%lld",s/ans); if(ans>1) printf(".%lld",s%ans); printf("e%d\n",a+w); } return 0;}

转载地址:https://lzyws739307453.blog.csdn.net/article/details/79616818 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:数的读法
下一篇:进制转换2

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月19日 09时43分32秒