给出一个正整数,要求倒着输出这个整数。例如输入123,则输出为321。
对于这样的题目,就需要取余和除法。
#include<stdio.h>
int main(){
int x;
int a;
int b=0;
scanf("%d",&x);
while(x>0){
a=x%10; //取余得到最后一位数
printf("%d",a); //打印出那个数
//b=b*10+a;
x/=10;
}
return 0;
}
拿123来举例,第一次循环,123%10=3,a=3,输出3,123/10=12。第二次循环,12%10=2,a=2,输出2,12/10=1。第三次循环,1%10=1,a=1,输出1,1/10=0,循环结束。最终结果输出32。
为什么选择每循环一次就打印一个数字而不是等循环结束后就直接打印b呢?
若选择打印b,输入123确实可以输出321,但如果输入是800,则输出的是8。原因在于初始化b为0;在第一次循环时,a=0,b=0。第二次循环时,a=0,b=b+a=0+0=0。第三次循环时,a=8,b=b+a=0+8=8,最终结果会输出8。所以最好是得到一个数就输出一个数。