反转最后一个零的数字

时间:2014-12-20 13:51:01

标签: c

reverse = reverse * 10;
reverse = reverse + (n % 10);
n = n / 10;

这会打印51而不是051

为了将输出设为051,需要在逻辑中进行哪些更改?

5 个答案:

答案 0 :(得分:1)

如果您想将whole reverse number存储在one place中,只需使用如下数组:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n=15000;
    char reverse[11]; // change the array size depending on integer value type
    int ind=0;
    while(n)
    {
        int digit = n%10;
        reverse[ind++] = digit + '0';
        n = n / 10;
    }
    reverse[ind]='\0';
    printf("%s\n",reverse);

    // If you want the decimal value you can simply do this
    int decimal_val=atoi(reverse);
    printf("%d\n",decimal_val);
    return 0;
}

如果你想使用字符串函数,可以有另一种方法:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int n = 3505000;
    char rev[15];
    itoa(n,rev,10);
    strrev(rev);
    puts(rev);
}

此处itoa(number, target_string, number_base) //此处n是十进制数字,因此base=10
strrev()反转字符串。

答案 1 :(得分:0)

我认为你正在寻找类似的东西:

#include <stdio.h>

int main () {

    int number = 150, temp = number, digit;

    while(temp != 0) {
        digit = temp%10;
        temp = temp /10;
        printf("%d", digit);
    }

    return 0;
}

答案 2 :(得分:0)

使用

 while(num)
 {
  printf("%d\n",num%10);
  num/=10;
 }

撤消名为int的{​​{1}}变量。或者您可以使用以下内容(@chux建议),当num为0时,将打印至少0:

num

这也会打印零。但我认为你需要存储在变量中的数字的反转。简而言之,你不能这样做,因为051不是十进制数。它是一个八进制数当单位所在的数字为0时,请打印 do { printf("%d\n",num%10); num/=10; }while(num); 。以下程序执行此操作:

0

答案 3 :(得分:0)

此反向功能通过out-param psz跟踪号码的大小。

因此,对于510的测试输入,返回值为15*psz = 3,可以轻松打印015

int reverse(int input, int* psz)
{
    int output = 0;

    *psz = 0;
    while(input)
    {
        output *= 10;
        output += (input % 10);
        input /= 10;
        (*psz)++;
    }

    return output;
}

int main()
{
    int input = 510;
    int sz;

    int out=reverse(input, &sz);

    printf("%0*d\n", sz, out);   // Output: 015

    return 0;
}

答案 4 :(得分:0)

这可以是另一种方式:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int n=15000;
    char reverse[15];
    itoa(n,reverse,10); // Here 10 is the base. Means decimal number
    strrev(reverse);
    printf("%s\n",reverse);
    return 0;
}