编一程序,实现将输入的一个无符号整数转换为二进制和八进制,十六进制表示,分别存入字符数组中并输出。(提示:算法采用模拟人工法。)二、数据结构采用数组,函数三、软件功能说明1.无符号整数转换为二进制2.无符号整数转换为八进制3.无符号整数转换为十六进制4.二进制,八进制,十六进制之间的任意转换注:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在人工方式下解决问题的过程,从中找出步骤和规律,然后编写程序,按照人工解决问题的步骤和规律进行操作。四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。2.有严密正确的数据验证功能和数据处理功能,能够实现各功能模块。3.系统要有一定的可靠性、稳定性。64
时间: 2024-03-24 15:40:54 浏览: 81
十进制转化各个进制的通用代码
好的,下面是一个实现将输入的一个无符号整数转换为二进制和八进制,十六进制表示的C语言程序,同时包含了二进制,八进制,十六进制之间的任意转换功能:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将十进制数转换为二进制表示并存入字符数组中,返回字符数组的长度
int dec2bin(unsigned int dec, char bin[]) {
int len = 0;
do {
bin[len++] = dec % 2 + '0';
dec /= 2;
} while (dec > 0);
for (int i = 0; i < len / 2; i++) {
char temp = bin[i];
bin[i] = bin[len - 1 - i];
bin[len - 1 - i] = temp;
}
bin[len] = '\0';
return len;
}
// 将十进制数转换为八进制表示并存入字符数组中,返回字符数组的长度
int dec2oct(unsigned int dec, char oct[]) {
int len = 0;
do {
oct[len++] = dec % 8 + '0';
dec /= 8;
} while (dec > 0);
for (int i = 0; i < len / 2; i++) {
char temp = oct[i];
oct[i] = oct[len - 1 - i];
oct[len - 1 - i] = temp;
}
oct[len] = '\0';
return len;
}
// 将十进制数转换为十六进制表示并存入字符数组中,返回字符数组的长度
int dec2hex(unsigned int dec, char hex[]) {
int len = 0;
do {
int remain = dec % 16;
if (remain < 10) {
hex[len++] = remain + '0';
} else {
hex[len++] = remain - 10 + 'A';
}
dec /= 16;
} while (dec > 0);
for (int i = 0; i < len / 2; i++) {
char temp = hex[i];
hex[i] = hex[len - 1 - i];
hex[len - 1 - i] = temp;
}
hex[len] = '\0';
return len;
}
// 将二进制数转换为十进制数
unsigned int bin2dec(char bin[]) {
int len = strlen(bin);
unsigned int dec = 0;
for (int i = 0; i < len; i++) {
dec = dec * 2 + (bin[i] - '0');
}
return dec;
}
// 将八进制数转换为十进制数
unsigned int oct2dec(char oct[]) {
int len = strlen(oct);
unsigned int dec = 0;
for (int i = 0; i < len; i++) {
dec = dec * 8 + (oct[i] - '0');
}
return dec;
}
// 将十六进制数转换为十进制数
unsigned int hex2dec(char hex[]) {
int len = strlen(hex);
unsigned int dec = 0;
for (int i = 0; i < len; i++) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec = dec * 16 + (hex[i] - '0');
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec = dec * 16 + (hex[i] - 'A' + 10);
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec = dec * 16 + (hex[i] - 'a' + 10);
}
}
return dec;
}
int main() {
unsigned int num;
int choice;
char bin[33], oct[12], hex[9];
printf("请输入一个无符号整数:");
scanf("%u", &num);
while (1) {
printf("\n请选择需要进行的转换:\n");
printf("1. 二进制\n");
printf("2. 八进制\n");
printf("3. 十六进制\n");
printf("4. 退出\n");
printf("你的选择是:");
scanf("%d", &choice);
switch (choice) {
case 1:
dec2bin(num, bin);
printf("二进制表示为:%s\n", bin);
break;
case 2:
dec2oct(num, oct);
printf("八进制表示为:%s\n", oct);
break;
case 3:
dec2hex(num, hex);
printf("十六进制表示为:%s\n", hex);
break;
case 4:
printf("程序已退出\n");
return 0;
default:
printf("无效的选择,请重新选择\n");
}
}
return 0;
}
```
这个程序可以将用户输入的无符号整数转换为二进制、八进制、十六进制表示,并且可以在菜单中选择需要进行的转换。同时,它还实现了将二进制、八进制、十六进制表示转换为十进制表示的功能。
阅读全文