1024. 科学计数法 (20)
来源:互联网 发布:c语言可以用来做什么 编辑:程序博客网 时间:2024/06/07 01:49
1024. 科学计数法 (20)
题目
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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
思路
读取使用科学计数法表示的数,需要分部分读取,根据指数移动小数点输出的位置,在指数大于0时,需要注意位数不够需要补零,而在小于零的时候,数字最后一定是小于1的数。指数等于0时,原样输出。
代码
#include <stdio.h>#include <stdlib.h>int num[10000];int main(void){ int i=0,index,acc; char c,ch; ch=getchar(); while((c=getchar())!='E') if(c!='.') num[i++]=c-'0'; acc=i;//记录数字的位数 scanf("%d",&index); if(ch=='-')printf("-"); if(index==0) { printf("%d.",num[0]); for(i=1;i<acc;i++) printf("%d",num[i]); return 0; } else if(index>0) { printf("%d",num[0]); i=1; while(index&&i<acc) { printf("%d",num[i++]); index--; } if(i==acc&&index!=0) while(index--)printf("0"); else { if(i!=acc)printf("."); while(i<acc) printf("%d",num[i++]); } } else { i=0; printf("0."); while(++index)printf("0"); while(i!=acc) printf("%d",num[i++]); } return 0;}
阅读全文
0 0
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 关于机器学习中基于对数线性回归模型的讨论
- java.lang.NoClassDefFoundError: org/apache/ibatis/io/Resources] with root cause
- 异常:java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher
- C#学习总结(3)——代码连接mysql数据库(VS工具)
- 管理hiberfil.sys文件与pagefile.sys文件释放C盘
- 1024. 科学计数法 (20)
- 质量管理
- 09 C++Reference引用的用法(学自Boolean)
- iOS开发关于UITableView从网络中获取到数据源,却在UITableView中不显示的问题
- 类的加载、连接与初始化过程的详细分析(中)
- 第11周项目4
- VMware ESXI 开启虚拟机识别磁盘SCSI ID
- 如何测试网站的性能
- Java内部类小结