#include <stdlib.h>
#include <stdio.h>
#define SIZE 32
//输入二进制数,转为十进制数
int main()
{
void f(int b[],int n); //求乘积
int fun(int n); //首位置换
char ch;
int i = 0,a[SIZE] = {0},j;
unsigned int s = 0;
printf("输入二进制数:");
while((ch=getchar())!='\n') //输入二进制数
{
if(ch=='1')
a[i++] = ch-48;
else if(ch=='0')
a[i++] = ch-48;
else
{
printf("error,plz input right format!\n");
system("pause");
exit(0);
}
}
f(a,i); //置换
for(j=i-1;j>=0;j--) //求十进制数
s = s + a[j]*fun(j);
printf("十进制数为:%d\n",s);
system("pause");
}
int fun(int n)
{
unsigned int s;
if(n==1)
s = 2;
else if(n==0)
s = 1;
else
s = 2*fun(n-1);
return s;
}
void f(int b[],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t = b[n-i-1];
b[n-i-1] = b[i];
b[i] = t;
}
}

评论