2
回复
-
<p>控制输入格式不对吧,输入要用二进制的字符<br ></p>添加评论
-
<p>#include<stdio.h></p><p>#include<math.h></p><p>int Getbit(void);</p><p>void Divnumber(int bits);</p><p>int number=0;</p><p>int number1=0;</p><p>int number2=0;</p><p>int main()</p><p>{</p><p> Divnumber(Getbit());</p><p> return 0;</p><p>}</p><p>/*返回输入数字的位数*/</p><p>int Getbit(void)</p><p>{ </p><p> int bit = 0;</p><p> printf("Please enter the number:\n");</p><p> scanf("%d",&number);</p><p> number2 = number;</p><p> if(number<0)</p><p> number = -number;</p><p> number1 = number;</p><p> </p><p> while(number>0)</p><p> {</p><p> number = number/10;</p><p> bit++;</p><p> }</p><p> printf("%d: %d bits\n",number2,bit);</p><p> return bit;</p><p>}</p><p>/*分开数字的每一位,然后进行二进制转换*/</p><p><br ></p><p>void Divnumber(int bits)</p><p>{</p><p> int x=0;</p><p> int y=0;</p><p> int z=0;</p><p> int times=0;</p><p> int out=0;</p><p> double example=0;</p><p> double low=2;</p><p><br ></p><p> int adq=1;</p><p> int n=0;</p><p> int m=0;</p><p> int time=bits;</p><p> int i=0,j=bits-2;</p><p> int dividend = 1;</p><p> int tempera1 = bits;</p><p> int tempera2 = bits-1;</p><p> int a[10]={0,0,0,0,0,0,0,0,0,0};</p><p> while(tempera1--)</p><p> {</p><p> dividend = dividend*10;</p><p> }</p><p><br ></p><p> while(bits--)</p><p> {</p><p> a[i] = number1 % dividend;</p><p> i++;</p><p> dividend = dividend / 10;</p><p> }</p><p><br ></p><p> while(tempera2--)</p><p> {</p><p> dividend=dividend*10;</p><p> a[j]=(a[j]-a[j+1])/dividend;</p><p> j--;</p><p> }</p><p> a[time] = 10;</p><p> out = time-1;</p><p> while(a[times]<10)</p><p> {</p><p> example=example+a[times]*pow(2.0,out);</p><p> out--;</p><p> times++;</p><p> }</p><p> printf("%lf\n",example); </p><p>}</p><p>这个测试过输入二进制,返回十进制,输入的二进制的位数有限制。</p>添加评论