c语言编程 将输入的2进制字符串转换为10进制数输出

作者&投稿:伏蒋 (若有异议请与网页底部的电邮联系)
如何用C语言编写函数实现输入一个十进制数, 将其转换成二进制数并输出?~

原理:十进制数除2商暂存起余数按字符串排列起再用商除2再余数按字条串排列起循环终余字符串二进制数

按照如下步骤即可用C语言把二进制数转换成十进制数的程序:
1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。

2、然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,在%d之间加一个1,然后使用printf函数输出,并且调用Sum函数,数组名作为实参。

3、在Sum函数中,声明了一个power函数,在这里n为指数,term为每一位数转换为十进制后的的数,如1*(2*2),sum为总和。

4、然后使用一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环,调用power函数时,将n作为实参,最后将和返回。


5、在power函数中,如果b等于零,即指数为零,则返回1,否则就进入一个循环,j用于控制循环次数。

6、最后看一下运行结果,这个C语言程序既可以把二进制数成功转换成十进制数了。

设置一个循环遍历字符串,设置一个初值为0的变量sum记录十进制数,从下标为0开始,作sum*2+该元素-'0'操作,遍历完成后sum即为所求之结果。代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char a[]="1101001011010111000101";
    int i,sum;
    for(sum=i=0;a[i];(sum*=2)+=a[i++]-'0');
    printf("The result is %d
",sum);
    return 0;
}


数组s已经定义长度,strlen的结果就是100,另外换算的时候语句可以优化

这段代码可以实现你的愿望
#include<stdio.h>
#include <stdlib.h>
int main(void)
{
char buffer[100];
gets(buffer);
char *stop;
printf("%d\n",strtol(buffer, &stop, 2));
}


鹤岗市13044983491: c语言编程:将输入的2进制字符串转换为10进制数输出. -
枞牧启脾: main(){ //获取字符串 //获取字符串长度 位值=2 总值=0 while(长度--,数组从尾到头遍历) { if(该处是1) { 总值=总值+ 位值;} 位值=位值*2; } 输出总值}

鹤岗市13044983491: c语言编程:将输入的2进制字符串转换为10进制数输出. -
枞牧启脾: 设置一个循环遍历字符串,设置一个初值为0的变量sum记录十进制数,从下标为0开始,作sum*2+该元素-'0'操作,遍历完成后sum即为所求之结果.代码如下: //#include "stdafx.h"//if the vc++6.0, with this line. #include "stdio.h" int main(void){ char a[]="1101001011010111000101"; int i,sum; for(sum=i=0;a[i];(sum*=2)+=a[i++]-'0'); printf("the result is %d\n",sum); return 0; }

鹤岗市13044983491: C语言 将输入转化成二进制代码 -
枞牧启脾: #include<stdio.h>#include<stdlib.h>#include<math.h>main(){float a,d,R=0,L=0,b; /* d is a decimal,b is the change result,binary*/int i;int j;printf("please input the decimal to change:\n");scanf("%f",&d);a=d; /*d to a*/for(i=0;a>=1;i++){...

鹤岗市13044983491: 用c语言怎么写 实现2进制转成10进制 -
枞牧启脾: 按照楼主的意思,应该是2机制格式表示的字符串,转成10进制格式的字符串 (否则,都是数值的话,不需要转.把它看成2进制或10进制,都可以)所以,该功能分两部分 1,把2进制表示的字符串,转换成数值 2,把数值转换成10进制表示的字符串

鹤岗市13044983491: C语言2进制转16进制 -
枞牧启脾: 2进制还是16进制就是一个表示形式,存在内存中的变量是不用转的,就是显示出来给人看不一样.你可以这样转16进制显示:printf("Variable a=%x",a); 2进制显示: char * int2bin(const int in,char *out) {int i,r;char t[32],*tp;r=in;tp=t; ...

鹤岗市13044983491: 将用户输入字符串转化2进制并输出(c语言)
枞牧启脾: 不知道你说的是针对数字的转换成2进制还是说所有的字符串转成2进制,以下代码针对所有的字符串: #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char * argv[]) { char input[1024]; scanf("%s", input); char c; int len...

鹤岗市13044983491: 怎么用C语言实现将二进制字符串变换为16进制数?比如将“00010001”怎么转变为“0x11”?谢谢!
枞牧启脾: #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; int main(void) { char szBuff[65] = {0}; int i, j = 0; int len = 0; int sum = 0; printf("输入字符串:"); gets(szBuff); printf("%s=0X", szBuff); len = strlen(szBuff); for (i = len-1; i ...

鹤岗市13044983491: C语言,如何把输入的一个字符串,转换为相应的二进制数? -
枞牧启脾: #include void ConvertData(int x,char *s,int n) { int m=0,i,k;while ( x ) { *s=x%n+'0'; x/=n; s++; m++; }*s=0;s-=m; for ( i=0;i<=m/2;i++ ) { k=s[i];s[i]=s[m-i-1];s[m-i-1]=k; } } void main() { char str[256]; int x;printf("请输入十进制数: "); scanf("%d",&x);ConvertData(x,str,2); printf("十进制%d转换成二进制是%s\n",x,str); }

鹤岗市13044983491: 求一个C语言程序,要求二进制转化为十进制! -
枞牧启脾: #include <stdio.h> void main() {char buff[128]; printf("请输入一串二进百制字符度"); gets(buff); int res=0; int i=0; while(buff[i]!='\0') { if(buff[i]!='\0' && buff[i]!='1') { printf("不是专有效的二进制数字"); return; } res=res*2+buff[i]-'0'; i++; } printf("结果是属:%d",res); }

鹤岗市13044983491: C语言编程用指针编写函数,将一个二进制数(以字符串形式表示)转换为十进制数.请给出运算结果 -
枞牧启脾: double binTodec(char *str) {int i = 0, j;double p1 = 1, p2 = 0.5;double res = 0; while(str[i]!='\0' && str[i]!='.')j = i++; do{res += (str[j--]-'0')*p1; // 计算整数p1 *= 2;}while(j >= 0); if(str[i] == '.'){do{res += (str[++i]-'0')*p2; // 计算小数p2 /= 2;}...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网