读入两个字符串,字符串除了数字还可能包括 '—'、'E'、'e'、'.',相加之后输出结果,如果是浮点型,要求用科学计数法表示(最多包含10个有效数字)。
字符串处理
发布日期:2021-07-01 00:13:05
浏览次数:3
分类:技术文章
本文共 1750 字,大约阅读时间需要 5 分钟。
字符串处理
时间限制: 1 Sec 内存限制: 32 MB题目描述
输入
输入包含多组测试数据。每组输入占两行,每行一个字符串,测试数据保证字符串的构成严格按照题目中的描述。
输出
输出两个数字相加的结果,每组输出占一行。
样例输入
34.562.45e2
样例输出
2.7956e2
#includeint 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月19日 09时43分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基础架构系列篇-系统centos7安装kafka
2019-04-30
软件质量的8个特性
2019-04-30
2021年不可错过的17种JS优化技巧(一)
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
MySQL进阶查询(SELECT 语句高级用法)
2019-04-30
Mysql 之主从复制
2019-04-30
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
行阶梯型矩阵
2019-04-30
MATLAB指定路径保存图片方法
2019-04-30
JAVA学习笔记6 - 数组
2019-04-30
【学习笔记】Android Activity
2019-04-30
location区段
2019-04-30
nginx访问控制、基于用户认证、https配置
2019-04-30
linux内存的寻址方式
2019-04-30
how2heap-double free
2019-04-30
how2heap-fastbin_dup_consolidate
2019-04-30
tf keras SimpleRNN源码解析
2019-04-30