既然有人问,那就写一下。
题目环境
现在,有一个数字x
,我们现在要翻转它得到y
。
解
既然x
与y
互为“相反数”(不是),那么即y
的第n位等于x
的倒数第n位。
思路+核心代码
-
先将
x
的倒数第一位提取出来,赋值给y
的第一位(个位)。y=x%10;
-
下一步,
x
的倒数第二位变成了倒数第一位,也就是去掉了最后一位,这不难联想到除法,即原先的x
缩小到了原来的 1 10 \frac{1}{10} 101;原先的y
从个位变成了十位,也就是原先的y
扩大到了原来的10倍。y=x%10; x/=10; y*=10;
-
循环①、②步,直到
x
=0
。while(x!=0){ y=x%10; x/=10; y*=10; }
但是,这样的话,最后
y
就多乘了一个10,要除回去。
其实,我们可以直接将y*=10;
这一步写到最前面,毕竟第一次循环时,y
的初始值为0
,0乘以任何数都得0。while(x!=0){ y*=10; y=x%10; x/=10; }
到这里,核心代码就结束了。还是把完整代码放出来吧。
完整代码
#include<cstdio>
int x, y;
int main(){
scanf("%d", &x);
while(x!=0){
y*=10;
y=x%10;
x/=10;
}
printf("%d", y);
return 0;
}