EgoStrip @ 2024-01-10 13:41:35
我的思路是用字符串读入再倒序输出,正、负数和0进行判断,对于数字中间的0,将其转换为其他符号 , 输出时再化成0,不知道问题在哪,求debug。
**#include<iostream>
#include<string>
using namespace std;
int main(){
string n;
cin>>n;
for(int i=0;i<n.size();i++){
if(n[i]=='0'&&n[i-1]!='0'&&n[i+1]!='0'&&i!=n.size()-1){
n[i]='&';//对于中间的0转化为&
}
}
if(n[0]=='-'){//对于负数的输出
cout<<'-';
for(int i=n.size()-1;i>0;i--){
if(n[i]=='0'){
continue;
}
else if(n[i]=='&'){
cout<<0;
}
else{
cout<<n[i];
}
}
}
else if(n[0]=='0'){//对于0的输出
cout<<'0'<<endl;
return 0;
}
else{//对于正数的输出
for(int i=n.size()-1;i>=0;i--){
if(n[i]=='0'){
continue;
}
else if(n[i]=='&'){
cout<<'0';
}
else{
cout<<n[i];
}
}
}
return 0;
}**
by Dtw_ @ 2024-01-10 14:04:32
显然你 if(n[i]=='0'&&n[i-1]!='0'&&n[i+1]!='0'&&i!=n.size()-1)
是不行的,比如所 1002
,你的输出是 21
,但应该是 2001
,而且输出的时候比如 21000
你应该定义一个变量如果他输出了非0
的数字了,那你就可以输出0
了,我把你的改了改
#include<iostream>
#include<string>
using namespace std;
int main(){
string n;
cin>>n;
if(n[0]=='-'){//对于负数的输出
cout<<'-';
int res = 0;
for(int i=n.size()-1;i>0;i--){
if(n[i]=='0' && res){
continue;
}
else{
res++;
cout<<n[i];
}
}
}
else if(n[0]=='0'){//对于0的输出
cout<<'0'<<endl;
return 0;
}
else{//对于正数的输出
int res = 0;
for(int i=n.size()-1;i>=0;i--){
if(n[i]=='0'&&res){
continue;
}
else{
res++;
cout<<n[i];
}
}
}
return 0;
}
by Dtw_ @ 2024-01-10 14:06:38
@EgoStrip,代码贴错了,应该是这个
#include<iostream>
#include<string>
using namespace std;
int main(){
string n;
cin>>n;
if(n[0]=='-'){//对于负数的输出
cout<<'-';
int res = 0;
for(int i=n.size()-1;i>0;i--){
if(n[i]=='0' && !res){
continue;
}
else{
res++;
cout<<n[i];
}
}
}
else if(n[0]=='0'){//对于0的输出
cout<<'0'<<endl;
return 0;
}
else{//对于正数的输出
int res = 0;
for(int i=n.size()-1;i>=0;i--){
if(n[i]=='0'&&!res){
continue;
}
else{
res++;
cout<<n[i];
}
}
}
return 0;
}
by Dtw_ @ 2024-01-10 14:07:01
@EgoStrip
by EgoStrip @ 2024-01-12 18:30:15
@WA_QJ 感谢感谢