用C语言写一个进制转换器
时间: 2023-12-29 13:49:35 浏览: 24
好的,下面是一个简单的进制转换器的 C 代码:
```c
#include <stdio.h>
int main() {
int num, base, rem, i = 0;
char result[20];
printf("请输入一个十进制数:");
scanf("%d", &num);
printf("请输入要转换的进制数:");
scanf("%d", &base);
while(num > 0) {
rem = num % base;
if(rem < 10) {
result[i++] = rem + '0';
} else {
result[i++] = rem + 'A' - 10;
}
num /= base;
}
printf("转换结果为:");
for(int j = i - 1; j >= 0; j--) {
printf("%c", result[j]);
}
printf("\n");
return 0;
}
```
这个程序可以将输入的十进制数转换为任意进制数。用户需要输入要转换的十进制数和要转换的进制数。程序使用了一个数组来存储转换结果,而不是直接输出,这样可以方便地输出任意进制数。
相关问题
用c语言写一个进制转换器
### 回答1:
我可以提供一个简单的c语言代码来实现进制转换:
#include <stdio.h>
int main()
{
int num, rem, base, digits = 0;
printf("Enter number and base: ");
scanf("%d %d", &num, &base);
int convert[100];
/*
* Convert the number from base 'num'
* to base 'base'
*/
while (num > 0) {
rem = num % base;
convert[digits++] = rem;
num /= base;
}
// Printing result
for (int i = digits - 1; i >= 0; i--)
printf("%d", convert[i]);
return 0;
}
### 回答2:
进制转换器是一种程序,可以将数值从一种进制转换为另一种进制。使用C语言编写一个简单的进制转换器,可以实现从十进制到二进制、八进制或十六进制的转换。
首先,我们需要一个函数来实现十进制数转换为二进制、八进制或十六进制的功能。下面是一个示例函数:
```c
#include <stdio.h>
// 将十进制数转换为二进制
void decimalToBinary(int decimal) {
int binary[32];
int i = 0;
while (decimal > 0) {
binary[i] = decimal % 2;
decimal = decimal / 2;
i++;
}
printf("二进制数为: ");
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
printf("\n");
}
// 将十进制数转换为八进制
void decimalToOctal(int decimal) {
int octal[100];
int i = 0;
while (decimal > 0) {
octal[i] = decimal % 8;
decimal = decimal / 8;
i++;
}
printf("八进制数为: ");
for (int j = i - 1; j >= 0; j--) {
printf("%d", octal[j]);
}
printf("\n");
}
// 将十进制数转换为十六进制
void decimalToHexadecimal(int decimal) {
char hexadecimal[100];
int i = 0;
while (decimal > 0) {
int remainder = decimal % 16;
if (remainder < 10) {
hexadecimal[i] = remainder + 48;
} else {
hexadecimal[i] = remainder + 55;
}
decimal = decimal / 16;
i++;
}
printf("十六进制数为: ");
for (int j = i - 1; j >= 0; j--) {
printf("%c", hexadecimal[j]);
}
printf("\n");
}
int main() {
int decimal;
printf("请输入一个十进制数: ");
scanf("%d", &decimal);
decimalToBinary(decimal);
decimalToOctal(decimal);
decimalToHexadecimal(decimal);
return 0;
}
```
这段代码中,首先定义了三个不同进制的转换函数:`decimalToBinary()`、`decimalToOctal()`和`decimalToHexadecimal()`。然后在`main()`函数中,用户被要求输入一个十进制数。接下来,程序将调用这三个函数,并将转换后的结果打印出来。
你可以根据自己的需要来进行进制转换。这只是一个简单的示例程序,可以作为你编写进制转换器的起点。
### 回答3:
进制转换器是一个可以将一个数值从一种进制转换成另一种进制的工具。以下是用C语言编写一个简单的进制转换器的示例代码:
```c
#include <stdio.h>
// 函数原型声明
void convertToDecimal(int number, int base);
void convertFromDecimal(int number, int base);
int main() {
int number, base;
// 输入待转换的数值和进制
printf("请输入一个整数:");
scanf("%d", &number);
printf("请输入要转换的进制(2-16):");
scanf("%d", &base);
// 判断转换方向并调用相应的函数
if (base == 10) {
convertFromDecimal(number, 2);
} else {
convertToDecimal(number, base);
}
return 0;
}
// 将一个数值从十进制转换为其他进制
// 递归调用
void convertFromDecimal(int number, int base) {
if (number > 0) {
convertFromDecimal(number / base, base);
int remainder = number % base;
if (remainder < 10) {
printf("%d", remainder);
} else {
printf("%c", 'A' + remainder - 10);
}
}
}
// 将一个数值从其他进制转换为十进制
void convertToDecimal(int number, int base) {
int decimal = 0;
int multiplier = 1;
while (number > 0) {
int digit = number % 10;
decimal += digit * multiplier;
multiplier *= base;
number /= 10;
}
printf("%d\n", decimal);
}
```
这个进制转换器可以将给定的整数从十进制转换为其他进制,或者从其他进制转换为十进制。用户需要输入要转换的整数和目标进制。对于从十进制转换为其他进制,使用`convertFromDecimal`函数进行递归转换并输出结果;对于从其他进制转换为十进制,使用`convertToDecimal`函数进行迭代转换并输出结果。
帮我用C语言的栈做一个进制转换器
好的,以下是使用C语言栈实现进制转换的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STACK_SIZE 100
typedef struct {
int top;
int data[MAX_STACK_SIZE];
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int isEmpty(Stack *s) {
return s->top == -1;
}
int isFull(Stack *s) {
return s->top == MAX_STACK_SIZE - 1;
}
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack is full.\n");
exit(1);
}
s->data[++s->top] = x;
}
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
exit(1);
}
return s->data[s->top--];
}
int convert(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else {
printf("Invalid character: %c\n", c);
exit(1);
}
}
char convertBack(int n) {
if (n >= 0 && n <= 9) {
return n + '0';
} else if (n >= 10 && n <= 15) {
return n - 10 + 'a';
} else {
printf("Invalid number: %d\n", n);
exit(1);
}
}
int main() {
Stack s;
initStack(&s);
char input[100];
int from, to;
printf("Enter a number: ");
scanf("%s", input);
printf("Enter the base of the number: ");
scanf("%d", &from);
printf("Enter the base to convert to: ");
scanf("%d", &to);
int len = strlen(input);
int i;
for (i = 0; i < len; i++) {
int n = convert(input[i]);
push(&s, n);
}
int result = 0;
int power = 1;
while (!isEmpty(&s)) {
int n = pop(&s);
result += n * power;
power *= from;
}
char output[100];
int j = 0;
while (result > 0) {
int n = result % to;
output[j++] = convertBack(n);
result /= to;
}
output[j] = '\0';
printf("Result: %s\n", strrev(output));
return 0;
}
```
这个程序可以将一个任意进制的数转换为另一个任意进制的数。用户需要输入要转换的数、原始进制和目标进制。程序会将输入的数转换为十进制,然后再将十进制数转换为目标进制。