16进制转换成10进制的C语言代码
时间: 2023-06-05 20:07:55 浏览: 203
以下是将16进制转换成10进制的C语言代码:
```c
#include <stdio.h>
int main() {
char input[10];
printf("请输入一个16进制数:");
scanf("%s", input); // 读入16进制数
int i = 0, result = 0;
while (input[i] != '\0') { // 逐位读取16进制数
int num = 0;
if (input[i] >= '0' && input[i] <= '9') {
num = input[i] - '0'; // 数字字符的值
} else if (input[i] >= 'A' && input[i] <= 'F') {
num = input[i] - 'A' + 10; // 字母字符的值
} else if (input[i] >= 'a' && input[i] <= 'f') {
num = input[i] - 'a' + 10; // 字母字符的值
}
i++;
result = result * 16 + num; // 转换为10进制数
}
printf("10进制数为:%d\n", result); // 输出10进制数
return 0;
}
```
相关问题
16进制转换为8进制的C语言代码
在C语言中,你可以使用`itoa()`函数或者手动编写算法将16进制转换为8进制。但是请注意,`itoa()`函数不是C标准库的一部分,所以这里我们提供一个手动的示例,如何将字符串形式的16进制数转换成8进制数:
```c
#include <stdio.h>
#include <string.h>
// 自定义函数将十六进制转八进制
int hex_to_oct(const char* hex_str) {
int oct_num = 0;
int len = strlen(hex_str);
for(int i = 0; i < len; i++) {
if(isxdigit(hex_str[i])) { // 检查是否为十六进制字符
int digit_val = (hex_str[i] >= '0' && hex_str[i] <= '9') ? hex_str[i] - '0' : hex_str[i] - 'A' + 10; // 转换到数字
oct_num <<= 4; // 移位左四位
oct_num += digit_val; // 加上当前值
}
}
return oct_num;
}
int main() {
char hex[] = "1A"; // 举例的16进制数
int oct_num = hex_to_oct(hex);
printf("Hexadecimal %s in octal is %d\n", hex, oct_num);
return 0;
}
```
在这个例子中,`hex_to_oct()`函数遍历输入的16进制字符串,每次迭代将当前十六进制位乘以16并加到结果上。注意这个方法假设输入始终是有效的十六进制字符串。
用栈实现10进制转换成2进制、8进制和16进制的代码,规定用c语言
以下是用栈实现10进制转换成2进制、8进制和16进制的代码,使用C语言编写:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
// 定义栈结构体
typedef struct {
int top;
int data[MAX_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_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--];
}
// 10进制转2进制
void decimalToBinary(int n) {
Stack s;
initStack(&s);
while (n > 0) {
push(&s, n % 2);
n /= 2;
}
printf("2进制数为:");
while (!isEmpty(&s)) {
printf("%d", pop(&s));
}
printf("\n");
}
// 10进制转8进制
void decimalToOctal(int n) {
Stack s;
initStack(&s);
while (n > 0) {
push(&s, n % 8);
n /= 8;
}
printf("8进制数为:");
while (!isEmpty(&s)) {
printf("%d", pop(&s));
}
printf("\n");
}
// 10进制转16进制
void decimalToHexadecimal(int n) {
Stack s;
initStack(&s);
while (n > 0) {
push(&s, n % 16);
n /= 16;
}
printf("16进制数为:");
while (!isEmpty(&s)) {
int x = pop(&s);
if (x < 10) {
printf("%d", x);
} else {
printf("%c", x - 10 + 'A');
}
}
printf("\n");
}
int main() {
int n;
printf("请输入一个10进制数:");
scanf("%d", &n);
decimalToBinary(n);
decimalToOctal(n);
decimalToHexadecimal(n);
return 0;
}
阅读全文