用C语言编写二进制转换十进制的程序。

作者&投稿:赤码 (若有异议请与网页底部的电邮联系)
c语言把二进制数转换成十进制数的程序怎么写。~

按照如下步骤即可用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语言程序既可以把二进制数成功转换成十进制数了。

#include #include #include /* 任意进制数转十进制数 *//* char *value : 其他进制数,以字符串形式存储 *//* int *result : 转换后的十进制数 *//* int radix : 待转换的进制 *//* R进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y *//* Y = Xn*R^0 + Xn-1*R^1 + Xn-2*R^2 + …… + X1*R^n-1 */void others2Decimal (char *value, int *result, int radix) { int digit,i,j;*result = 0;for (i=strlen(value)-1,j=0; i>=0; i--,j++) {if (value[i]>='0' && value[i]='a' && value[i]='A' && value[i]='0' && value[i]=radix+'0')return 0;if (radix>10 && value[i]>='a' && value[i]=radix-10+'a')return 0;if (radix>10 && value[i]>='A' && value[i]=radix-10+'A')return 0;}return 1;}int main (void) {char *value;int radix=2,result;printf ("请输入%d进制数:",radix);fflush(stdin); /*清除缓冲区*/ gets (value); if (check (value,radix)!=1) { putchar ('
'); printf ("输入的%d进制数有误!
",radix); putchar ('
'); return 0; } putchar ('
'); puts ("================================================================
"); printf ("10进制转换结果:"); others2Decimal (value,&result,radix);printf ("%d
",result);putchar ('
');getch (); /*屏幕暂留*/return 0;}运行结果

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

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

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

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

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

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



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

2、然后使用了一个for循环语句,用于输入八位二进制数。

3、在Sum函数中,又声明了一个power函数,power函数的作用是求2的n次方。

4、接着,使用了一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环。

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

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



一下两个程序均在VC在编译通过。

/*

如果这个二进制数比较大的话, 大到只能用数组储存这个二进制数,
当然如果大到转化成10进制int存不下的情况那另当别论
*/
#include<stdio.h>
#include<string.h>

int main()
{
char a[33];
int i, num = 0;
scanf("%s", a);

for(i=strlen(a)-1; i>=0; i--)
{
num*=2; /*如果用位运算的话,速度会更快*/
num+=a[i]-'0';
}
printf("%d\n", num);
return 0;
}

/*
如果这个二进制数的位数不超过10位的话
可用这个程序

*/
#include<stdio.h>
int main()
{
int num = 0, a, j=1;
scanf("%d", &a);

while(a)
{
num += (a%10) * j;
a /= 10;
j *= 2;
}
printf("%d\n", num);
return 0;

}

#include<stdio.h>

#include<math.h>

void main()

