突然想做一个十进制输入,输出相应的二进制数算法。
算法简介:
1、十进制转二进制通过位运算实现;
2、二进制数通过链表保存;
3、因为低位最先得到,所以链表用头插法实现(也可以直接用栈)。
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
/*
---------------------------------
function: 输入十进制转化为二进制输出
author: xuan
date:2021-5-17
vision:1.0
---------------------------------
*/
#include<stdio.h>
#include"malloc.h"
typedef struct node{//链表存放二进制数
int data;
struct node* next;
}*linknode;
//函数声明区域
int Get_bitnums(int x);
void Insert_head(linknode L, int x);
void Trans_bit(linknode L, int x, int size);
void output(linknode L);//使用时应传入首节点而不是头节点
int main()
{
linknode L = (linknode)malloc(sizeof(linknode));
L->next = NULL;
printf("请输入一个十进制数:\n");
int x = 0;
scanf("%d", &x);
Trans_bit(L, x, Get_bitnums(x));
output(L->next);
return 0;
}
int Get_bitnums(int x) //传入一个十进制数x,返回相应的二进制数位数
{
int