700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言实现十进制数转二进制数输出

C语言实现十进制数转二进制数输出

时间:2022-06-08 01:40:26

相关推荐

C语言实现十进制数转二进制数输出

突然想做一个十进制输入,输出相应的二进制数算法。

算法简介:

1、十进制转二进制通过位运算实现;

2、二进制数通过链表保存;

3、因为低位最先得到,所以链表用头插法实现(也可以直接用栈)。

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1/*---------------------------------function: 输入十进制转化为二进制输出author: xuandate:-5-17vision: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 num = 0;while (x != 0){x = x / 2;num++;}return num;}void Insert_head(linknode L, int x) //头插法在L链表中插入值为x的节点{linknode s = (linknode)malloc(sizeof(linknode));s->data = x;s->next = L->next;L->next = s;}void Trans_bit(linknode L, int x, int size) //将十进制数x转化为二进制保存在链表x中,size表示位数{while (size){Insert_head(L, x & 1);x = x >> 1;size--;}}void output(linknode L) //输出二进制数链表,每四位空格{while (L != NULL){int i = 0;while (i < 4){printf("%d", L->data);L = L->next;i++;}printf(" ");}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。