用C语言编写输入一个二进制数输出整数

, 将 2 进制字符串转换为整数输出。 函数原型 unsigned int Bin2Int (char str[ ]) 。 eg:输入字符串"101001101100001",函数返回整数 12345.

第1个回答  2017-10-23

你等下,我写下

#include <stdio.h>
unsigned int Bin2Int(char str[])
{
unsigned n=0;
int i;
for(i=0;str[i];i++)
if(str[i]=='1')
n=n*2+1;
else 
n=n*2; 
return n;

int main()
{
unsigned n;
char str[32];
scanf("%s",str);
n=Bin2Int(str);
printf("%u\n",n);
}

追问

行,麻烦了,如果可以的话,可以加注释吗

追答#include <stdio.h>
unsigned int Bin2Int(char str[])
{
unsigned n=0;
int i;
for(i=0;str[i];i++)     //从左到右转化 
if(str[i]=='1')      //如果当前位是1,就执行下面语句,翻2倍加1 
n=n*2+1;
else                  //否则直接翻2倍 
n=n*2;         
return n;

int main()
{
unsigned n;
char str[32];
scanf("%s",str);   //以字符串形式输入 
n=Bin2Int(str);
printf("%u\n",n);
}

追问

你这个不对啊,输出结果不对啊

追答

我的结果是对的,是你题目的结果有问题

本回答被提问者采纳
第2个回答  2017-10-23
#include <string.h>
#include <math.h>
unsigned int Bin2Int (char str[ ])
{
    unsigned sum = 0;
    int len = strlen(str);
    for(int i = 0; i < len; i++)
    {
        sum += pow(2, i) * (str[len-i-1] - '0');
    }
    return sum;
}

顺便说一下,101001101100001b = 21345,不是12345

第3个回答  2017-10-23
使用位运算的移位法,可以 计算到。。。。
~~~~~~~~
例子的结果,是21345吧

~~~~~~~~~~
第4个回答  2017-10-23
在打游戏,

用C语言编写输入一个二进制数输出整数
你等下,我写下 include <stdio.h>unsigned int Bin2Int(char str[]){unsigned n=0;int i;for(i=0;str[i];i++)if(str[i]=='1')n=n*2+1;else n=n*2; return n;} int main(){unsigned n;char str[32];scanf("%s",str);n=Bin2Int(str);printf("%u\\n",n);} ...

请教C语言问题 输入二进制字符串输出数字值
1)char *pbin [33];改成char pbin [33];2)if(pbin[0] = 'q')改成if(pbin[0] == 'q')3)int binary(char *pbin, int n){ int a, b;int total = 0;for(a=n-1,b=0;a>=0;a--,b++){ total += (int)(pbin[a] - '0') * power(b);return total;} }改...

求一个C语言程序设计,题目:输入一个只包含0和1的二进制数,打印出相应...
输入只包含0和1 的字符串,再把 这一个字符串的每一个字符转换成对应的十进制数 相加,求得输入二进制数的十进制数,然后用printf()函数输出,printf()函数只要用不同的参数就可以输出不同进制的形式,全部代码如下:include <stdio.h> include <conio.h> include <math.h> include <string.h> ...

c语言编程:输入一个只包含0和1的二进制数,打印出相应的十进制、八进制...
} printf("转换为十进制后为:%.0lf\\n",sum);} void main(){ int arr[200];int sub=0;do { printf("请输入二进制数的第%d位,输入2结束:\\n",sub+1);scanf("%d",&arr[sub]);if(arr[sub]!=0&&arr[sub]!=1&&arr[sub]!=2){ printf("输入错误,请输入0或1,2结束\\n");sub...

怎么在C语言里面输入二进制数字?
define N 4 include<math.h> include<stdio.h> void main(){ long a[N],*p,sum=0,che=pow(10,N-1);printf("请输入二进制数:");for(p=a;p<a+N;p++)scanf("%1ld",p);for(p=a;p

c语言的二进制数值如何直接输出?
1、首先打开vc6.0, 新建一个项目。2、添加头文件。3、添加main主函数。4、定义一个两个数相加的函数binSubtracton。5、在main函数定义int了性number1,number2, binSub。6、使用scanf给变量赋值。7、调用binAddition、binSubtracton。8、使用printf打印结果。

c语言 将输入的数表示成二进制,并统计其中1的个数
int b[30];scanf("%d",&a);while(a>0) \/\/十进制转换为二进制 { b[i]=a%2;a\/=2;i++;} for(j=0;j<i;j++) \/\/计算1的个数 if(b[j]==1)k++;printf("%d\\n",k);\/\/1的总数 for(j=0;j<i\/2;j++){m=b[j];b[j]=b[i-j-1];b[i-j-1]=m;} for(j=0...

C语言 进制转换 输入一个2 进制的数,要求输出该2 进制数的16 进制表...
include<stdio.h> include<string.h> define max 20 void main(){ int i,j,x,r=0,m;char a[max][20];int b[10];printf("请输入待转化的二进制个数:\\n");scanf("%d",&x);printf("请输入二进制数:\\n");for(i=0;i<x;i++) scanf("%s",a[i]);printf("转化成十六进制数...

C语言中二进制指定的某一位数0变1,或者1变0,并输出该数值.给个详细的代...
0变1其它位不变,位或一个该位为1其它位为0的数可得 1变0其它位不变,位与一个该位为0其它位为1的数可得 得到等N位为1其它位为0的数,可用1左移N位即得 得到等N位为0其它位为1的数,用前数位反一下即得 演示程序:include<stdio.h> char*int2bin(int ,char* );int main(){ int ...

C语言中怎样输出一个二进制的数?
只剩下了这个整数的二进制形式的开头第一个数字,然后与1进行按位与运算。真则为1,假则为0。printf("%d", value);\/\/每次输出整数的二进制形式的一个数字,从开头开始输出。. temp--;\/\/ 按位右移循环,直到把整数内存中所有的位移完毕。从内存中二进制形式的第一位开始。} ...

相似回答