其实你这样写不好 建议写个函数 用来反转的,那样代码看上去更简洁
xxs程序猿正在为您改写代码ing,稍等
by HuaJunL @ 2023-06-26 21:09:04
```cpp
#include<bits/stdc++.h>
using namespace std;
string turn(string s,int len,int start) {
string ans="";
int flag=0;
for(int i=len-1; i>=start; i--) {
if(flag==0&&s[i]=='0')continue;
flag=1;
ans+=s[i];
}
if(flag==0)return "0";
return ans;
}
int main() {
string s;//输入的字符串
cin>>s;
int flag=-1;//记录符号的下标
char c;//记录符号
int len=s.length();//长度
for(int i=0; i<len; i++) {
if(s[i]<'0'||s[i]>'9') {
flag=i;
c=s[i];
}
}
if(flag==-1) {
cout<<turn(s,len,0);
return 0;
}
if(c=='%'){
cout<<turn(s,len-1,0)<<c;
return 0;
}
if(c=='.') {
cout<<turn(s,flag,0)<<c;
int k=flag+1;
while(s[k]=='0')k++;
cout<<turn(s,len,k);
return 0;
}
if(c=='/'){
cout<<turn(s,flag,0)<<c<<turn(s,len,flag+1);
}
return 0;
}
```
这是代码 务必不要抄袭 尽量自己打
# **求关注!!!QWQ**
by HuaJunL @ 2023-06-26 21:33:20
@[Darling_Fz](/user/732497)
by HuaJunL @ 2023-06-26 21:33:44
```cpp
#include<bits/stdc++.h>
using namespace std;
string turn(string s,int end,int start) {
string ans="";//表示回答
int flag=0;//去零的标记
for(int i=end-1; i>=start; i--) {
if(flag==0&&s[i]=='0')continue;//相当于排前面的零
//这时候就要问了:如果小数的浮点怎么办?这个是去后面的0,让它反转后保证前面的0要去掉,可是小数点可是还要去反转后那个数字后面的零,到底怎么办呢?
//这个start就是为了限制它反转的空间,等会儿会把小数部分前面的零的下标顶掉
flag=1;
ans+=s[i];
}
if(flag==0)return "0";//如果flag==0,那么说明整个字符串都是零,所以要特判,否则返回的就是空(别问我怎么知道的)
return ans;
}
int main() {
string s;//输入的字符串
cin>>s;
int flag=-1;//记录符号的下标
char c;//记录符号
int len=s.length();//长度
for(int i=0; i<len; i++) {
if(s[i]<'0'||s[i]>'9') {
flag=i;//记录符号的下标
c=s[i];//记录符号
}
}
if(flag==-1) {//说明他是个平平无奇的整数,直接反
cout<<turn(s,len,0);//从零开始,到len结束
return 0;
}
if(c=='%'){//如果是百分数
cout<<turn(s,len-1,0)<<c;//这个的end就要往前压一个,因为最后一个是百分号
return 0;
}
if(c=='.') {//如果是小数(最麻烦)
cout<<turn(s,flag,0)<<c;//首先是输出小数点前面的数字的反转,这个简单,直接0~flag即可
int k=flag+1;//临时记录压缩start的变量
while(s[k]=='0')k++;//表示小数点后面的零的下标都要顶掉
cout<<turn(s,len,k);//从k~len输出即可
return 0;
}
if(c=='/'){
cout<<turn(s,flag,0)<<c<<turn(s,len,flag+1);//这个简单了,直接0~flag和flag+1~len反转就行了
}
return 0;
}
```
新版 有注释
by HuaJunL @ 2023-06-26 21:53:40
@[iamnotsoNB](/user/756988) 谢谢 看懂啦
by Darling_Fz @ 2023-06-27 18:43:06
6
by bcjs @ 2023-07-05 18:28:02