求调只有sub2对了

P1307 [NOIP2011 普及组] 数字反转

future666 @ 2024-09-22 12:45:33

#include<bits/stdc++.h>
using namespace std;
int flag,l,cnt;
char n[12];
int main(){
    while(cin>>n[cnt++]);
    for(int i=0;i<cnt;i++){
        if(n[i]=='-') flag=1;
        if(n[i]=='0') l++;
        if(n[i]!='0'&&n[i]!='-'&&n[i-1]==0) l=0;
    }
    cnt-=l;
    for(int i=cnt-1;i>=flag;i--){
        if(flag){
            cout<<"-";
            flag=0;
        }
        else cout<<n[i];
    }
    return 0;
}

by sjbyw @ 2024-09-26 18:31:36

@future666


by sjbyw @ 2024-09-26 18:49:54

#include <bits/stdc++.h>
using namespace std;
int flag, l, cnt;
bool _0 = true,_flag=true;//_0判断0是否在末尾,_flag判断负号
char n[12];

int main() {
    while (cin >> n[cnt++]);
    cnt--;//你这里多加了1,要减去
    if(cnt==1&&n[0]=='0'){//零要特判
        cout<<0;
        return 0;
    }
//  if (n[0] == '-'){//判断负号最好
//      cout<<"-";
//      flag = 1;
//  }
    for (int i = cnt - 1; i >= flag; i--) {
        if(n[i]=='-'){
            flag=1;
        }
        if (n[i] == '0' && _0 == true)
            l++;
        if (n[i] != '0')
            _0 = false;
    }
    cnt -= l;
    for(int i=cnt-1;i>=flag;i--){
        if(flag==1&&_flag==true){
            cout<<"-";
            _flag=false;//flag在循环内不可改变
        }
        cout<<n[i];
    }
    return 0;
}

by sjbyw @ 2024-09-26 18:51:22

改了,这样更好吧(下面是原写的,很烂

#include <bits/stdc++.h>
using namespace std;
int flag, l, cnt = 0;
char n[12];
bool _0 = true; //_0判断0是否在末尾

int main() {
    while (cin >> n[cnt]) {
        cnt++;
    }
    if(cnt==1&&n[0]=='0'){
        cout<<0;
    }
    if (n[0] == '-') {
        flag = 1;
        cout << "-";
    }
    for (int i = cnt-1; i >=flag; i--) {
        if (n[i] != '0') {
            _0=false;
            cout << n[i];
        }
        if(n[i]=='0'&&_0==false){
            cout << n[i];
        }
    }
    return 0;
}

by future666 @ 2024-09-26 19:23:57

@sjbyw 谢谢了


|