/*用C语言编写一个程序,将字符串形式输入的二进制整数转换为对应的十进制数,
然后用二分查找法的思想将这个十进制数转换为对应的二进制数并输出。
并说明计算机系统执行该程序的过程。
(提示:假如需要转换的十进制数是77,
则需要在0-127的区间中查找77,查找过程中可以通过对77和区间中间数的比较
结果确定对应的二进制数的最高位的值和下一次查找的区间范围,以此类推。)
以下是我自己写的代码,但是并没有用二分查找的思想,有没有懂的可以教教我怎么使用二分查找思想做这个
#include <stdio.h>
#include<string.h>
#include<math.h>
int ZH(int a,int*b)
{
int i=0;
while(1)
{b[i]=a%2; a=a/2; if(a==0) break; else { ++i; continue; }
}
return i;
}
int main() {
char a[100];
int b[100];
int sum,i,n;
sum=0;
gets(a);
n=strlen(a);
for(i=0;i<n;i++)
{b[n-1-i]=(int)a[i]-48; sum=sum+b[n-1-i]*pow(2.0,(double)(n-1-i));
}
/sum的值即为十进制数的值/
int c,d[1000],p;
c=(int)sum;
p=ZH(c,d);
for(int j=p; j>=0; --j) {printf("%d", b[j]);
}
return 0;
}