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

 时间:2024-10-18 16:41:44

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

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

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

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

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

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

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

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

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

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

6、最后看一下运行的结果,

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

7、这里是源代码。#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;}

8、在这里我修改了一下代码,换成了使用库函数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;}

  • c语言取余数怎么求
  • 如何用C语言判断是否为素数
  • C语言如何将大写字母转换成小写字母
  • C语言逆序输出
  • C语言中的基本数据类型
  • 热门搜索
    争做新时代好队员手抄报 防溺水手抄报简单 心理健康的手抄报 感恩教育手抄报 手抄报春节 爱祖国手抄报简单漂亮 朝花夕拾手抄报 科普手抄报图片 网络安全手抄报内容 爱国卫生手抄报