c 语言 设计一个具有进制转换功能的计算器,可将输入的一个十进制、二进制、八进制或十六进制的整数转换为其他3种进制的整数后输出。思考:如何实现实数的进制转换?
时间: 2024-02-06 14:10:04 浏览: 72
以下是一个简单的 C 语言代码示例,实现了一个具有进制转换功能的计算器:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void dec2bin(int n) {
int binary[32];
int i = 0;
while (n > 0) {
binary[i] = n % 2;
n = n / 2;
i++;
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
}
void dec2oct(int n) {
int octal[32];
int i = 0;
while (n > 0) {
octal[i] = n % 8;
n = n / 8;
i++;
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", octal[j]);
}
}
void dec2hex(int n) {
char hex[32];
int i = 0;
while (n > 0) {
int temp = 0;
temp = n % 16;
if (temp < 10) {
hex[i] = temp + 48;
i++;
} else {
hex[i] = temp + 55;
i++;
}
n = n / 16;
}
for (int j = i - 1; j >= 0; j--) {
printf("%c", hex[j]);
}
}
int main() {
int decimal;
char input[32];
printf("Enter a number: ");
scanf("%s", input);
printf("Enter its base (2, 8, 10 or 16): ");
int base;
scanf("%d", &base);
decimal = strtol(input, NULL, base);
printf("The number in binary is: ");
dec2bin(decimal);
printf("\n");
printf("The number in octal is: ");
dec2oct(decimal);
printf("\n");
printf("The number in hexadecimal is: ");
dec2hex(decimal);
printf("\n");
return 0;
}
```
通过该程序,用户可以输入一个十进制、二进制、八进制或十六进制的整数,然后选择要将其转换为哪种进制的整数。程序会将输入的数转换为对应的三种进制的整数,并输出结果。
如果要实现实数的进制转换,可以在程序中加入对实数的处理。例如,可以将实数分成整数部分和小数部分,分别进行进制转换,最后将两部分拼接起来。但是需要注意的是,实数的进制转换需要考虑小数点的位置和精度问题。
阅读全文