立志用更少的代码做更高效的表达


PAT乙级最优题解——>传送门


科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

输入格式:
每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。

输出格式:
对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

输入样例 1:
+1.23400E-03
输出样例 1:
0.00123400

输入样例 2:
-1.2E+10
输出样例 2:
-12000000000


思路分析

大体思路:
  1. 如果指数为负数, 则先添加0, 同时在第一个0后面添加小数点。
  2. 如果指数为正数,则判断指数是否小于系数长度。
    1. 如果小于,则在对应位置添加小数点。
    2. 如果大于,则添加指数-系数长度个0。
几点注意事项

1、输入时, 使用了[^E]标识符, 它的意思和%s一致,不过不是遇到空格或回车结束,而是遇到E字符结束。

2、对于模拟题,一定要先想好思路, 缕清脉络再敲, 否则会越敲越乱。一般来说,我喜欢话树形图来表示分支和操作。

3、对于模拟题,尽量使用string或char*来进行存储, 使用整型变量存储很可能漏掉前导零。 如: +3.00001E-3这组数据。


代码展示

#include<bits/stdc++.h>
using namespace std;
int main() {char cc[10000]; long long x2;   char c1, c2, c3;scanf("%c%c.%[^E]E%c%lld", &c1, &c3, cc, &c2, &x2);string s;   if(c2 == '-') {for(int i = 0; i < x2; i++) { if(i==1) s += '.';s += '0';}s += c3;s += cc;} else {s+= c3;s+= cc;if(s.length() < x2) {int len = s.length(); for(int i = 0; i < x2-len+1; i++) s+='0'; } else if(s.length() > x2+1){s.insert(x2+1, ".");}}if(c1=='-') s.insert(0,"-");cout << s;
return 0; }

测试点错的来:1024 科学计数法 (20分)相关推荐

  1. PAT 1024 科学计数法 (20分) C语言实现

    1024 科学计数法 (20分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部 ...

  2. C++学习之路 | PTA乙级—— 1024 科学计数法 (20 分)(精简)

    1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数 ...

  3. 【PAT (Basic Level) 】1024 科学计数法 (20 分)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部 ...

  4. 1024 科学计数法 (20 分)(c语言)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  5. 1024 科学计数法 (20分) c/c++代码中有详细解释

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部 ...

  6. PAT乙级 1024 科学计数法 (20 分)

    题目内容 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该 ...

  7. 【PAT乙级】1024 科学计数法 (20 分)

    题目地址 上面的精简写法: #include<cstdio> #include<iostream> #include<string> #include<alg ...

  8. 1024 科学计数法 (20)(20 分)

    1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...

  9. 1024. 科学计数法 (20)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...

最新文章

  1. wget下载https时遇到not trusted下载不了的解决办法
  2. Ubuntu Core 给物联网提供更多安全支持
  3. linux下kegg注释软件,KEGG功能注释工具 KofamKOALA 安装与使用
  4. 单调队列优化的背包问题
  5. 摩根溪创始人:特斯拉资产负债表有8%是比特币
  6. Vue.js学习笔记(一) - 起步
  7. 太牛逼了!自从项目中用了Disruptor之后,性能提升了2.5倍
  8. JavaScript开发心得--如何传递某行数据给下一页
  9. 取消参考文献自动编号_毕业论文给尾注加[ ]及删除自动编号
  10. 手机端酒店机票预订页面HTMLcss3+html5模板
  11. 面试题:查询字符串中出现次数最多的字符以及出现次数
  12. 有没有英语语音测试软件,推荐我用过的几款真正可以找外国人练口语的软件app...
  13. 微博红包技术探究:架构、防刷、监控和资源调度
  14. 【python数据分析】足球运动员的特征分析
  15. @Valid 注解详解 Java Bean Validation的前世今生
  16. oracle数据库中spool的作用,Oracle中Spool命令如何使用 Oracle中Spool命令使用方法
  17. Android 8.1 Audio框架(二)AudioPolicy路由策略实例分析
  18. Python二期学习开篇语
  19. Source Insight 4.0安装教程(附上安装包及破解文件)
  20. Zprotect patch KEY 脱壳

热门文章

  1. maven打包的各种方式和如何在使用maven-assembly-plugin打包时去掉assembly id
  2. 为什么 Go 模块在下游服务抖动恢复后,CPU 占用无法恢复
  3. 音视频技术在云会议场景的拓展和未来
  4. 感谢有你 WebRTCon 2018优秀出品人、讲师与志愿者
  5. FFmpeg 硬件加速方案概览 (上)
  6. 基于AVS2的图片容器——TPG:现状与改进之路
  7. 学习方法之02掌握记忆方法,在学习上就赢了一半
  8. 升级 Vue3 大幅提升开发运行效率
  9. 打通前后端,这款效能提升开源“神器”你一定要了解
  10. 【Go API 开发实战 5】基础1:启动一个最简单的 RESTful API 服务器