题目描述

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

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

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

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

输入例子:
+1.23400E-03

输出例子:
0.00123400

代码 C++

输出部分在39~末尾,是整个算法的核心。
对E后面的指数进行判断,分为大于0,等于0,小于0的情况。
整个输入和输出过程,算法并不优雅,可以算得上是暴力分类讨论,把整个字符串拆开揉碎之后接收,再一点一点地输出到一行。

#include<iostream>
#include<iostream>
#include<vector>
int main()
{//输入并输出符号char symbol;std::cin >> symbol;if (symbol == '-'){std::cout << "-";}//输入小数点前面一位int beforeDecimal;std::cin >> beforeDecimal;std::vector <int> num;num.push_back(beforeDecimal);//输入小数点后面,E之前的所有位  char型char afterDecimal;int INTafterDecimal;while (std::cin >> afterDecimal){if (afterDecimal >= '0'&&afterDecimal <= '9'){INTafterDecimal = afterDecimal - 48;//字符型转化为int型num.push_back(INTafterDecimal);}else if (afterDecimal == 'E'){break;}}//输入E后面的符号int numAfterE;std::cin >> numAfterE;//输出std::vector<int>::iterator iter = num.begin();int i;int decimalLocate;int printCount = 0;if (numAfterE < 0)//如果乘方小于0{std::cout << "0.";for (i = -numAfterE - 1; i > 0; i--){std::cout << "0";}while (iter != num.end()){std::cout << *iter;iter++;}}else if (numAfterE == 0)//如果乘方等于0{decimalLocate = 1;while (iter != num.end()){std::cout << *iter;iter++;printCount++;if (printCount == decimalLocate){std::cout << ".";}}}else if (numAfterE > 0)//如果乘方大于0{decimalLocate = numAfterE + 1;while (iter != num.end()){std::cout << *iter;iter++;printCount++;if (printCount == decimalLocate){std::cout << ".";}}int t;for (t = numAfterE - printCount; t >= 0; t--){std::cout << "0";}}system("pause");
}

牛客网_PAT乙级1014_科学计数法 (20)相关推荐

  1. 牛客网_PAT乙级_1023旧键盘打字(20)【别人代码里用到的hash是啥】

    心得 关于如何找到个别测试点通不过的原因: 复制别人的正确的代码,和自己的代码运行相同的测试用例,比较两者之间的区别 ??别人代码里用到的hash是啥?? 题目描述 旧键盘上坏了几个键,于是在敲一段文 ...

  2. 牛客网_PAT乙级_1022挖掘机技术哪家强(20)【class vector sort排序、删除重复元素】

    题目描述 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入描述: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每 ...

  3. 牛客网_PAT乙级_1013组个最小数 (20)

    题目描述 给定数字0-9各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意0不能做首位).例如: 给定两个0,两个1,三个5,一个8,我们得到的最小的数就是1 ...

  4. 牛客网_PAT乙级1008_锤子剪刀布 (20)

    题目 题目描述 大家应该都会玩"锤子剪刀布"的游戏: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入描述: 输入第1行给出正整数N( ...

  5. 牛客网_PAT乙级1004_福尔摩斯的约会 (20)

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string. ...

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

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

  7. 牛客网_PAT乙级_1019. 数字黑洞 (20)

    总结 注意!! 想要在函数中结束程序,一定不要用system("pause");,因为这样只是让程序暂停,结果就是运行时间超时,无法通过所有的测试用例. 那么,C++ 程序中什么函 ...

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

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

  9. 牛客网_PAT乙级_1026跟奥巴马一起编程(15)

    题目描述 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算 机科学教育周"正式启动,奥巴马编写了很简 ...

最新文章

  1. Key-Value数据库:Redis与Memcached之间如何选择?
  2. 软件项目开发流程及配置人员
  3. 河南大学明德计划2020计算机学院,关于选拔2020级物理学“明德计划”实验班学生的通知...
  4. (7)数据段权限检查
  5. activiti7 和业务_上市公司区块链业务终于赚钱了!营收增长3886.03%
  6. java足球经理2010下载_apk是什么文件?apk文件怎么打开?
  7. 7-1 字母统计图 (10 分)(思路+详解)
  8. MyEclipse for Mac快捷键
  9. 解决方案:Nginx高可用方案
  10. 例子---年倒计时/JS日期对象类型
  11. mysql my.ini配置优化_求高手帮我优化一下 mysql 的 my.ini
  12. python自学网站-分享干货:三个新手自学Python的网站!
  13. C#中Dictionary的用法及用途(转)
  14. 纪念DOS下的经典软件
  15. Centos系统安装踩坑
  16. unity shader相关工具教程
  17. 《Python数据分析与挖掘实战》第13章——回归+DNN
  18. 50天入门人工智能!
  19. docker logs命令查看日志
  20. 【GNN】GN:更通用的 GNN 架构

热门文章

  1. JMP指令转换公式推导
  2. 深入了解什么是Docker
  3. HashMap+双向链表实现LRU
  4. 闻茂泉:系统性能监控与分析的工程化实践之路
  5. 内联函数和编译器对Go代码的优化
  6. 在公司的微服务上搞破坏真是太开心了
  7. ​稳健、可靠全真即时通信网的架构与应用
  8. 关于RTP和SRT之间的互操作性,你需要了解什么?
  9. 【大会】技术决策背后的商业逻辑
  10. C++实现图的深度优先遍历和广度优先遍历