用C语言编写一个程序,将字符串形式输入的二进制整数转换为对应的十进制数,
* 然后用二分查找法的思想将这个十进制数转换为对应的二进制数并输出。
* 并说明计算机系统执行该程序的过程。
* (提示:假如需要转换的十进制数是77,
* 则需要在0-127的区间中查找77,查找过程中可以通过对77和区间中间数的比较
* 结果确定对应的二进制数的最高位的值和下一次查找的区间范围,以此类推。)
大一编程新手,甚至不是很能理解怎么用二分查找的思想!
原本是想要输出一个“十进制数是:”结果出现了中文乱码,网上查后发现是编码格式错误,要将UTF-8改为ANSI
代码实现:
#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;
}