如何输入一个二进制数,输出它的十进制数

李朋阳LPY 发表于2016年10月11日
一直写不对
2 回复

    1楼

  • 地3 发表于2016年10月11日
    1 | 0 | 举报
    <p>控制输入格式不对吧,输入要用二进制的字符<br ></p>
    地3 发表于2016年10月11日
    添加评论
  • 2楼

  • 忆长安-苏轼 发表于2016年10月12日
    0 | 0 | 举报
    <p>#include&lt;stdio.h&gt;</p><p>#include&lt;math.h&gt;</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 &nbsp;Getbit(void)</p><p>{ </p><p> int bit = 0;</p><p> printf(&quot;Please enter the number:\n&quot;);</p><p> scanf(&quot;%d&quot;,&amp;number);</p><p> number2 = number;</p><p> if(number&lt;0)</p><p> number = -number;</p><p> number1 = number;</p><p> </p><p> while(number&gt;0)</p><p> {</p><p> number = number/10;</p><p> bit++;</p><p> }</p><p> printf(&quot;%d: %d bits\n&quot;,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 &nbsp;= bits;</p><p> int tempera2 &nbsp;= 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]&lt;10)</p><p> {</p><p> example=example+a[times]*pow(2.0,out);</p><p> out--;</p><p> times++;</p><p> }</p><p> printf(&quot;%lf\n&quot;,example); </p><p>}</p><p>这个测试过输入二进制,返回十进制,输入的二进制的位数有限制。</p>
    忆长安-苏轼 发表于2016年10月12日
    添加评论