转跳点:

1024 科学计数法 
 

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

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

  下面这个就是正则的部分

%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. 多线程分析之Semaphore

    Semaphore分析由来 网上看了许多讲解Semaphore的,用Semaphore来实现顺序打印字母,但是可能大家都没有清楚具体的原因,所以来给大家分析下为什么可以使用Semaphore来实现顺序 ...

  2. Red_Hat yum源配置

    http://www.linuxidc.com/Linux/2016-06/132171.htm

  3. PAT A1025 pat ranking

    有n个考场,每个考场都有若干数量个考生,现给出各个考场中考生的准考证号和分数,要求将所有考生的分数从高到低排序,并输出 #include<iostream> #include<str ...

  4. WebApi如何接收前台传递过来的数组

    var ids = ["111", "222", "333"];$.ajax({ url: host + '/User/deleteByID ...

  5. ch4 圆角框

    固定宽度的圆角框 只需要两个图像:一个应用于框的顶部,一个应用于底部 <div class="box"> <h2>Lorem Ipsum</h2> ...

  6. luogu P4129 [SHOI2006]仙人掌

    题目描述 仙人掌图(cactus)是一种无向连通图,它的每条边最多只能出现在一个简单回路(simple cycle)里面.从直观上说,可以把仙人掌图理解为允许存在回路的树.但是仙人掌图和树之间有个本质 ...

  7. Day3-C-Radar Installation POJ1328

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...

  8. 本地VMware虚拟机环境CentOS7.6 安装宝塔Linux面板

    之前测试一直都在使用phpenv和phpstudy ,不过这两个集成环境时长容易出bug,各种问题劝退.之前Windows开始Linux的体验又不尽人意,今天介绍一个别的方法.VMware安装Linu ...

  9. CAS实现单点登录(SSO)经典完整教程

    转自 http://blog.csdn.net/small_love/article/details/6664831 一.简介 1.cas是有耶鲁大学研发的单点登录服务器 2.本教材所用环境 Tomc ...

  10. 内核MKDEV(MAJOR, MINOR)

    版本:linux-2.6.24.4 宏: MKDEV(MAJOR, MINOR);   说明: 获取设备在设备表中的位置. MAJOR   主设备号 MINOR   次设备号     内核使用的版本号 ...