花了半个小时,强行拗出一长串又臭又长的代码,把所有情况都分了(该分的,不该分的……都分了……)

 #include<cstdio>
#include<cstring>
#include<cmath>
#define MAX 120
char num[MAX],d[MAX],b_[],b;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",num);
if(num[]=='')
{
int i,cnt;
for(i=,cnt=;;i++,cnt++)
{
if(num[i]=='e') break;
d[cnt]=num[i];
}
d[cnt]='\0';
i++;
for(cnt=;num[i];i++,cnt++) b_[cnt]=num[i];
b_[cnt]='\0';
int len_b=strlen(b_);
b=;
for(i=;i<len_b;i++) b+=(b_[i]-'')*(int)pow(,(len_b--i));
int len_d=strlen(d);
if(len_d== && d[]=='')//这个数是0
{
printf("0\n");
}
else if(b<len_d)//不需要添加后缀0,需要移动小数点,并去掉前缀0
{
int d_0=;
for(i=;i<len_d;i++)
{
if(d[i]!='') break;
if(d[i]=='') d_0++;
}//前缀0个数
if(b<=d_0)//b <= d的前缀0个数,n<1
{
printf("0.");
for(i=b;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else//b > d的前缀0个数,n>=1
{
for(i=d_0;i<b;i++) printf("%c",d[i]);
printf(".");
for(;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
}
else if(b==len_d)//直接去掉小数点,并去掉前缀0
{
for(i=;i<len_d;i++) if(d[i]!='') break;
for(;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else//需要添加后缀0,并且去掉前缀0
{
for(i=;i<len_d;i++) if(d[i]!='') break;
for(;i<len_d;i++) printf("%c",d[i]);
for(i=;i<=b-len_d;i++) printf("");
printf("\n");
}
}
else
{
int i,cnt;
for(i=,cnt=;;i++,cnt++)
{
if(num[i]=='e') break;
d[cnt]=num[i];
}
d[cnt]='\0';
i++;
for(cnt=;num[i];i++,cnt++) b_[cnt]=num[i];
b_[cnt]='\0';
int len_b=strlen(b_);
b=;
for(i=;i<len_b;i++) b+=(b_[i]-'')*(int)pow(,(len_b--i));
int len_d=strlen(d);
if(b<len_d)//不需要添加0,需要移动小数点
{
printf("%c",num[]);
for(i=;i<b;i++) printf("%c",d[i]);
printf(".");
for(;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else if(b==len_d)//直接去掉小数点
{
printf("%c",num[]);
for(i=;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else//需要添加后缀0
{
printf("%c",num[]);
for(i=;i<len_d;i++) printf("%c",d[i]);
for(i=;i<=b-len_d;i++) printf("");
printf("\n");
}
}
}
}

JNUOJ 1184 - 科学计数法的更多相关文章

  1. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法

    保存在csv中的 013812345678,前面的0会被去掉,后面是科学计数法显示.保存成 col1,="013812345678" 即可. 注意,分隔符逗号后面直接接“=”等号. ...

  2. 【转】js 中导出excel 较长数字串会变为科学计数法

    [转]js 中导出excel 较长数字串会变成科学计数法 在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串 ...

  3. C# 科学计数法转换成数字

    /// <summary> /// 判断输入的数是否是科学计数法.如果是的话,就会将其换算成整数并且返回,否则就返回false. /// </summary> /// < ...

  4. C# 中科学计数法转成正常值

    抓取数据的时候碰到科学技术法,查了一些资料,直接贴代码 /// <summary> /// 数字科学计数法处理 /// </summary> /// <param nam ...

  5. PAT 1024. 科学计数法 (20)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...

  6. PHP 如何显示大数字,防止显示为 科学计数法 形式

    PHP 数字超过一定长度时,会自动转换为 科学计数法 的形式,如 1.2345678912346E+16: 如何 避免转换,让它原样展示呢? 不过,可以用PHP函数 number_format() 来 ...

  7. 关于解决读取导入excel某列数字过长的科学计数法格式

    因为 客户 需要导入 虚拟商品的卡号 excel已经是文本形式的单元格格式了 但是 到后台 java代码去获取的时候 仍然是 科学计数法格式 先找到以下资料做参考:http://love-66521. ...

  8. PAT乙级 1024. 科学计数法 (20)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  9. POI取消科学计数法

    前台输入手机号13777777777,如果是为Double类型接收,就会自动转为科学计数法 找了下,一般是Double转String,方法一般有两种: 1.利用String.format() sale ...

随机推荐

  1. SpringMVC -- 梗概--源码--贰--上传

    1.配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=&qu ...

  2. Java 代码块:静态代码块、构造代码块、构造函数块

    Class : StaticFa package edu.bai.du.lime.staticCode; public class StaticFa { // 随着类的声明而执行 static { S ...

  3. SVN的Hooks功能--强制添加注释

    所谓hooks,可以类似 理解Linux内核Netfilter框架的hook点和hook函数的概念.当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就 会去执行对应hook点的脚本 ...

  4. iOS开发--时间戳问题

    什么是时间戳? 时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间.数字时间戳技术是数字签名技术一种变种的应用. 思考:简单来讲就是根据文件hash加密后生成的摘要和时间生成的时 ...

  5. SpringBoot(七)-- 启动加载数据

    一.场景 实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求.为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunn ...

  6. CentOS6.5下安装Oracle11g

    一.安装前系统准备 1. 修改主机名 #sed -i "s/HOSTNAME=localhost.localdomain/HOSTNAME=oracledb.01/" /etc/s ...

  7. mysql学习笔记(三)

    -- 主键冲突(duplicate key) ,'xujian','anhui'); ,'xiewei','anhui'); ,'luyang','anhui');-- 主键冲突了 -- 可以选择性的 ...

  8. 由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1'

    由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1' 此时进入系统已root模式 ...

  9. 利用pdb获取未导出符号

      BOOL InitSymHandler(HANDLE hProc)   {   CHAR SymPath[MAX_PATH], CurDir[MAX_PATH];       GetCurrent ...

  10. Linux平台下mysql的ODBC配置方法

    在安装配置之前, 需要先大概了解一下MyODBC的架构. MyODBC体系结构建立在5个组件上,如下图所示: Driver Manager: 负责管理应用程序和驱动程序间的通信, 主要功能包括: 解析 ...