C语言实例_21之逆序输出多位整数

1. 题目

给定一个不多于5位的正整数,完成以下两个要求:

  1. 求出该正整数是几位数。
  2. 逆序打印出该正整数各位数字。

2. 分析

  • 求位数分析
    • 可以通过不断除以10的方式,直到该数变为0,记录除的次数,这个次数就是该数的位数。例如,对于数字123,第一次除以10得到12,第二次除以10得到1,第三次除以10得到0,共除了3次,所以123是三位数。
  • 逆序打印分析
    • 同样利用除以10取余数的方式,每次得到的余数就是当前位的数字,将这些余数依次打印出来就能实现逆序打印各位数字。比如对于数字123,先取余数得到3,然后将原数除以10得到12,再取余数得到2,继续除以10得到1,取余数得到1,这样依次打印出3、2、1就实现了逆序打印。

3. 实例代码

实现方式一:直接操作法

#include <stdio.h>

int main() {
    int num;
    printf("请输入一个不多于5位的正整数:");
    scanf("%d", &num);

    int count = 0;
    int temp = num;

    // 求位数
    while (temp!= 0) {
        temp /= 10;
        count++;
    }

    printf("该数是 %d位数。\n", count);

    // 逆序打印各位数字
    printf("逆序打印各位数字:");
    while (num!= 0) {
        int remainder = num % 10;
        printf("%d", remainder);
        num /= 10;
    }
    printf("\n");

    return 0;
}

实现方式二:利用数组存储法

#include <stdio.h>

int main() {
    int num;
    printf("请输入一个不多于5位的正整数:");
    scanf("%d", &num);

    int digits[5];
    int count = 0;
    int temp = num;

    // 将各位数字存入数组并求位数
    while (temp!= 0) {
        digits[count] = temp % 10;
        temp /= 10;
        count++;
    }

    printf("该数是 %d位数。\n", count);

    // 逆序打印各位数字
    printf("逆序打印各位数字:");
    for (int i = 0; i < count; i++) {
        printf("%d", digits[i]);
    }
    printf("\n");

    return 0;
}

4. 输出结果

请输入一个不多于5位的正整数:1234
该数是 4位数。
逆序打印各位数字:4321
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FreeLikeTheWind.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值