将一个数的每一位逆序输出
首先需要一个变量来存储这个数
int n;
scanf("%d", &n);
然后要得到这个数的每一位,
而且要先输出个位,然后输出十位,然后输出百位……
我们考虑使用循环,
int i;
for (i = 1; i <= n; i *= 10)
printf("%d ", n / i % 10);
把i的初值定为1
然后进入第一次循环,也就是n / 1 % 10,也就是n % 10,得到个位,
第二次循环n / 10 % 10可以得到十位,因为整型数据之间相除结果向下取整,
假如n是123,则 123 / 10之后的结果是12,然后用12 % 10就可以得到十位2了,
第三次循环求得百位
……
然后以此类推,一直到最位。
综上所述
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
int i;
for (i = 1; i <= n; i *= 10)
printf("%d ", n / i % 10); //第一次得到个位,第二次得到十位,第三次得到百位……
return 0;
}
也可以使用递归的方法来解决这个问题
void inversion(int n)
{
if (n != 0) //n一直除以10,直到为0时不满足条件。
{
printf("%d", n % 10); //得到数的最后一位
inversion(n / 10); //每次让n/10,然后n%10得到最后一位
}
else
return;
}
即
#include <stdio.h>
void inversion(int n);
int main(void)
{
int n;
scanf("%d", &n);
inversion(n);
return 0;
}
void inversion(int n)
{
if (n != 0) //n一直除以10,直到为0时不满足条件。
{
printf("%d", n % 10); //得到数的最后一位
inversion(n / 10); //每次让n/10,然后n%10得到最后一位
}
else
return;
}
递归过程简要分析