• PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)


    1024. 科学计数法 (20)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    HOU, Qiming

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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 #include "stdio.h"
     2 #include"string.h"
     3 #include <stdlib.h>
     4 int main()
     5 {
     6     int i,position_point=0,position_zheng=0,position_fu=0,count=0,length=0,position_e=0;
     7     char a[10000];
     8     gets(a);
     9 
    10     length=strlen(a);
    11     for(i=1;i<length;i++)
    12       {
    13           if(a[i]=='.')   position_point=i;
    14         if(a[i]=='E')   position_e=i;
    15         if(a[i]=='+')    position_zheng=i;
    16         if(a[i]=='-')    position_fu=i;
    17       }
    18     if(a[0]=='-')//
    19       printf("-");
    20 
    21       //将E后面的数字转化为%d
    22       
    23       for(i=position_e+2;i<length;i++)
    24       {
    25          count=(a[i]-'0')+count*10;
    26       }
    27 
    28       if(count==0)
    29       {
    30           for(i=1;i<position_e;i++)  
    31                       printf("%c",a[i] );
    32       }
    33 
    34     
    35           else{
    36 
    37               if(position_fu)//小数
    38               {
    39                   
    40                   printf("0.");
    41                 for(i=0;i<count-1;i++)  //输出0.0....
    42                   printf("0" );
    43 
    44 
    45                   for(i=1;i<position_point;i++)  //输出小数点前的数
    46                       printf("%c",a[i] );
    47                   for(i=position_point+1;i<position_e;i++)  //输出小数点后的数
    48                       printf("%c",a[i] );
    49               }
    50               else
    51               {
    52 
    53                   for(i=1;i<position_point;i++)  //输出小数点前的数
    54                       printf("%c",a[i] );
    55                   for(i=position_point+1;i<position_e;i++)  //输出小数点后的数
    56                       printf("%c",a[i] );
    57       
    58                 for(i=0;i<count-(position_e-position_point-1);i++)  //输出00....
    59                   printf("0" );
    60               } 
    61       }
    62      return 0;
    63 }
  • 相关阅读:
    多级别过滤器
    MongoDBAppender
    org.slf4j.impl.SimpleLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
    简单引入logback
    Logback configuration
    PatternLayoutEncoder 输出格式
    ConsoleAppender
    FileAppender
    Linux学习笔记
    GitLab CI/CD 学习记录
  • 原文地址:https://www.cnblogs.com/zle1992/p/5932606.html
Copyright © 2020-2023  润新知