C语言输出八进制、十进制和十六进制
时间: 2024-04-30 19:19:31 浏览: 20
C语言中,可以使用以下三种格式控制符来输出不同进制的数值:
- %o:输出八进制数
- %d:输出十进制数
- %x:输出十六进制数(小写字母)
例如,下面的代码分别输出了数值42的八进制、十进制和十六进制表示:
```c
#include <stdio.h>
int main() {
int num = 42;
printf("Octal: %o\n", num);
printf("Decimal: %d\n", num);
printf("Hexadecimal: %x\n", num);
return 0;
}
```
输出结果为:
```
Octal: 52
Decimal: 42
Hexadecimal: 2a
```
相关问题
C语言十进制函数转八进制和十六进制
C语言中可以使用以下函数将十进制数转换为八进制和十六进制:
1. 八进制转换函数:`int sprintf(char *str, const char *format, ...)`
该函数将格式化后的字符串输出到指定的字符数组中,第一个参数为字符数组指针,第二个参数为格式化字符串,后面的参数为要输出的变量。其中,格式化字符串中的`%o`表示将整数转换为八进制数。
示例代码:
```
#include <stdio.h>
int main()
{
int num = 123;
char octal[20];
sprintf(octal, "%o", num);
printf("Octal: %s\n", octal);
return 0;
}
```
输出结果为:
```
Octal: 173
```
2. 十六进制转换函数:`int sprintf(char *str, const char *format, ...)`
与八进制转换函数类似,格式化字符串中的`%x`表示将整数转换为十六进制数。
示例代码:
```
#include <stdio.h>
int main()
{
int num = 123;
char hex[20];
sprintf(hex, "%x", num);
printf("Hexadecimal: %s\n", hex);
return 0;
}
```
输出结果为:
```
Hexadecimal: 7b
```
c语言堆栈八进制转换成十六进制
以下是将八进制数转换成十六进制数的C语言代码:
```c
#include <stdio.h>
int main()
{
unsigned long int octal, decimal = 0;
int i = 0, rem;
char hex[20];
printf("Enter an octal number: ");
scanf("%lo", &octal);
// Convert octal to decimal
while (octal != 0)
{
rem = octal % 10;
decimal += rem * pow(8, i);
i++;
octal /= 10;
}
i = 0;
// Convert decimal to hexadecimal
while (decimal != 0)
{
rem = decimal % 16;
if (rem < 10)
{
hex[i] = rem + 48;
}
else
{
hex[i] = rem + 55;
}
i++;
decimal /= 16;
}
// Display the hexadecimal number
printf("Hexadecimal number: ");
for (int j = i - 1; j >= 0; j--)
{
printf("%c", hex[j]);
}
return 0;
}
```
在此代码中,我们首先将八进制数转换为十进制数,然后再将十进制数转换为十六进制数。我们使用两个while循环来完成这两个转换。
在第一个循环中,我们将每个八进制位的数字乘以8的幂,并将它们相加以得到十进制数。在第二个循环中,我们将十进制数除以16并获取余数,余数可以是0到15之间的数字。如果余数小于10,则将其转换为字符并将其存储在数组hex中,否则将其转换为A到F之间的字符并将其存储在数组hex中。
最后,我们反向遍历数组hex并打印十六进制数。