给定一个整数 N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。用C语言解答
时间: 2024-11-13 15:24:28 浏览: 26
在C语言中,你可以通过遍历整数每一位并将其添加到结果字符串开始的位置来实现这个功能。这里是一个简单的步骤说明:
1. 定义一个函数,比如`reverseInteger(int N)`,接收一个整数N作为输入。
2. 创建一个字符串变量来存储反转后的数字,初始化为空字符串`char reversedStr[100];`,考虑到最多有9位数。
3. 使用一个循环从个位(最低位)开始,直到最高位(最左位):
- 计算当前位的值,`int digit = N % 10;`
- 将这个值转换成字符(`digit + '0'`),然后添加到`reversedStr`的开头。
- 更新N,移除最后一位:`N /= 10;`
4. 检查是否需要处理首位为0的情况。如果N为0,说明原数是个位数的0,此时不需要额外处理。如果不是,则添加一个非零的前导零:`if (N > 0) { reversedStr = "0" + reversedStr; }`
5. 最后返回字符串`reversedStr`。
下面是一个示例代码片段:
```c
#include <stdio.h>
#include <string.h>
char* reverseInteger(int N) {
char reversedStr[100] = "";
while (N != 0) {
int digit = N % 10;
reversedStr = (char*) reversedStr + strlen(reversedStr); // 移动指针到字符串末尾
*reversedStr++ = (digit + '0'); // 添加数字到字符串
N /= 10;
}
if (N == 0 && reversedStr[0] == '0') {
reversedStr[0] = '\0'; // 如果是0,去掉首个字符
} else if (N > 0) {
reversedStr = "0" + reversedStr; // 添加前导0
}
return reversedStr;
}
int main() {
int num = 12345;
char* reversed = reverseInteger(num);
printf("Reversed number is: %s\n", reversed);
free(reversed); // 不要忘记释放内存
return 0;
}
```
阅读全文