转跳点:

1024 科学计数法 
 

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

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

输入格式:

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

输出格式:

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

输入样例 1:

  1. +1.23400E-03
 

输出样例 1:

  1. 0.00123400
 

输入样例 2:

  1. -1.2E+10
 

输出样例 2:

  1. -12000000000

  这道题可有意思了,我都被逼的去学了一点正则表达式(原本不想用正则的,但写到一半发现太麻烦,就不写了(捂脸),果然我还是个菜菜)。这道题除了输入之外,没有太多难的地方,就是注意正负号,和小数位的保留。

  我代码压缩了一下,时间方面不太理想。(为什么要精简代码?可能我脑子有坑吧)

  1. 1 #include <stdio.h>
  2. 2 #include <stdlib.h>
  3. 3 #include <string.h>
  4. 4 #define MAXSIZE 10000
  5. 5
  6. 6 int main(void)
  7. 7 {
  8. 8 int Integer, Exponent, count = 0;
  9. 9 char Decimal[MAXSIZE];
  10. 10
  11. 11 scanf("%d.%[0-9]E%d", &Integer, &Decimal, &Exponent); //正则表达式输入(瞎逼逼,就是格式化输入,呃用了一点点正则)
  12. 12 printf("%s", Integer < 0 ? "-" : ""); //处理正负号,预防小于 0 的 小数
  13. 13 while (Exponent++ < 0) //如果指数小于0,先输出指数的个数
  14. 14 {
  15. 15 printf("0%s", count++ == 0 ? "." : "");
  16. 16 }
  17. 17 Exponent--; //0 -> Exponent, 所以-1
  18. 18 printf("%d", abs(Integer)); //输出第一位
  19. 19 for (int i = 0; i < strlen(Decimal) || i < Exponent; i++)
  20. 20 { //0 -> Exponent,两个终止条件一个是保留小数位数,一个是整数补齐科学计数法的小数部分0不够补0
  21. 21
  22. 22 printf("%s%c", i == Exponent && !count ? "." : "", i < strlen(Decimal) ? Decimal[i] : '0');
  23. 23 }
  24. 24
  25. 25 return 0;
  26. 26 }

  我原本写了一个60来行的代码,发现太长,就放弃了,没用正则,果然代码短看起来就是舒服。(使劲浪费时间,看不见)

  下面这个就是正则的部分

  1. %d.%[0-9]E%d

其实吧,用到正则的就只有这里 %[0-9]E 这里表示从 . 到 E 之间是数字 0~9 的字符都会存储下来,还有,正则表达式本来就是用来处理字符串的,不要问我为什么,自行度娘,详细的正则表达式的用法我会在额外更一篇博客的,(等我学完再说)

  

  PTA不易,诸君共勉!

P 1024 科学计数法的更多相关文章

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

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  2. PAT-乙级-1024. 科学计数法 (20)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  3. C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...

  4. PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)

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

  5. PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  6. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)

    PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...

  7. PAT——1024. 科学计数法

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

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

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

  9. PAT 1024 科学计数法

    https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168 科学计数法是科学家用来表示很大或很小的数字的 ...

随机推荐

  1. 六、java基础-单例模式_继承_覆盖_多态

    1.单例模式: 1)提出原因 是由gof 也就是四人组提出来的.为了保证jvm中某一类型的java对象永远只有一个,同时也是为了节省内存的开销.因为外面程序可以通过new的方法直接调用类里面的构造方法 ...

  2. leetcode844 Backspace String Compare

    """ Given two strings S and T, return if they are equal when both are typed into empt ...

  3. JAVA虚拟机:对象的创建

    在虚拟机中,当遇到需要new一个对象时,虚拟机首先会去处于方法区的常量池中查找new指令的参数,即查找此类的符号引用是否已存在,并且检查此符号引用的代表类是否已经做过加载.解析和初始化,如果做过则不会 ...

  4. 深入理解 C# 协变和逆变 (转载)

      深入理解 C# 协变和逆变 msdn 解释如下: “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型. “逆变”则是指能够使用派生程度更小的类型. 解释的很正确,大致就是这样,不过不 ...

  5. java文件的上传

    文件的上传和下载在web应用中是非常常用,也是非常有用的功能.  例如:发送电子邮件时可以同过上传附件发送文件,OA系统中可以通过上传文件来提交公文,社交网站通过上传图片来自定义头像等等.  例如:下 ...

  6. jsp快速回顾

    http://www.cnblogs.com/zfc2201/archive/2011/08/17/2143615.html http://blog.163.com/mount_lee/blog/st ...

  7. 机器学习(ML)八之正向传播、反向传播和计算图,及数值稳定性和模型初始化

    正向传播 正向传播的计算图 通常绘制计算图来可视化运算符和变量在计算中的依赖关系.下图绘制了本节中样例模型正向传播的计算图,其中左下角是输入,右上角是输出.可以看到,图中箭头方向大多是向右和向上,其中 ...

  8. 困惑我的x++和++x;

    刚学习C语言时X++和++X非常不解 目前有了新的领悟 1.X++ int x=0; int z=x++; 此时z?x? 这个问题可以分两步思考 第一步:先把x的值赋予z,此时z=x=0; 第二步:x ...

  9. Nifi简介及核心概念整理

    简介 Apache NiFi 是一个易于使用.功能强大而且可靠的数据拉取.数据处理和分发系统,用于自动化管理系统间的数据流. 它支持高度可配置的指示图的数据路由.转换和系统中介逻辑,支持从多种数据源动 ...

  10. python中numpy矩阵运算操作大全(非常全)!

    python中numpy矩阵运算操作大全(非常全) //2019.07.10晚python矩阵运算大全1.矩阵的输出形式:对于任何一个矩阵,python输出的模板是:import numpy as n ...