700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【C语言】将十进制数转化为二进制并输出

【C语言】将十进制数转化为二进制并输出

时间:2019-07-08 15:03:52

相关推荐

【C语言】将十进制数转化为二进制并输出

十进制转化为二进制并输出(以整型为例)

首先需要明确十进制转为二进制的算法:将所需转化的数除以2,所得余数为k1,将所得商再除以2,所得余数为k2…...重复步骤直到商为0;读数时从最后一个余数读起,即kn,k(n-1)…k2,k1;所得数便是转化成的二进制数(除二取余法)

例如:将20转化为二进制数

20/2 商为10 余数为0 k1

10/2 商为5 余数为0 k2

5/2 商为2 余数为1 k3

2/2 商为1 余数为0 k4

1/2 商为0 余数为1 k5

故二进制数为:10100

编程思路:定义输入的函数为input,商为quotient,余数为remainder;则可以用一个数组result来存放每次计算后所得的余数,然后倒序输出

代码如下:

#include <stdio.h>int main(void) {//提示用户输入数据int input = 0 ;printf("请输入一个数据:");scanf("%d", &input);//十进制转为二进制int quotient = input;int remainder = 0;int result [100];int i = 0;while (quotient != 0) {remainder = quotient % 2; //求余数result [i] = remainder; //数组存放每次所得的余数i++;quotient = quotient / 2; //求商}i--; //while循环中多加了一次i,需要减去//倒序输出数组printf("转化成二进制为:");for ( ; i >= 0 ; --i) {printf("%d", result[i]);}printf("\n");return 0 ;}

但是在这种情况中,由于不知道输入数据的大小,存在事先定义好的数组存放不下所有余数的情况。如果将所有余数化为一个具体的值,则更具有适应性,也方便输出

思路:定义输出的值为result, 可以发现result的个位等于k1,十位等于k2......定义time来记录result进位的次数,每进一次即time*10;则可以通过time*k来控制result的个十百千万....位

代码如下:

#include <stdio.h>int main(void) {//提示用户输入数据int input;printf("请输入一个数据:");scanf("%d", &input);//将数字转成二进制int quotient = input;int remainder = 0;int result = 0;int time = 1;while (quotient != 0 ) {remainder = quotient % 2; //求余数result += remainder * time; //将余数化为一个具体的值quotient = quotient / 2;//求商time *= 10;}//输出二进制数据printf("转化成二进制为:%d\n",result);return 0;}

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