c语言逆序输出数字问题

逆序输出数字,
输入-890 输出为-98
输入0 输出为0
输入75 输出为57
代码运行出现如下问题,是什么原因?

img


#include<stdio.h>
int main()
{
    int number[11],i=10,j;
    scanf("%d",number);
    while(number[i]=='\0'||number[i]=='0')
    i--;
    if(i<0)
    printf("0");
    else
    {
        if(number[0]=='-')
        {
            printf("-");
            for(j=i;j>0;j--)
                 printf("%d",number[j]);
        }
        else
        {
            for(j=i;j>=0;j--)
            printf("%d",number[j]);
        }
    }
    return 0;
}

供参考:

#include<stdio.h>
int main()
{
    int n = 0,  number;
    scanf("%d", &number);
    while (number){
        n = n * 10 + number % 10;
        number /= 10;
    }
    printf("%d", n);
    return 0;
}

scanf不会把输入字符分别放到数组各元素中。你可以用整除、取模的方式取每一位,然后逆序输出

系统不会按你的想法把你输入的数字拆开每一位存入数组number中,而且把整个数字存入number[0]中。建议用循环求模的方法处理你的问题。如果再要求顺序输出,那可能就要用到函数递归了。希望能帮到你。