C语言,倒置整数,自己写的程序,但最后结果少一位

输入非负整数N(0≤N≤2147483647),将各位数字倒置后输出
输入200003
输出300002
自己写的少最后以为,求大神指点

img

第7行:for(i=1;i<=n;i=i+1)这里循环判断条件是错误的,改为:for(i=1;n!=0;i=i+1)就可以了。

for中的第二个条件语句i<=n改成n>0

把int类型转换为char*类型 然后把字符串转换成倒置的再转化为int类型

#include <stdio.h>
 
#define ARRAY_LEN 100 /*数组长度*/
 
void numToDigit (int num, int arr[]) { /*将数字按位剥离并存储在数组中,该算法剥离出的每位数即是逆序排列的*/
    int i,j,n;
    for (i = 0, n = num; n>0; i++) {
        arr[i] = n%10; /*除以10取余数,以取出最后一位数字*/
        n = n/10; /*除以10取整数,以丢弃最后一位数字*/
        arr[i+1] = '\0'; /*数组结束符号,便于后续统计位数*/
    }
}
 
int digitCount (int arr[]) { /*统计位数*/
    int i,count;
    for (i = 0, count = 0; arr[i] != '\0'; i++)
        count++;
    return count;
}
 
void printArr (int arr[], int len) { /*打印数组*/
    int i;
    for (i = 0; i<len; i++)
        printf("%d\t",arr[i]);
    printf("\n");
}
 
int main(void) {
    int num,len,arr[ARRAY_LEN];
     
    printf("请输入一个正整数:\n");
    scanf("%d",&num);
    printf ("======================================================\n\n");
 
    printf("每一位数字逆序输出:\n");
    numToDigit (num, arr);
    len = digitCount (arr);
    printArr (arr, len);
     
    return 0;
}