将一位数的每一位逆序输出

发布时间 2023-03-28 22:41:12作者: codels

将一个数的每一位逆序输出

首先需要一个变量来存储这个数

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;
}

分析