TKYHX @ 2019-10-06 18:20:58
#include<stdio.h>
#include<string.h>
int main(){
int i,n,t,j,m=0,g=0;
char s[11],a[11];
scanf("%s", s);
n = strlen(s);
if(s[0] != '-'){
for(i = 0;i<n/2;i++){
for(j = 1;;j++){
if(s[n-i-j]!=0){
t = s[n-i-j];
s[n-i-j] = s[i];
s[i] = t;
break;
}
}
}
}
else{
for(i = 0;i<(n/2);i++){
for(j = 1;;j++){
if(s[n-i-j]!=0){
t = s[n-i-j];
s[n-i-j] = s[i];
s[i] = t;
break;
}
}
}
}
if(s[n-1]!='-'){
for(i=0;i<n;i++){
if(s[i]!='0'){
g = i;
break; }
}
for(;g<n;g++){
a[m] = s[g];
m++;
}
}
if(s[n-1] == '-'){
a[0] = '-';
m++;
for(i = 0;i<n;i++){
if(s[i]!='0'){
g = i;
break;
}
}
for(;g<n;g++){
if(s[g]=='-'){
break;
}
else{
a[m]=s[g];
m++;
}
}
}
printf("%s", a);
return 0;
}
by TianLuen @ 2019-10-06 18:29:52
@TKYHX 我来看看
by TianLuen @ 2019-10-06 18:32:54
您的前导0去除有误!
by TianLuen @ 2019-10-06 18:39:26
@TKYHX 我给个建议吧,其实,你可以就用
long long
类型。
如果是负数,先输出符号,再用强制类型转换为正数;
其次,利用一个循环完成倒序。
最后输出颠倒后的数据。
by TianLuen @ 2019-10-06 18:46:02
以下为我的代码,以供参考。
#include<bits/stdc++.h>
using namespace std;
int main()
{
long c=0;//输入的数据
unsigned long a=0;//绝对值后的数据
bool _=0;//判断前导0
cin>>c;
a=abs(c);//我使用绝对值
if(a!=0)//特判数据为0
{
if(c<0)cout<<"-";//符号
while(a!=0)
{
if(a%10!=0)_=1;//从第1个非0的数字开始输出
if(_)cout<<a%10;//输出
a/=10;//不断减少
}
return 0;
}
cout<<0;//也是特判
return 0;
}
by ldto @ 2019-10-11 13:12:38
很简单
by ldto @ 2019-10-11 13:12:47
var s:ansistring; bz:boolean; i:longint; begin readln(s); if s[1]='-' then write('-'); bz:=false; for i:=length(s) downto 1 do begin if s[i]<>'0' then bz:=true; if(bz)and(s[i]<>'-')then write(s[i]); end; end.
by ldto @ 2019-10-11 13:13:04
读一个字符串
by ldto @ 2019-10-11 13:14:01
前导零一判断完就输出就好了
by awa再也不水贴 @ 2019-11-10 11:19:43
@ldto 希望更丰富的展现?使用Markdown(滑稽)
by ldto @ 2019-11-14 12:29:05
@xiaojie233a 打的时候傻逼了......