{

char bit[30];

int i=0,t,s=0;

printf("please input:
");

scanf("%c",&bit[0]);

while(bit[i]!='
')

{

i++;

scanf("%c",&bit[i]);

}

for(t=0;i>=0;i--)

{

if(bit[i]>='0'&&bit[i]<='9')

{

s=s+(bit[i]-48)*pow(2,t);

t++;

}

}

printf("%d
",s);

}



#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
//bin二进制串
//返回其对应的十进制数
//返回-1表示失败
//end表示终止位置
unsigned BinToDec(char *bin,char **end)
{

int dec = 0;
int i = 0;
int j = 0;
if(bin == NULL)
{
return -1;
}
i = strlen(bin);
*end = bin+i;

while(i>=0)
{
if(*(bin+i) == '1')
{
dec+=pow(2,j);
j++;
}
else if(*(bin+i) == '0')
{
j++;
}
else
{
//无效位
//重新计算
*end = bin+i;
j = 0;
dec = 0;//
}
i--;
}

return dec;
}

int main(int argc,char *argv[])
{
char str[100] = "";
char *p = NULL;
unsigned int r = 0 ;
printf("input the bin string:\n>>");
scanf("%s",str);
r = BinToDec(str,&p); printf("result = %d\n",r);
printf("end pos ->%s",p);
getche();
}


c语言把二进制数转换成十进制数的程序怎么写。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:int a = 0b10000001;printf("%d", a);。3、编译器运行test.cpp文件,此时输入的8位二进制数被成功用十进制进行了输出。

C语言,写一个函数,实现二进制到十进制的转换。
include <stdio.h>double b2d(char *s);int main(void) {char s[100];while(gets(s)){fflush(stdin);printf("%.0lf\\n",b2d(s));}return 0;}double b2d(char *s){double n;for(n=0;*s;++s){n=n*2+*s-'0';}return n;} ...

用c语言编程能实现把二进制转换为十进制吗?
c语言中没有表示二进制的字符,但是你可以根据十进制、八进制或者十六进制转换一下。可以利用短除法,将十进制转变成二进制,我们一般的思路是这样的,下面给出一个例子:把20转换成二进制:20\/2=10...余数为0 最低位10\/2=5...余数为05\/2=2...余数为12\/2=1...余数为01\/2=0...余...

怎样用C语言将二进制数转换成十进制
将二进制转成十进制,按权值展开求和即可。可以通过以下代码解决:include <stdio.h> include <stdlib.h> int main(){ char a[17];gets(a);int len,i,sum=0,m,j;len=strlen(a);if(len<=16){ for(i=0;i<len;i++){ m=1;if(a[i]=='1'){ for(j=1;j<=len-i-1;j++)m*...

如何使用C语言编写二进制转换为十进制的程序
在有次上课的时候,老师布置了用C语言编写二进制转换为十进制的程序,我今天将我的心得与成果分享给大家。为了完成进制的转换,我在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和。另外定义了一个数组array[8],用于存放输入的八位二进制数。然后...

求C语言大佬解答,怎麼写一个二进制和十进制相互转换的程序,要求如下...
char c;int len = 0, i, j;while (num) { s[len++] = '0' + (num % 2);num >>= 1;} for (i = 0, j = len - 1; i < j; i++, j--) { \/\/ 翻转字符串 c = s[i];s[i] = s[j];s[j] = c;} return s;} 完整代码和运行结果如下:输出符合示例,望采纳...

C语言将二进制数N转换成16进制的程序
1 输入的二进制数存成字符串; 2 遍历每位字符,并将其转为整数; 3以16进制输出。 代码: 1 2 3 4 5 6 7 8 9 10 11 12 int main() { char bin[33]; int n = 0,i; scanf("%s",bin); for(i = 0; bin[i]; i ++) { n*=10; n+=bin[i]-'0'; } printf("%x",n); } 本回答...

c语言把二进制数转换成十进制数的程序怎么写。
按照如下步骤即可用C语言把二进制数转换成十进制数的程序:1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。2、然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,在%d之间加一个1,然后使用printf函数输出,并且调用Sum函数,数组名作为实参...

用C语言编写两个函数,分别完成十进制和二进制之间的转换。
include <stdio.h>int main(){ int Type,a,b[10],i=0,c=0; printf("请输入转换类型,1:十进制转二进制;2:二进制转十进制\\n"); scanf("%d",&Type); printf("请输入原数据\\n"); scanf("%d",&a); switch(Type) { case 1: while(a!=0) {...

如何使用C语言编写二进制转换为十进制的程序
include<stdio.h> int main(){int x=0; char c;scanf("%c",&c);printf("(");while(c=='0'||c=='1'){x=x*2+c-'0';printf("%c",c);scanf("%c",&c);} printf(")2=%d\\n",x);return 0;}

二连浩特市13049656056: C语言程序: 将二进制转换成十进制 -
政命十全: 根据要求中的限制,可以直接利用接收字符函数即可实现.代码如下,输入的是0或者1,那么一直转换;直到输入不是0或者1,退出程序.可以直接拷贝,验证正确: #include#include int main() { char ch; unsigned int num; while( 1 )//一直循环 { num = 0; while( (ch = getchar()) != '\n' ) { if ('0' <= ch && ch <= '1') num = (num << 1) + ch - '0'; else exit(1);//如果输入的不是0或者1,那么退出程序 } printf("0x%X\n", num); } }

二连浩特市13049656056: 怎么用C语言编2进制数转换10进制数 -
政命十全: //下面是10进制转换成任意进制数 #include"stdio.h" main() { int i=0,m,n,r,a[40]; char str[16]="0123456789ABCDEF"; printf("\n 请输入一个整数和要转换成的进制数\n"); scanf("%d %d",&m,&r); /*r代表进制数*/ if(m<0) { printf("%c",'-');...

二连浩特市13049656056: 如何用c语言编写二进制和十进制之间的转换
政命十全: #include <stdio.h> /*将十进制数以任意进制输出(2到16进制),参数为非负整数 n要转换的数(十进制) j目标进制*/ void outstring(int n, int j) { static char s[256]; char t; int i = 0; int k; if (j <= 1 || j>16) return; while (n) { k = n%j; if (k < 10) s[i++] = '0'+k...

二连浩特市13049656056: C语言:编程实现二进制数转换成十进制数 -
政命十全: #include int main() { int a=0,b=0,c=0; printf("请输入一个二进制数:"); scanf("%d",&a);//这里我就不对输入进行检查了 for(int i=0;;i++) { if(a==0) break; b=a%2; a=a/10; for(int j=i;j>0;j--) { if(b==0) break; else b=b*2; } c+=b; } printf("%d",c); }

二连浩特市13049656056: 用c语言怎么写 实现2进制转成10进制 -
政命十全: 按照楼主的意思,应该是2机制格式表示的字符串,转成10进制格式的字符串 (否则,都是数值的话,不需要转.把它看成2进制或10进制,都可以)所以,该功能分两部分 1,把2进制表示的字符串,转换成数值 2,把数值转换成10进制表示的字符串

二连浩特市13049656056: 编写一个c程序,用于二进制与十进制之间的转换 -
政命十全: #include "stdio.h" #include "math.h" #include "stdlib.h" void main() { double data; char result[20]; scanf("%d",&data); itoa(fabs(data),result,2); /*可处理负数*/ printf("%c%s\n",data>=0?32:45,result); }

二连浩特市13049656056: c语言把二进制数转换成十进制数的程序怎么写.输入 -
政命十全: 随便输入一个2进制#include#include int main() { char a[50]; int n,j,i,sum=0,t=0,p=1; printf("输入一个2进制数:"); gets(a); n=strlen(a); for(i=n-1;i>=0;i--) { p=1; t=(a[i]-48); if(i==n-1) { p=1; } else { for(j=0;j { p=p*2; } } sum+=t*p; } printf("对应的10进制数:%d\n",sum); }

二连浩特市13049656056: 求一个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); }

二连浩特市13049656056: c 语言程序 二进制转化成十进制程序怎么写?
政命十全: #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;math.h&gt; int zhuan(char op); int main(void) { int i, len, jieguo = 0; char str[20]; printf("请输入一个二进制数据:"); gets(str); len = strlen(str); for (i = 0; i &lt; len; i++) { jieguo = jieguo + ...

二连浩特市13049656056: 用c语言二进制换算十进制 -
政命十全: #include<stdio.h> int power(int x,int n) { if(0==n) return 1; else return x*power(x,n-1); } void main() { int i,num,result=0; puts("Input the num in binery:"); scanf("%d",&num); int a[10]; for(i=9;i>=0;i--) a[i]=(num/power(10,9-i))%10; for(i=0;i<10;i++) result+=a[i]*power(2,9-i); printf("The result is %d\n",result); }

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