PAT-B 1024. 科学计数法
来源:互联网 发布:红颜知已的歌词 编辑:程序博客网 时间:2024/05/22 13:44
题目内容:
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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
思路分析:
先按题目要求拆解输入数据,分别得到符号(head),排除小数点的有效数字(char a[ ])和指数(ex)。
根据指数大小分类处理,当ex >= 0时,小数点向右移动ex位,超出有效数字长度要补0。
当ex < 0时,小数点向左移动ex位,小数点左边保证有一个0,其余超出部分同样补0。
代码:
#include <stdio.h>int main(){ char head, a[10001] = {0}; int ex = 0; scanf("%c%c.%[0-9]E%d", &head, &a[0], a+1, &ex); // 拆解输入数据 if (head == '-') printf("-"); // 输出符号位 if (ex >= 0) for (int i = 0; i < ex+1 || a[i] != 0; i++) { // 因为向右移动可能会超出有效数字范围,判断条件增加了字符串结束符判断 if (i == ex+1) printf("."); // 到小数点位置时,输出小数点 printf("%c", a[i]==0 ? '0' : a[i]); // 超出有效数字范围时补0 } else { printf("0."); for (int i = 1; i < (-ex); i++) printf("0"); printf("%s", a); } printf("\n"); return 0;}
点这里进入试题网页
0 0
- PAT-B 1024. 科学计数法
- PAT-B 1024. 科学计数法
- PAT(B) - 1024. 科学计数法 (20)
- PAT-B 1024. 科学计数法 (20)
- PAT 1024. 科学计数法
- PAT 1024. 科学计数法
- PAT 1024. 科学计数法
- PAT-B 1024. 科学计数法(同PAT 1073. Scientific Notation)
- 浙大 PAT 1024. 科学计数法 (20)
- PAT 1024. 科学计数法 (20)
- PAT (Basic Level)1024. 科学计数法
- PAT 乙级 1024. 科学计数法
- PAT-乙级-1024. 科学计数法 (20)
- Java - PAT - 1024. 科学计数法 (20)
- PAT乙级.1024. 科学计数法 (20)
- pat 乙1024. 科学计数法
- PAT乙级 1024. 科学计数法 (20)
- PAT 乙级 1024. 科学计数法 (20)
- Tmux 命令总结
- hdu1698
- C语言标准库之<float.h>
- Codeforces #325 Div2 D Phillip and Trains(模拟)
- 重试C语言之C语言变量
- PAT-B 1024. 科学计数法
- java基础 -- 六哥
- 127.0.0.1和localhost和本机IP三者的区别!!!
- Qt实战经验
- 算法的时间复杂度的计算
- [leetcode] 345. Reverse Vowels of a String 解题报告
- Django 文档自翻自用中文版(2.1-2.1.3)
- Hibernate之deleted object would be re-saved by cascade 异常的解决
- [leetcode] 344. Reverse String 解题报告