题目
从标准输入读入一个非负整数 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