题目

从标准输入读入一个非负整数 n,将其各个十进制数位逆序输出。

输入格式:一行输入一个非负整数 n。

输出格式:输出逆序后的数字序列,末尾换行。

数据范围与约定:0 ≤ n ≤ 2×109。

思路与算法

1. 取模与整除
通过 n % 10 取出当前个位数直接打印,然后通过 n /= 10 截断个位,循环直到 n 为 0。

2. 独立处理 0
如果初始输入为 0,普通的 while (n > 0) 无法进入循环,需使用 do-while 保证数字 0 能被正确输出一位。

完整程序

#include <stdio.h>

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1) {
        return 1;
    }

    if (n == 0) {
        printf("0\n");
        return 0;
    }

    // 通过 % 10 逐位提取最低位打印,并通过 / 10 截断低位
    while (n) {
        printf("%d", n % 10);
        n /= 10;
        // 若后续还有数字,输出空格分隔
        if (n) {
            putchar(' ');
        }
    }
    putchar('\n');
    return 0;
}

运行示例

输入:

1234

输出:

4 3 2 1