zoukankan      html  css  js  c++  java
  • PAT-1073-Scientific Notation

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    
    #define MAX 1000
    int main()
    {
        char str[MAX];
        char exp[MAX];
        char data_sym;
        char comp_sym;
        while(scanf("%s",str)!=EOF)
        {
            char * e =strchr(str,'E');//查找字符串里面字符,返回指向这个字符的指针。
            char * point = strchr(str,'.'); 
            comp_sym=*(e+1);
            data_sym=*str;
            
            //printf("%c %c",data_sym,comp_sym);
            int start = e-str+2;
            int len = strlen(str);
            int comp=0;
            for(int j =start;j<len;j++)
            {
                 double num = (str[j]-'0')*pow(10.0,(len-j-1)*1.0);
                 //printf("%lf
    ",num);
                 comp+=(int)num;
                 //printf("%d
    ",comp);
            }
            if(comp_sym=='-')
            {
                 int move=comp-1;
                 if(data_sym=='-')
                    printf("-"); 
                 printf("0.");
                 for(int i=0;i<move;i++)
                   printf("0");
                 for(char *p=str+1;p!=e;p++)
                 {
                    if(*p!='.')
                      printf("%c",*p);
                 }
                 printf("
    ");
            }
            else
            {
                int digit= e-point-1;
                int j=-1;
                bool b=false;
                //printf("%d %d",digit,comp);
                if(data_sym=='-')
                  printf("-");
                if(digit>comp)
                {
                   for(char *p = str+1;p!=e;p++)
                   {
                      if(*p!='.')
                      {
                         printf("%c",*p);
                      }
                      else
                      {
                          b=true;
                      }
                      if(b)
                      {
                         j++;
                         if(j==comp)
                           printf(".");
                      }
                   }
                   printf("
    ");
                }
                else
                {
                    int move=comp-digit;
                    for(char *p=str+1;p!=e;p++)
                    {
                     if(*p!='.')
                       printf("%c",*p);
                    }
                    for(int i=0;i<move;i++)
                      printf("0");
                    printf("
    ");
                }
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    VSS與CSV區別
    办公室中节约时间
    C#中用Smtp發郵件
    关于分层结构的感悟(轉)
    Visual Studio.Net 技巧(轉)
    常用數據庫訪問方式比較
    Winows部署中一些內容說明
    适配器模式(Adapter Pattern)(轉)
    Vistual Studio 2005 sp1補丁的詳細內容
    感情 程序 祭 【转】
  • 原文地址:https://www.cnblogs.com/championlai/p/3946805.html
Copyright © 2011-2022 走看看