#t213. 反向输出一个三位数

反向输出一个三位数

反向输出一个三位数

题目描述

将一个三位数反向输出。

输入格式

一个三位数 nn。

输出格式

反向输出 nn。

样例输入

100

样例输出

001

提示

一、取个位:% 10

一个整数对 10 取余,余数就是它的个位:

352 % 10 = 2

二、去掉个位:/ 10

整数除法会把小数部分丢掉,所以除以 10 相当于把个位删掉:

352 / 10 = 35

三、两个动作配合,就能一位一位拆

以 352 为例,把两个动作串起来:

int n = 352;
int ge  = n % 10;            // 2       直接取个位
int shi = n / 10 % 10;       // 35 % 10 = 5   先去掉个位,再取新的个位
int bai = n / 100 % 10;      // 3 % 10 = 3    去掉后两位,再取
printf("%d %d %d\n", bai, shi, ge);   // 3 5 2

规律:第 k 位(从右往左数,个位是第 1 位)等于 n / 10^(k-1) % 10。

拆出来的每一位先存进变量,之后想怎么用都行(按原顺序输出、倒序输出、拼成新数……),这一步才是题目要你决定的。

四、常见错误

  • 用 / 取个位:352 / 10 = 35,不是个位。
  • 忘了整数除法会截断,以为 352 / 10 是 35.2。
  • 位数算错:三位数的百位是 /100,不是 /1000。

五、自检

把拆出来的各位按原顺序拼回去,应该等于原数:3*100 + 5*10 + 2 == 352。

  • 用上面两个动作,依次取出个位、十位、百位。
  • 按「个位、十位、百位」的顺序用 %d 逐个输出,中间不要加空格或换行。
  • 注意样例 100 → 001:前导零必须保留,所以不能把数字反过来当整数输出。

自查:如果输出是 1,说明你是按整数输出的,前导零丢了;用 100 和 120 各测一次。