zoukankan      html  css  js  c++  java
  • P1553 数字反转(升级版)

    P1553 数字反转(升级版)

    温馨提示

    1.在处理小数的时候注意处理末尾的0,反转后末尾不得有多余的0

       (判断的时候 s[ i ] ! = ' 0 '  判断的是字符)

    2.处理小数和分数的时候,要符号前后分别输出,

       flag标记了一次之后,下一次再用就要换一个值了

    代码

    #include<bits/stdc++.h>
    
    using namespace std;
    
    char s[100],ss[15];
    int kind=1,w1,w2,flag=0,n=0,k;
    
    int main()
    {
        gets(s);
        for(int i=0;s[i];i++)
        {
            if(s[i]=='.') { kind=2; w1=i-1; w2=i+1; break; }
            if(s[i]=='/') { kind=3; w1=i-1; w2=i+1; break; }
            if(s[i]=='%') { kind=4; break; }
        }
        
        switch(kind)
        {
            case 1 : 
               for(int i=strlen(s)-1;i>=0;i--)
               {
                     if(s[i]!='0')
                  {
                      flag=1;
                      cout<<s[i];
                  
                  }
                  if(flag&&s[i]=='0')
                    cout<<s[i];
                  if(i==0&&s[i]=='0')
                    cout<<s[i];
               }
                break;
                  
            case 2:
                for(int i=w1;i>=0;i--)
                {
                  if(s[i]!='0')
                  {
                      flag=1;
                      cout<<s[i];
                  }
                  if(flag&&s[i]=='0')
                    cout<<s[i];
                  if(i==0&&s[i]=='0')
                    cout<<s[i];
                }
                cout<<".";
                n=w2;
                for(int i=w2;i<=strlen(s)-1;i++)
               {
                     if(s[i]!='0')
                  {
                      flag=2;
                      continue;
                  }
                  if(flag!=2&&s[i]=='0'&&i!=(strlen(s)-1))
                  n++;
               }
               for(int i=strlen(s)-1;i>=n;i--)
                 cout<<s[i];
                  break;
                    
            case 3:
                for(int i=w1;i>=0;i--)
                {
                  if(s[i]!='0')
                  {
                      flag=1;
                      cout<<s[i];
                  }
                  if(flag&&s[i]=='0')
                    cout<<s[i];
                  if(i==0&&s[i]=='0')
                    cout<<s[i];
                }
                cout<<"/";
                for(int i=strlen(s)-1;i>=w2;i--)
               {
                     if(s[i]!='0')
                  {
                      flag=2;
                      cout<<s[i];
                  }
                  if(flag==2&&s[i]=='0')
                    cout<<s[i];
                  if(i==w2&&s[i]=='0')
                    cout<<s[i];
                  
               }
                  break;
            default:
                for(int i=strlen(s)-2;i>=0;i--)
               {
                     if(s[i]!='0')
                  {
                      flag=1;
                      cout<<s[i];
                  }
                  if(flag&&s[i]=='0')
                    cout<<s[i];
                  if(i==0&&s[i]=='0')
                    cout<<s[i];
               }
               cout<<"%"; 
        }
        
    }
  • 相关阅读:
    sql日期操作
    用户活跃状态模型
    R基于Bayes理论实现中文人员特性的性别判定
    python的一点小常识
    [工作技能]SVN
    北大计算所词性标注集简表
    c++ boost 汉字和模式串混用的例子
    SVN文本文件报二进制属性的问题
    我的R代码备份
    FaceBook Twitter实习生简历求内推
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10959881.html
Copyright © 2011-2022 走看看