科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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的更多相关文章

  1. PAT1024. Palindromic Number

    //自己方法只能拿到15分后边老是又过不了的点,用了网上别人的方法,用库函数的翻转reverse(),参数分别是起始位置个结束位置,注意只能在原存储空间翻转,即比较对称时,再生请一个空间,将原来字符串 ...

  2. PAT1024 强行用链表写了一发。

    主要的思想还是 上课的那个PPT上面的 链表反转的思想. 然后加一点七七八八的 递推. 一层一层往下翻转就好啦. 1A 真开心. 代码:http://paste.ubuntu.net/16506799 ...

  3. PAT1024. Palindromic Number (25)

    输入即为回文的情况要考虑 #include <iostream> #include <algorithm> //reverse using namespace std; str ...

  4. PAT1136:A Delayed Palindrome

    1136. A Delayed Palindrome (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

随机推荐

  1. java Vamei快速教程12 类型转换和多态

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们之前使用类创造新的类型(type),并使用继承来便利我们创建类的过程.我将在这 ...

  2. IOS tableView的数据刷新

    1.tableView的刷新 1> 数据刷新的总体步骤 * 修改模型数据 * 刷新表格(刷新界面) 2> 刷新表格(刷新界面)的方法 * 全局刷新(每一行都会重新刷新) - (void)r ...

  3. IOS 模仿有storyboard的项目控制器的创建

    ● 先加载storyboard文件(Test是storyboard的文件名) UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@ ...

  4. vue登录权限

    登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到cookie中,保证刷新页面后能记住用户登录状态),前端会根 ...

  5. selenium跳过https的问题

    背景: 周六产品给我反馈:支付成功页面后会提示这个,问自动化为什么没有发现这样的问题 第一反应:这个地址肯定被举报了,我也肯定没有设置过安全链接,因为都没有见过这样的网址,如果有问题,应该会直接出错, ...

  6. hdu-1856 More is better---带权并查集

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1856 题目大意: 一个并查集 计算每个集合的元素 找出元素最多的那个集合,输出元素的个数 解题思路: ...

  7. 【CF799B】T-shirt buying(一道很水的小根堆)

    点此看题面 大致题意: 有\(n\)件T恤衫,告诉你每件T恤衫的价格以及它正面和反面的颜色(\(1≤\)颜色的编号\(≤3\)),现在有m个顾客,已知每个人想要的衣服的颜色(一件T恤衫只要有一面的颜色 ...

  8. WARNING: The TCP backlog setting of 511.解决

    redis启动警告问题:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/so ...

  9. Mint UI文档

    Mint UI文档:http://elemefe.github.io/mint-ui/#/ 一.Mint UI的安装和基本用法. 1.NPM :npm i mint-ui -S 建议使用npm进行安装 ...

  10. vue 自定义动态弹框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...