#t213. 反向输出一个三位数
反向输出一个三位数
反向输出一个三位数
题目描述
将一个三位数反向输出。
输入格式
一个三位数 。
输出格式
反向输出 。
样例输入
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各测一次。