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

    mongodb的日志与profile相似,在启动mongod时 可以用verbose这个参数配置他的日志详细程度,分为一个v到5个v,其中v越多,详细度越高   mogod.conf port = d ...

  2. BZOJ 1229: [USACO2008 Nov]toy 玩具

    BZOJ 1229: [USACO2008 Nov]toy 玩具 标签(空格分隔): OI-BZOJ OI-三分 OI-双端队列 OI-贪心 Time Limit: 10 Sec Memory Lim ...

  3. SQL查询出每门课都大于80 分的学生姓名

    Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select  distinct name from Course where name not in (select di ...

  4. java 程序设计第三次作业内容

    第一题:输出结果是什么? System.out.println("5+5="+5+5); 第二题:输出结果是什么? int a=3,b; b=a++; sop("a=&q ...

  5. 搭建mock服务器(微信小程序)

    搭建mock服务器(微信小程序) 如何在微信小程序使用mock.js实在是个问题,为了完全模拟访问路由和数据,选择在搭建本地mock服务器是一个不错的选择. 以下示例了一个mock服务器的搭建过程以及 ...

  6. 解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包

    今天创建SpringMVC项目时 用到HttpServletRequest时, 发现项目中根本没有Servlet这个包, 在网上搜了一下,这个问题是因为web项目没有添加服务器导致的. 配置tomec ...

  7. SpringBoot之自动配置原理

    我在前面的Helloworld的程序中已经分析过一次,配置原理了: 1).SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration 2).@En ...

  8. bat 服务启动脚本

    当电脑上有多个数据库(特别是Oracle,占用内存大,所以我都是设置为手动启动的,或者想在电脑上运行一下其他UI类软件或玩些游戏的时候也需要暂时关掉,奈何我这渣机(V_V))需要启动或停止的时候,就用 ...

  9. POI Excel 插入新的行,下面的行动态移动

    在做Excel 模板时,会有遇到  模板行数不固定,如下图  需要在行次4下面再插入一行:注意:(插入的行如果是下面空白行,需要创建行) 解决方法是使用shifRows方法,第1个参数是指要开始插入的 ...

  10. Expect自动化交互程序

    Expect介绍: 1.什么是Expect Expect是一个用来实现自动化交互功能的软件套件,基于TCL的脚本编程工具语言,方便学习,功能强大. 2.为什么要使用expcet: 当今的企业运维中,自 ...