http://acm.hdu.edu.cn/showproblem.php?pid=1266
Reverse Number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5182 Accepted Submission(s): 2412
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.
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
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];
int T,n,m,i,j,k;
scanf("%d",&T);
getchar();//注意要在这里加吸收换行符,避免gets()吸收换行
while(T--)
{
memset(s,'\0',sizeof(s));
gets(s);
n=strlen(s);
for(i=n-1,m=0;i>0;i--)
if(s[i]=='0') m+=1;//数字后边有m个零
else break;//跳出后,s[i]是不是零的最高位
if(s[0]=='-')
{//若为负数时
printf("-");//先输出负号
for(j=i;j>0;j--)//再从i往前输出s[],输到s[1]位
printf("%c",s[j]);
for(j=0;j<m;j++)//最后输出m个0
printf("0");
}
else
{//如果为正数时
for(j=i;j>=0;j--)//再从i往前输出s[],输到s[0]位
printf("%c",s[j]);
for(j=0;j<m;j++)//最后输出m个零
printf("0");
}
printf("\n");
}
return 0;
}