编一程序,实现将输入的一个无符号整数转换为二进制和八进制,十六进制表示,分别存入字符数组中并输出。(算法采用模拟人工法。)
时间: 2024-03-17 20:47:32 浏览: 82
对一组无符号数据排序,并设计出显示十六进制数的子程序,调用该子程序将排序的结果显示在显示器上。
3星 · 编辑精心推荐
好的,以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
unsigned int num;
printf("请输入一个无符号整数:");
scanf("%u", &num);
char binary[33] = {0};
char octal[12] = {0};
char hex[9] = {0};
// 转换为二进制
int i, j;
for (i = 31; i >= 0; i--) {
binary[i] = num % 2 + '0';
num /= 2;
}
binary[32] = '\0';
// 转换为八进制
num = atoi(binary);
for (i = 10; i >= 0; i--) {
octal[i] = num % 8 + '0';
num /= 8;
}
octal[11] = '\0';
// 转换为十六进制
num = atoi(binary);
for (i = 7; i >= 0; i--) {
j = num & 0xf;
if (j < 10)
hex[i] = j + '0';
else
hex[i] = j - 10 + 'A';
num >>= 4;
}
hex[8] = '\0';
printf("二进制表示:%s\n", binary);
printf("八进制表示:%s\n", octal);
printf("十六进制表示:%s\n", hex);
return 0;
}
```
程序首先读入一个无符号整数,然后使用模拟人工法将其转换为二进制、八进制和十六进制字符串,并存入对应的字符数组中。最后输出这三个字符串即可。需要注意的是,在转换为八进制和十六进制时,我们先将二进制字符串转换为一个整数,再使用类似于转换为二进制时的方法进行转换。
阅读全文