程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
#include<stdio.h>
int main(){int x,a,b,c,d,sum;scanf("%d",&x);a=x%10;b=x/100;c=x%100;d=c/10;sum=a*100+b+d*10;printf("%d",sum);return 0;}
分析:
这段代码的目的是读取一个整数x
,并基于这个整数的各个数字位上的数值重新组合并求和,最后输出这个和。
以下是代码的思路总结和解题思路:
-
变量定义:
x
: 存储用户输入的整数。a
,b
,c
,d
: 分别用于存储x
的个位、百位、十位和个位。sum
: 用于存储重新组合后的数字的和。
-
输入:
- 使用
scanf
函数读取用户输入的整数x
。
- 使用
-
计算:
a=x%10;
: 通过取模操作获取x
的个位数。b=x/100;
: 通过整数除法获取x
的百位数。c=x%100;
: 通过取模操作获取x
的十位数。d=c/10;
: 通过整数除法获取x
的个位数(这里可能有个逻辑错误,因为c已经是十位数,所以这一步其实没有意义)。sum=a*100+b+d*10;
: 根据重新组合的原则,计算总和。例如,如果输入是123,则计算过程为:a=3, b=2, c=12, d=12/10=1.2(但这里取整数为1)。所以sum=300+2+10=312。
-
输出:
- 使用
printf
函数输出重新组合后的数字的和。
- 使用
-
返回值:
return 0;
: 表示程序正常结束。
需要注意的是,代码中存在一个逻辑错误:d=c/10;
这一步是多余的,因为c
已经是十位数。正确的逻辑应该是直接使用c
的值进行后续的计算。