zoukankan      html  css  js  c++  java
  • JNUOJ 1184

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

      1 #include<cstdio>
      2 #include<cstring>
      3 #include<cmath>
      4 #define MAX 120
      5 char num[MAX],d[MAX],b_[10],b;
      6 int main()
      7 {
      8     int t;
      9     scanf("%d",&t);
     10     while(t--)
     11     {
     12         scanf("%s",num);
     13         if(num[0]=='0')
     14         {
     15             int i,cnt;
     16             for(i=2,cnt=0;;i++,cnt++)
     17             {
     18                 if(num[i]=='e') break;
     19                 d[cnt]=num[i];
     20             }
     21             d[cnt]='';
     22             i++;
     23             for(cnt=0;num[i];i++,cnt++) b_[cnt]=num[i];
     24             b_[cnt]='';
     25             int len_b=strlen(b_);
     26             b=0;
     27             for(i=0;i<len_b;i++) b+=(b_[i]-'0')*(int)pow(10,(len_b-1-i));
     28             int len_d=strlen(d);
     29             if(len_d==1 && d[0]=='0')//这个数是0 
     30             {
     31                 printf("0
    "); 
     32             } 
     33             else if(b<len_d)//不需要添加后缀0,需要移动小数点,并去掉前缀0 
     34             {
     35                 int d_0=0;
     36                 for(i=0;i<len_d;i++)
     37                 {
     38                     if(d[i]!='0') break;
     39                     if(d[i]=='0') d_0++;
     40                 }//前缀0个数 
     41                 if(b<=d_0)//b <= d的前缀0个数,n<1 
     42                 {
     43                     printf("0.");
     44                     for(i=b;i<len_d;i++) printf("%c",d[i]);
     45                     printf("
    ");
     46                 }
     47                 else//b > d的前缀0个数,n>=1
     48                 {
     49                     for(i=d_0;i<b;i++) printf("%c",d[i]);
     50                     printf(".");
     51                     for(;i<len_d;i++) printf("%c",d[i]);
     52                     printf("
    ");
     53                 }
     54             }
     55             else if(b==len_d)//直接去掉小数点,并去掉前缀0 
     56             {
     57                 for(i=0;i<len_d;i++) if(d[i]!='0') break;
     58                 for(;i<len_d;i++) printf("%c",d[i]);
     59                 printf("
    ");
     60             }
     61             else//需要添加后缀0,并且去掉前缀0 
     62             {
     63                 for(i=0;i<len_d;i++) if(d[i]!='0') break;
     64                 for(;i<len_d;i++) printf("%c",d[i]);
     65                 for(i=1;i<=b-len_d;i++) printf("0");
     66                 printf("
    ");
     67             }
     68         }
     69         else
     70         {
     71             int i,cnt;
     72             for(i=2,cnt=0;;i++,cnt++)
     73             {
     74                 if(num[i]=='e') break;
     75                 d[cnt]=num[i];
     76             }
     77             d[cnt]='';
     78             i++;
     79             for(cnt=0;num[i];i++,cnt++) b_[cnt]=num[i];
     80             b_[cnt]='';
     81             int len_b=strlen(b_);
     82             b=0;
     83             for(i=0;i<len_b;i++) b+=(b_[i]-'0')*(int)pow(10,(len_b-1-i));
     84             int len_d=strlen(d);
     85             if(b<len_d)//不需要添加0,需要移动小数点 
     86             {
     87                 printf("%c",num[0]);
     88                 for(i=0;i<b;i++) printf("%c",d[i]);
     89                 printf(".");
     90                 for(;i<len_d;i++) printf("%c",d[i]);
     91                 printf("
    "); 
     92             }
     93             else if(b==len_d)//直接去掉小数点 
     94             {
     95                 printf("%c",num[0]);
     96                 for(i=0;i<len_d;i++) printf("%c",d[i]);
     97                 printf("
    "); 
     98             }
     99             else//需要添加后缀0 
    100             {
    101                 printf("%c",num[0]);
    102                 for(i=0;i<len_d;i++) printf("%c",d[i]);
    103                 for(i=1;i<=b-len_d;i++) printf("0");
    104                 printf("
    ");
    105             }
    106         }
    107     }
    108 }
  • 相关阅读:
    MOSS发生“未能转换部分或所有标识引用”错误的处理
    Excel嵌入网页(二) 转载
    GridView的PagerTemplate分页
    深入探讨:如何理解.Net的三层架构(转)
    IIS报Service Unavailable错的解决方案
    浅谈C#托管程序中的资源释放问题(转)
    C#程序节省内存
    网页中嵌入Excel控件(补充)
    解决ajax的status=0问题
    翻开我的博客之旅
  • 原文地址:https://www.cnblogs.com/dilthey/p/6819022.html
Copyright © 2011-2022 走看看