c语言,十进制转八进制与16进制的小程序
时间: 2024-09-24 16:26:18 浏览: 40
在C语言中,我们可以使用内置的库函数`itoa()`、`printf()`和`sprintf()`来将十进制整数转换成八进制和十六进制。但是请注意,`itoa()`函数在一些标准C库中并未提供,通常需要使用第三方库或者自定义函数实现。
这里是一个简单的示例,展示如何手动实现一个十进制转八进制的函数:
```c
#include <stdio.h>
#include <string.h>
// 自定义十进制转八进制的函数
void decimalToOctal(int num, char octal[]) {
int i = 0;
while (num > 0) {
octal[i++] = num % 8 + '0';
num /= 8;
}
// 反转字符串,因为`itoa`默认从最低位开始
for (int j = 0; j < i / 2; j++) {
char temp = octal[j];
octal[j] = octal[i - j - 1];
octal[i - j - 1] = temp;
}
}
int main() {
int decimal = 12345;
char octal[100];
decimalToOctal(decimal, octal);
printf("十进制 %d 转换成八进制是: %s\n", decimal, octal);
return 0;
}
```
对于十六进制,可以先转换成八进制然后再转十六进制,也可以直接使用`printf()`,例如:
```c
printf("十进制 %d 转换成十六进制是: %x\n", decimal, decimal); // `printf`会自动转换
// 或者两个步骤转换
char octal[100], hex[100];
decimalToOctal(decimal, octal);
sprintf(hex, "%o", atoi(octal)); // 首先转八进制再转十六进制
printf("十进制 %d 转换成八进制是: %s,然后转十六进制是: %s\n", decimal, octal, hex);
```
阅读全文