2025-03-06 学习记录--C/C++-PTA 习题6-6 使用函数输出一个整数的逆序数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
二、代码(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;
}