Reverse Number
Problem Description
Welcome to 2006’4 computer college programming contest!
Specially, I give my best regards to all freshmen! You are the future of HDU ACM! And now, I must tell you that ACM problems are always not so easy, but, except this one… Ha-Ha!
Give you an integer; your task is to output its reverse number. Here, reverse number is defined as follows:
1. The reverse number of a positive integer ending without 0 is general reverse, for example, reverse (12) = 21;
2. The reverse number of a negative integer is negative, for example, reverse (-12) = -21;
3. The reverse number of an integer ending with 0 is described as example, reverse (1200) = 2100.
Input
Input file contains multiple test cases. There is a positive integer n (n<100) in the first line, which means the number of test cases, and then n 32-bit integers follow.
Output
For each test case, you should output its reverse number, one case per line.
Sample Input
3
12
-12
1200
Sample Output
21
-21
2100
代码1:
# include <iostream>
# include <cstdio>
# include <algorithm>
# include <cstring>
using namespace std;
void f(char *p,int i,int j);
int main(){
char st[100];
int i,j,len;
int n,m;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++){
memset(st,0,sizeof(st));
scanf("%s",st);
if(st[0]!='-'){
len = strlen(st);
j= len - 1;
while(st[j]=='0'&&j!=0) j--;
f(st,0,j);
}else{
len = strlen(st);
j= len - 1;
while(st[j]=='0'&&j!=0) j--;
f(st,1,j);
}
printf("%s\n",st);
}
}
return 0;
}
void f(char *p,int i,int j){
char t;
int n=(i+j)/2;
while(i<=n){
t = p[i];
p[i] = p[j];
p[j] = t;
i++;
j--;
}
}
代码2:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
_int64 x,t,flag;
int count=0;
cin>>x;
t=0;
flag=0;
if(x<0)
{
x=-1*x;
flag=1;
}
while(x>0)
{
t=t*10+x%10;
x/=10;
if(!t)
count++;
}
if(flag)
cout<<'-';
cout<<t;
while(count--)
{
cout<<0;
}
cout<<endl;
}
return 0;
}