zoukankan      html  css  js  c++  java
  • PAT Basic Level 1024

    AC代码

      1 #include <stdio.h>
      2 #include <string.h>
      3 int main ()
      4 {
      5     char input[20000];
      6     scanf("%s",&input);
      7     char ret[20000];
      8     char dotmove[5] = {'0','0','0','0','0'};
      9     int i = 0;
     10     int size = 0;
     11     size = strlen(input);
     12     int eposition = 0;       //记录E位置 
     13     for(i = 0;i < size;i++ )  //找到输入中的E 
     14     {
     15         if(input[i] == 'E')
     16         {
     17             break;
     18         }
     19     }
     20     eposition = i;
     21     i++;
     22     int j = 0 ; //指向dotmove 
     23     int mask =1;
     24     while(i < size)
     25     {
     26         dotmove[j] = input[i];
     27         i++;
     28         j++;
     29         mask = mask * 10; 
     30      }
     31      mask = mask / 100;    //因为不包括前面的+-号 
     32      int move = 0;
     33      j = 1;               //dotmove[0]记录了指数的正负号 
     34      while(mask != 0)
     35      {
     36          move = move + mask * (dotmove[j] - '0');
     37          j++;
     38          mask = mask / 10;
     39     }
     40     if(input[0] == '-')
     41     {
     42         printf("-");
     43      } 
     44      if(dotmove[0] == '-')       //情况1 小数点向前移 
     45      {
     46          printf("0.");
     47          move--;
     48         while(move != 0)
     49         {
     50             printf("0");
     51             move--;
     52          } 
     53         for(i = 0;i < eposition;i++)
     54         {
     55             if(input[i] != '+'&&input[i] != '-'&&input[i] != '.')
     56             {
     57                 printf("%c",input[i]);
     58             }
     59         }
     60      }
     61      int flag = 1;           //用于控制清除前导0 ,当为1时警告不输入 
     62      if(dotmove[0] == '+')       //情况2 小数点后移 
     63      {
     64          if(input[1] != '0')          //如果第一个不是0,直接清除警告 
     65          {
     66              flag = 0;
     67          }
     68         if(flag != 1)
     69          printf("%c",input[1]);    //先输出小数点前那个数字 
     70          for(i = 3;i < eposition;i++)
     71         {
     72             if(input[i] != '0')
     73             {
     74                 flag = 0;
     75             }
     76             if(input[i] != '+'&&input[i] != '-'&&input[i] != '.'&&flag != 1)   
     77             {
     78                 printf("%c",input[i]);
     79                 move--;
     80             }
     81             if(move == 0)
     82             {
     83                 if(flag == 1)
     84                 {
     85                     printf("0.");
     86                     flag = 0;
     87                     move--;
     88                 }
     89                 else
     90                 {
     91                     if( i != eposition - 1)
     92                     printf(".");
     93                     move--;
     94                 } 
     95             }
     96             
     97         }
     98         while(move > 0)
     99         {
    100             printf("0");
    101             move--;
    102         }
    103      }
    104     
    105     return 0 ;
    106  } 
  • 相关阅读:
    [EF]vs15+ef6+mysql code first方式
    Asp.net MVC]Asp.net MVC5系列——布局视图
    Asp.net MVC]Asp.net MVC5系列——Routing特性
    Asp.net MVC]Asp.net MVC5系列——Razor语法
    Asp.net MVC]Asp.net MVC5系列——实现编辑、删除与明细信息视图
    Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
    Asp.net MVC]Asp.net MVC5系列——在模型中添加
    Django跨域(前端跨域)
    Stark组件
    Admin组件
  • 原文地址:https://www.cnblogs.com/Ponytai1/p/5976522.html
Copyright © 2011-2022 走看看