把数字当做字符串来处理,设立一前一后两个游标,前游标标记是否是负数,后游标标记连续的0个数。
0MS 228K
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int T, pbegin, pend;
char ch[11];
bool isPos;
scanf("%d", &T);
getchar();
while(T--)
{
gets(ch);
if(ch[0]=='-')
{
isPos=false;
printf("-");
pbegin = 1;
}
else
{
isPos = true;
pbegin = 0;
}
pend = strlen(ch)-1;
for(int j=strlen(ch)-1; j>=0; --j)
{
if(ch[j]=='0')
--pend;
else
break;
}
for(int j = pend; j>=pbegin; --j)
{
printf("%c", ch[j]);
}
for(int i=0; i<strlen(ch)-1-pend; ++i)
printf("0");
printf("\n");
}
return 0;
}
#include<cstdio>
#include<queue>
using namespace std;
int main()
{
int N, num, cnt;
bool isPos = true;
queue<int> inSt;
scanf("%d", &N);
while(N--)
{
cnt = 0;
scanf("%d", &num);
isPos = num >= 0 ? true : false;
if(!isPos)
num = -num;
while(!(num%10))
{
++cnt;
num /= 10;
}
while(num)
{
inSt.push(num%10);
num /= 10;
}
isPos ? 0 : printf("-", num);
while(!inSt.empty())
{
printf("%d", inSt.front());
inSt.pop();
}
while(cnt--)
printf("0");
printf("\n");
}
return 0;
}