您的位置:首页 > 其它

noip2011普及组复赛——数字反转

2015-07-21 22:30 507 查看


策略:首先这是一道初中题,简单的旋转放入数组,不需太多技巧,粗暴解决。但值得注意的是负号的处理和末尾零的处理,负号可以先省去,结尾再添上,末尾零在倒转后在略去,不多说,上码。

#include <stdio.h>
int main()
{
int n,i=1,a[100];
int t;
int x=0;
//freopen("reverse.in","r",stdin);
//freopen("reverse.out","w",stdout);
scanf("%d",&n);
if(n==0) printf("0");
else
{
if(n<0)            //若是负数,变为正数,并标记
{
n=-n;
x=1;
}
a[0]=0;            //a[0]标记位数
while(1)    //进入循环从末尾换到数组前位,逐个处理,直到n为0,退出循环
{
t=n%10;
n=n/10;
a[i]=t;
a[0]=a[0]+1;
i++;
if(n==0)
break;
}
while(1)
{
if(a[1]==0)
{
for(i=1;i<a[0];i++)        //若转换后前位数为零,将整个数组向前挪一位
{
a[i]=a[i+1];
}
a[0]=a[0]-1;
}
else break;
}
if(x==1) printf("-");
for(i=1;i<=a[0];i++)
{
printf("%d",a[i]);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: