如何使用C语言编写二进制转换为十进制的程序

在有次上课的时候,老师布置了用C语言编写二进制转换为十进制的程序,我今天将我的心得与成果分享给大家。

操作方法

  • 01

    为了完成进制的转换,我在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和。另外定义了一个数组array[8],用于存放输入的八位二进制数。

  • 02

    然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,我在%d之间加了一个1,即%1d,这样是好连续的输入八个数,如果没有中间的1,则编译器会认为你只输入了一个数,即那个八位数。然后使用printf函数输出,并且调用Sum函数,数组名作为实参。

  • 03

    在Sum函数中,我又声明了一个power函数,power函数的作用是求2的n次方,其实这里可以调用库函数pow,但是老师要求不调用库函数,因此我就自己写了一个求2的n次方的函数,在这里n为指数,term为每一位数转换为十进制后的的数,如1*(2*2),sum为总和。

  • 04

    接着,我使用了一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环,因为二进制的最后一位转换为十进制数时指数就是零,此后循环就结束。调用power函数时,将n作为实参,最后将和返回,即将sum作为返回值返回给Sum函数。

  • 05

    在power函数中,如果b等于零,即指数为零,则返回1,否则就进入一个循环,j用于控制循环次数,有疑问的可以用笔算算乘2的个数对不对,最后将i返回

  • 06

    最后看一下运行的结果,

  • 07

    这里是源代码。 #include<stdio.h> int main() { int Sum(int a[]); int array[8],i; printf("输入一个8位二进制数:"); for(i=0;i<8;i++) { scanf("%1d",&array[i]); } printf("转换为十进制数后是:%d\n",Sum(array)); return 0; } int Sum(int a[]) { int power(int b); //声明求2的n次方的函数 int n,i,sum=0,term;//n为指数,term为每一项的值,如1*(2*2),sum为总和 for(i=0,n=7;i<8;i++,n--) if(n>=0) {term=a[i]*power(n); sum=sum+term; } return sum; } int power(int b) { int i=2,j=1; if(b==0) i=1; for(;j<b;j++) i=2*i; return i; }

  • 08

    在这里我修改了一下代码,换成了使用库函数pow,不想自己写求2的n次方的函数的可以用这里的代码。“//”后面的内容是注释掉了的,对程序不起作用。 #include<stdio.h> #include<math.h> int main() { int Sum(int a[]); int array[8],i; printf("输入一个8位二进制数:"); for(i=0;i<8;i++) { scanf("%1d",&array[i]); } printf("转换为十进制数后是:%d\n",Sum(array)); return 0; } int Sum(int a[]) { //int power(int b); //声明求2的n次方的函数 int n,i,sum=0,term;//n为指数,term为每一项的值,如1*(2*2),sum为总和 for(i=0,n=7;i<8;i++,n--) if(n>=0) {//term=a[i]*power(n); term=a[i]*pow(2,n); sum=sum+term; } return sum; }

(0)

相关推荐

  • 二进制与十进制间的转换方法(图文教程)

    二进制与十进制间的转换方法(图文教程) 操作方法 01 一.正整数的十进制转换二进制: 要点:除二取余,倒序排列 解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除 ...

  • Excel表格中的十六进制数怎么转换为十进制数?

    Excel是一个非常强大的办公的软件,怎样使一推十六进制数转换为十进制数呢,接下来小编给大家介绍一下. 1.打开所要转换的Excel文件 2.在列表中输入要转换的十六进制数 3.在要生成的表格中输入函 ...

  • 怎么用wps2019进行二进制与十进制的转换

    小伙伴们在使用wps2019时,可能会遇到一些问题,今天小编来教大家一个技巧,怎么在wps2019进行二进制与十进制的转换具体如下:1. 第一步,进入wps2019,选中转换后的单元格2. 第二步,找 ...

  • sublime软件如何使用python语言编写程序

    sublime软件是我们在电脑中常用的一种编程软件,接下来小编就教大家怎样在这个软件中使用python语言编写程序.具体如下:1. 首先我们需要在电脑中安装sublime软件,下载完成安装包之后,点击 ...

  • 易语言编写盗号源码

    现在有人学习易语言想盗号,就是不知道易语言盗号源码是什么.怎么发到指定邮箱.今天我就来教大家怎么编写易语言盗号源码. 操作方法 01 打开易语言,新建一个Windows窗口程序. 02 然后呢,制作一 ...

  • 从二进制与十进制相互转换看进制之间的转换

    突然很想把以前学过的,自己引以为荣的东西(当然都是很简单的东西)整理一下,正好提供了一个很好的平台,那现在就先从进制之间的转换开始吧! 操作方法 01 二进制转为十进制 这是最简单的,将每个位置上的数 ...

  • C语言编写Windows下的实用程序:[3]窗口

    前面两篇,我们只是通过Windows系统的MessageBox函数,简单做出了一个提示对话框,这对我编写实用的窗口程序是远远不够的,这篇开始,我们来介绍下怎样用C语言开发Windows下的窗口程序. ...

  • Java语言编写水仙花数等

    利用Java语言编写水仙花数.素数也叫质数.学生成绩.加法计算器.求平方. 操作方法 01 Java编写语言:水仙花数 (1^3 + 5^3 + 3^3 = 153) 1的立方+5的立方+3的立方=1 ...

  • Java语言编写三角形面积等

    利用Java语言编写三角形面积.等腰三角形.判断两个数的大小.两个数之间按从大到小输出.三个数从小到大顺序输出. 操作方法 01 Java语言编写: 任意输入三角形的三边,判断是否为三角形并且求三角形 ...