首页 > ACM题库 > HDU-杭电 > HDU 1266 Reverse Number[解题报告] C++
2013
12-04

HDU 1266 Reverse Number[解题报告] C++

Reverse Number

问题描述 :

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 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.

输出:

For each test case, you should output its reverse number, one case per line.

样例输入:

3
12
-12
1200

样例输出:

21
-21
2100

2011-12-16 12:34:22

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1266

题意:把数字反过来输出,如果末尾有0,保持在末尾。

代码:

# include <stdio.h>
# include <math.h>


void reverse(int n)
{
    if (n == 0) return ;
    printf ("%d", n%10) ;
    reverse(n/10) ;
}


void output(int n)
{
    int zero = 0 ;
    if (n == 0){
        puts ("0") ;
        return ;
    }
    if (n < 0){
        printf ("-") ;
        n = -n ;
    }
    while (n%10 == 0)
    {
        n /= 10 ;
        zero++ ;
    }
    reverse(n) ;
    while (zero--) putchar ('0') ;
    putchar ('\n') ;
}


int main ()
{
    int n ;
    scanf ("%d", &n) ;
    while (~scanf ("%d", &n))
        output(n) ;
    return 0 ;
}