码迷,mamicode.com
首页 > 其他好文 > 详细

PAT-1073-Scientific Notation

时间:2014-08-30 21:34:19      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   for   art   div   log   on   c   

#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\n",num);
             comp+=(int)num;
             //printf("%d\n",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("\n");
        }
        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("\n");
            }
            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("\n");
            }
        }
    }
    return 0;
}

  

PAT-1073-Scientific Notation

标签:blog   io   ar   for   art   div   log   on   c   

原文地址:http://www.cnblogs.com/championlai/p/3946805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!