用c语言用单链表实现数据的进制转换
时间: 2024-02-09 15:08:11 浏览: 28
下面是使用单链表实现数据的进制转换的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
typedef struct Node {
int data; // 节点保存的数据
struct Node *next; // 指向下一个节点的指针
} Node;
// 将十进制数转换为指定进制的字符串
char *decimalToBase(int num, int base) {
char *str = (char *)malloc(sizeof(char) * 32);
int i = 0;
Node *head = NULL;
while (num > 0) {
int remainder = num % base;
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = remainder;
newNode->next = head;
head = newNode;
num /= base;
}
while (head != NULL) {
str[i++] = head->data < 10 ? head->data + '0' : head->data - 10 + 'A';
head = head->next;
}
str[i] = '\0';
return str;
}
int main() {
int num, base;
printf("请输入一个十进制数:");
scanf("%d", &num);
printf("请输入目标进制(2-16):");
scanf("%d", &base);
if (base < 2 || base > 16) {
printf("进制范围错误!\n");
return 0;
}
char *str = decimalToBase(num, base);
printf("%d转化为%d进制为:%s\n", num, base, str);
free(str);
return 0;
}
```
运行程序,输入一个十进制数和目标进制,即可得到转换后的结果。例如:
```
请输入一个十进制数:123
请输入目标进制(2-16):16
123转化为16进制为:7B
```