题目要求是:给定一个整数,将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例)。C语言
时间: 2024-12-17 20:32:39 浏览: 9
题目描述要求编写一个C语言程序,接受一个整数作为输入,然后将其每一位数字反转,同时保证结果是一个非零的正常整数。以下是解决这个问题的一个基本思路:
```c
#include <stdio.h>
#include <string.h>
// 函数用于反转整数各位并处理首位非零条件
int reverseInteger(int num) {
int reversed = 0;
int sign = (num < 0) ? -1 : 1; // 获取正负标志
// 反转每一位数字并检查第一位是否为0
while (num != 0) {
int digit = abs(num % 10); // 取出最后一位数字
if (reversed == 0 || reversed >= 10 - digit) { // 如果首位不是0 或者当前位较大
reversed *= 10; // 将当前位左移一位
}
reversed += digit; // 添加到反转后的数上
num /= 10; // 移除最低位
}
return reversed * sign; // 最终结果加上正负号
}
int main() {
int input;
printf("请输入一个整数: ");
scanf("%d", &input);
int result = reverseInteger(input);
printf("反转后的整数为: %d\n", result);
return 0;
}
```
在这个C程序中,`reverseInteger`函数接收一个整数,通过循环依次取出每个数字,判断是否需要调整高位的值以避免首位变成0,然后按顺序添加到新的反转数上。注意,输入的0会直接返回0,因为题目的要求。
阅读全文