用栈进行从10进制转化为2进制,8进制,16进制,要求用c语言
时间: 2023-04-08 11:05:19 浏览: 102
好的,这个问题可以回答。以下是用 C 语言实现从 10 进制转化为 2 进制、8 进制、16 进制的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
void decimalToBinary(int decimal);
void decimalToOctal(int decimal);
void decimalToHexadecimal(int decimal);
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
decimalToBinary(decimal);
decimalToOctal(decimal);
decimalToHexadecimal(decimal);
return 0;
}
void decimalToBinary(int decimal) {
int binary[MAX_SIZE], i = 0;
while (decimal > 0) {
binary[i++] = decimal % 2;
decimal /= 2;
}
printf("二进制数为:");
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
printf("\n");
}
void decimalToOctal(int decimal) {
int octal[MAX_SIZE], i = 0;
while (decimal > 0) {
octal[i++] = decimal % 8;
decimal /= 8;
}
printf("八进制数为:");
for (int j = i - 1; j >= 0; j--) {
printf("%d", octal[j]);
}
printf("\n");
}
void decimalToHexadecimal(int decimal) {
char hexadecimal[MAX_SIZE];
int i = 0;
while (decimal > 0) {
int remainder = decimal % 16;
if (remainder < 10) {
hexadecimal[i++] = remainder + '0';
} else {
hexadecimal[i++] = remainder - 10 + 'A';
}
decimal /= 16;
}
printf("十六进制数为:");
for (int j = i - 1; j >= 0; j--) {
printf("%c", hexadecimal[j]);
}
printf("\n");
}
```
希望这个代码能够帮到你!
阅读全文