首页 > 其他 > 详细

老老实实 greeners'garden 数字反转

时间:2019-11-06 09:09:25      阅读:81      评论:0      收藏:0      [点我收藏+]
#include<iostream>
#include<string>
using namespace std;
int main()
{    
    string s;
    char p=0;                     //放符号。
    int cnt=0;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]>=0&&s[i]<=9)
            cnt++;
        else
        {
            p=s[i];
            break;
        }
    }
    int x=cnt;  //x为符号前面的数(有的话)
    cnt--;
    while(s[cnt]==0&&cnt>0)     //去掉前面数字最后的0,使翻转后不出现前导零。
        cnt--;
    for(int i=cnt;i>=0;i--)
        cout<<s[i];
    if(p==0)                       //分别处理无符号、%、其他符号。
        return 0; 
    else
    {
        if(p==%)
        {
            cout<<p;
            return 0;    
        }
        else
        cout<<p;
    }
    int m=s.size()-1;
    while(s[x+1]==0&&x<m-1)       //使x到m之间两端没有0,使得后面的数翻转后不出现前导零。
        x++;                        //  注意此处的   下标和数字次序关系。
    while(s[m]==0&&m>x+1)
        m--;
    for(int i=m;i>x;i--)
        cout<<s[i];
    return 0;            
}

 

老老实实 greeners'garden 数字反转

原文:https://www.cnblogs.com/poo7/p/11802803.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!