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 谢谢了