输入十进制整数输出其八进制和十六进制
时间: 2024-10-25 15:14:40 浏览: 38
要将十进制整数转换为八进制或十六进制,你可以使用C语言中的库函数。对于八进制,可以使用`itoa()`函数(不过这个函数并不标准,有些编译器可能不支持),如果要用标准C库,可以通过循环和除法运算实现。对于十六进制,通常推荐使用`printf()`函数结合`%x`或`%X`格式说明符。
以下是一个简单的例子,展示了如何使用`itoa()`函数将十进制转换为八进制:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int decimal_num = 123; // 输入十进制数字
char octal_str[50];
// 使用非标准的itoa()
itoa(decimal_num, octal_str, 8);
printf("Octal representation: %s\n", octal_str);
return 0;
}
```
如果你不能使用`itoa()`,这里是一个手动转换的例子(仅适用于十位及以内):
```c
void dec_to_oct(int num) {
char octal[10] = {0}; // 初始化数组以容纳八进制数
int i = 7;
while (num > 0) {
octal[i--] = num % 8 + '0'; // 取余并转换成字符
num /= 8; // 向左移位
}
if (octal[0] == 0) {
octal[0] = '0'; // 如果结果只有一位,添加前导零
}
printf("Octal representation: ");
for (int j = 7; j >= 0; j--) {
printf("%c", octal[j]);
}
printf("\n");
}
int main() {
int decimal_num = 123;
dec_to_oct(decimal_num);
return 0;
}
```
对于十六进制,使用`printf()`更简单:
```c
int main() {
int decimal_num = 123;
printf("Hexadecimal representation: %x\n", decimal_num); // %X也可以,区别在于大写和小写字母
return 0;
}
```
阅读全文