目录

2025-03-06-学习记录-CC-PTA-习题6-6-使用函数输出一个整数的逆序数

2025-03-06 学习记录–C/C++-PTA 习题6-6 使用函数输出一个整数的逆序数

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

https://i-blog.csdnimg.cn/direct/ab8b43bde5ef48a98f2ef77b84541310.png

https://i-blog.csdnimg.cn/direct/f278a8d0b09f4aa1b3379d0d228c82c0.png

二、代码(C语言)⭐️

#include <stdio.h>

int reverse( int number );

int main()
{
    int n;

    scanf("%d", &n);
    printf("%d\n", reverse(n));

    return 0;
}

/* 你的代码将被嵌在这里 */
#include <math.h>
int reverse( int number ) {
    int numArr[100]; // 定义一个数组,用于存储数字的每一位
    int cnt = 0; // 计数器,用于记录数字的位数,初始值为0
    int flag = 0; // 标志位,用于控制是否允许输出,0-不允许,1-允许
    int temp = 0; // 临时变量,用于存储最初的number值
    int result = 0; // 最终结果

    // 如果number是负数,先将其转换成正数进行处理
    if(number < 0) {
        temp = number; // 将未处理的number赋值给临时变量temp
        number *= -1; // 将负数转换成正数
    }

    // 依次将number的个位、十位、百位等数字存入numArr数组中
    while(number != 0) {
        numArr[cnt] = number % 10; // 取出当前最低位的数字
        cnt++; // 计数器加1,记录位数
        number /= 10; // 去掉已经处理的最低位
    }

    // 遍历numArr数组,将数字重新组合成反转后的整数
    for(int i = 0; i < cnt; i++) {
        // 找到第一个不为0的数字后,允许输出处理
        if(numArr[i] !=  0) {
            flag = 1; // 设置标志位为1,允许输出
        }
        // 如果允许输出,则将当前数字乘以相应的10的幂次方并累加到结果中
        if(flag == 1) {
            result += (numArr[i] * pow(10,cnt - i - 1));
        }
    }

    // 如果最初的number是负数,则将结果转换回负数形式
    if(temp < 0) {
        result *= -1;
    }

    // 返回最终的反转结果
    return result;
}

https://i-blog.csdnimg.cn/direct/31461c2bc18449e88631979432db1faa.png

https://i-blog.csdnimg.cn/direct/b81589a483e447d7b90363ce16dea9bc.png