您的位置:首页 > 其它

洛谷P1553 数字反转(升级版)

2016-07-08 16:34 363 查看
这个题目要判断多种情况。
尤其注意的是,小数点后面的数如果是00XXX,则要输出XXX而不是XXX00。还有,如果只剩下一个0了,请不要吃掉它。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char num[10010];

void fz(int start,int end,int isdend){
int flag=0,detot=0;
if(isdend==1){
for(int i=start;i<end;i++){
if(flag==0 && num[i]=='0'){
if(i==end-1){
cout<<num[i];
}
}
else if(flag==0 && num[i]!='0'){
flag=1;
num[detot]=num[i];
detot++;
}
else{
num[detot]=num[i];
detot++;
}
}
for(int i=detot-1;i>=0;i--){
cout<<num[i];
}
}
else{
for(int i=start-1;i>=end;i--){
if(flag==0 && num[i]=='0'){
if(i==end){
cout<<num[i];
}
}
else if(flag==0 && num[i]!='0'){
flag=1;
cout<<num[i];
}
else{
cout<<num[i];
}
}
}
}
int main(){
cin>>num;
int dot=-10,pcent=-10,chu=-10,flag=0;
for(int i=0;i<strlen(num);i++){
if(num[i]=='.'){
dot=i;break;
}
else if(num[i]=='%'){
pcent=i;break;
}
else if(num[i]=='/'){
chu=i;break;
}
}
if(dot!=-10){
fz(dot,0,0);
cout<<".";
fz(dot+1,strlen(num),1);
}
else if(pcent!=-10){
fz(pcent,0,0);
cout<<"%";
}
else if(chu!=-10){
fz(chu,0,0);
cout<<"/";
fz(strlen(num),chu+1,0);
}
else{
fz(strlen(num),0,0);
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  洛谷