#include<iostream>
#include<string>
#include<cstring>
#include<stdio.h>
using namespace std;
int main(){
char a[101];
while(cin>>a){
int s=strlen(a);
char b[101];
bool g=true;
if(a[0]=='1'){
int k=0;
for(int i=1;i<s;i++){
if(a[i]=='1'){
b[k++]='0';
}
else {
b[k++]='1';
}
}
cout<<b<<endl;
for(int i=s-2;i>=0;i--){//-2ÊÇÒòΪÊý×鿪ͷºÍÉÏÃæÉ¾µôµÄÊ׸öÔªËØ
if(b[i]=='1'&&g==true){
b[i]='0';
}
else if(a[i]=='0'&&g==true){
b[i]='1';
g=false;
}
}
cout<<"1"<<b<<endl;
}
else{
cout<<a<<endl;
}
}
}
这是怎么回事呢?前面还好好的
b[0]没赋值,下面加1的循环里面应该是从s-1开始
#include<iostream>
#include<string>
#include<cstring>
#include<stdio.h>
using namespace std;
int main(){
char a[101];
while(cin>>a){
int s=strlen(a);
char b[101];
bool g=true;
b[0]=a[0];
int k=0;
for(int i=1;i<s;i++){
if(a[i]=='1'){
b[k++]='0';
}
else {
b[k++]='1';
}
}
b[k] = '\0';
cout<<b<<endl;
for(int i=s-1;i>0;i--){
if(b[i]=='1'&&g==true){
b[i]='0';
}
else if(a[i]=='0'&&g==true){
b[i]='1';
g=false;
break;//结束循环
}
}
cout<<b<<endl;
//}
//else{
// cout<<a<<endl;
//}
}
}