尽管逻辑正确,输出仍然是错误的

时间:2017-08-30 16:05:03

标签: c reverse

反转五位数字。

#include<stdio.h>
#include<conio.h>

int main()
{
    int a, l1, l2, l3, l4, l5, m1, m2, m3, m4;
    clrscr();

    printf("Enter a number: ");
    scanf("%d",&a);

    l1 = a  % 10;
    m1 = a  / 10;
    l2 = m1 % 10;
    m2 = m1 / 10;
    l3 = m2 % 10;
    m3 = m2 / 10;
    l4 = m3 % 10;
    m4 = m3 / 10;
    l5 = m4 / 10;

    printf("\n%d%d%d%d%d", l1, l2, l3, l4, l5);
    getch();
    return 0;
}

我认为逻辑是正确的,但输出仅用于输入12345,并为其他输出提供负数。

2 个答案:

答案 0 :(得分:0)

根据我的判断,这里的逻辑存在一些问题,而不是使用10执行模块进行最后一位数的整数除法,或者只是按原样打印

l5=m4/10;

更改为

l5=m4%10;

答案 1 :(得分:0)

你被允许使用循环吗?尝试这样的事情:

int main ()
{
    int nb;
    int res = 0;
    int if_negative = 1; 

    printf ("%s\n", "Enter number: ");
    scanf ("%d", nb);
    if (nb < 0)                //check if negative
    {
        if_negative = -1;
        nb *= -1;
    }
    while (nb != 0)
    {
        res = res * 10 + (nb % 10);   //build up the answer
        nb /= 10;
    }
    res *= if_negative; 
    ****    // the rest of your code
}