程序每次读入一个正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
的值进行后续的计算。
?