PAT1024
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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.23400 * 10^-3 等于0.00123400
把0.看出一段 这是无论如何都存在的 所以可以先输出0.
中间的00看成一段 这一段的0个数与指数有关 指数为-1 输出0个0 指数为-2 输出1个0 以此类推 循环输出
最后的主体部分123400 就是原式中的1.23400去掉小数点 处理一下输出
三次输出,构成答案,如果全部挤在一起输出 会显复杂
# include<iostream>
# include<algorithm>
# include<stdio.h>
# include<string>
using namespace std;
int main()
{
char s[],fuhao1,fuhao2,zs[];
int i,zhi=,j,h=,k=,flag=,tn = ;
int zhishu;
string a;
cin>>a;
fuhao1 = a[];
if(fuhao1=='+') //分段输出----------符号
{ }
else
{
cout<<"-";
}
for(i=;i<a.length();i++) //利用flag 将字符串a分成 主体数字字符串 、指数符号、 指数字符串 三个部分
{
if(a[i]=='E')
{
flag = ; continue;
} if(flag==)
{
s[+h] = a[i]; h++;
}
else if(flag == )
{
fuhao2 = a[i]; flag = ; continue;
}
else
{
zs[k]=a[i]; k++;
}
} for(i=k-;i>=;i--) //将指数字符串 转化为 整数形式
{
zhi = zhi + (zs[i]-'')*tn;
tn = tn * ;
} if(fuhao2=='+') //如果指数前的符号为正 分为3种可能 小数点仍存在 小数点刚好消失 小数点消失且要加0
{
if(h>zhi+)
{
char t;
t = s[]; //保存小数点
for(i=;i<zhi;i++) //数组循环前移,覆盖住了小数点的位置
{
s[+i] = s[+i];
}
s[+zhi] = t; //将小数点 放在数组前移后留下的最后一个位置
for(i=;i<h;i++)
{
cout<<s[+i];
}
}
else if(h==zhi+)
{
for(i=;i<h;i++)
{
if(i==)
{
continue;
}
cout<<s[+i];
}
}
else
{
for(i=;i<h-;i++) //数组循环前移覆盖小数点
{
s[+i] = s[+i];
}
zhishu = zhi -h + ;
for(j=;j<zhishu;j++)
{
s[+i-+j] = ''; //加0
}
for(i=;i<=zhi;i++)
{
cout<<s[+i];
}
}
}
else
{ char t;
t = s[];s[]=s[];s[]=t;
cout<<"0.";
for(i=;i<zhi;i++)
{
cout<<"";
}
for(i=;i<h;i++)
{
cout<<s[+i];
} }
return ;
}
PAT1024的更多相关文章
- PAT1024. Palindromic Number
//自己方法只能拿到15分后边老是又过不了的点,用了网上别人的方法,用库函数的翻转reverse(),参数分别是起始位置个结束位置,注意只能在原存储空间翻转,即比较对称时,再生请一个空间,将原来字符串 ...
- PAT1024 强行用链表写了一发。
主要的思想还是 上课的那个PPT上面的 链表反转的思想. 然后加一点七七八八的 递推. 一层一层往下翻转就好啦. 1A 真开心. 代码:http://paste.ubuntu.net/16506799 ...
- PAT1024. Palindromic Number (25)
输入即为回文的情况要考虑 #include <iostream> #include <algorithm> //reverse using namespace std; str ...
- PAT1136:A Delayed Palindrome
1136. A Delayed Palindrome (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
随机推荐
- 【洛谷2403】[SDOI2010] 所驼门王的宝藏(Tarjan+dfs遍历)
点此看题面 大致题意: 一个由\(R*C\)间矩形宫室组成的宫殿中的\(N\)间宫室里埋藏着宝藏.由一间宫室到达另一间宫室只能通过传送门,且只有埋有宝藏的宫室才有传送门.传送门分为3种,分别可以到达同 ...
- Ajax的学习记录
Ajax学习笔记 1.同步与异步同步:客户端发送请求到服务端,当服务器返回响应之前,客户端都处于等待卡死状态异步:客户端发送请求到服务端,当服务器返回响应之前,客户端可以随意做其他事情,不会卡死 2. ...
- 漫谈Ajax在.Net中的使用
引用地址:http://birdshover.cnblogs.com/archive/2006/07/03/441439.html AJAX出来的时间也不短了.虽然它在某些方面很受争议,但是瑕不掩瑜. ...
- https及其背后的加密原理阅读总结
https是以安全为目标的http通道,简单讲是http的安全版.当我们往服务器发送比较隐私的数据(比如说你的银行卡,身份证)时,如果使用http进行通信.那么安全性将得不到保障. 首先数据在传输的过 ...
- js原生实现三级联动下拉菜单
js代码: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- JAVA 优先获取外网Ip,再获取内网Ip
1.获取内网Ip private String getLocalhostIp(){ String hostAddress = ""; try { InetAddress addre ...
- MySql学习笔记01
MySql01 课程介绍 数据库简介 之前通过流操作文件的方式存储数据弊端: 1. 效率低 2. 不管是存还是取都比较麻烦 3. 一般只能存储小量数据 4. 只能存储文本数据 什么是DB DataBa ...
- js数组中去重对象
var allCourses = new Array();var coursesId = new Array();function findCourses() { Courses.data().eac ...
- ELK详细安装部署
一.前言 日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题.分析日志可以更清楚的了解服务器的状态和 ...
- vue 判断是否登录,未登录跳转到登录页
网页一进入判断是否登录,未登录跳转到登录页面 router.js export default new Router({ routes: [ { path: '/', name: 'HelloWorl ...