当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 谢谢! ......
 ·nt和98可不可以共存    »显示摘要«
    摘要: 我现在用的是98,装在c盘上,我想在d盘装个nt4的,有几个问题不是很清楚: nt怎么支持大容量的硬盘,我是46g的,可以直接认出来吗? 我在装的过程中提示ms-dos没有提供硬盘分区供nt使用,这是怎么一回事,我分区时没设活动分区,是不是有影响? ......


求助: 把二进制的数变成十进制

#include   <iostream.h>  
  #include   <math.h>  
  #include   <conio.h>  
   
   
   
  int   main()  
  {  
          int   binNum,   decNum   =   0;  
          int   numWidth;     //输入的数字的位数  
          int   numBit;     //每一位的数  
          cout   <<"Input   a   binary   number   ";  
          cin   >>binNum;  
   
          numWidth   =   ceil(   log10(   binNum   )   );     //确定输入的是几位数  
   
          for(   int   i   =   numWidth   -   1;   i   >=   0;   i--   )   {  
                  numBit   =   binNum   /   (   (   int   )   pow(   10,   i   )   )   %   10;  
                  decNum   +=   numBit   *   pow(   2,   i   );  
          }  
   
          cout   <<"\nThe   decimal   value   of   input   number   is:   "     <<decNum   <<endl;  
   
   
          getchar   ();  
          return   0;  
  }  
   
   
   
   
  哪里有问题??怎么得到的结果都是0阿??  
 

NO.1   作者: pazee

写的太费事了,怎么都用上pow了  
   
  不过程序看上去没问题呀!  
  我试了一下结果也正确。  
  你但不跟踪看看。  
  你都输入了什么数呀?

NO.2   作者: dcyu

你在Borland   C++3.1下试试:  
  应该是  
  for(   int   i   =   numWidth   ;   i   >=   0;   i--   )    
  不是  
  for(   int   i   =   numWidth   -   1;   i   >=   0;   i--   )

NO.3   作者: dcyu

出现308是溢出了,不断的numWidth++   到最大时是10^308。  
  应该是while   (   binNum   /   pow   (10,   numWidth+1   )   >=   0.001   ){  
                          numWidth++;}  
  做浮点型,在内存当中是有一定的精度的,否则是不可能相等的。

NO.4   作者: liuns

我认为不如输入字符串分析得还快一些,入输入char   p〔〕=“1010”则  
  p〔0〕就是1,p〔1〕就是0   然后atoi转换不就可以了吗。然后根据位数pow不就可以了吗。

NO.5   作者: fminhua

我用vc跟踪了一下,发现一个问题。  
  当输入1000时numWidth的值是3,显然少记了一位。  
  当输入1001时numWidth的值是4,   正确

NO.6   作者: Nhsoft

numWidth   =   ceil(   log10(   binNum   )   );     //确定输入的是几位数  
  楼上说的对,就是这句不对,当输入一个能被10整除的数的时候,长度少了1。  
  所以要改成        
      numWidth   =   ceil(   log10(   binNum+1   )   );     //确定输入的是几位数

NO.7   作者: sandrowjw

应该是for(   int   i   =   numWidth   ;   i   >=   0;   i--   )   ,还有这里可以改成,  
  numBit   =   (long)binNum   /   (   (   long   )   pow(   10,   i   )   )   %   10;  
  来防止溢出。不过输入4、5位数都不会溢出的吧,  
 


    摘要: dim strsql as string strsql="insert into id(name) values (" & txtname.text & ")" 下面执行时为什么总出错啊?但是如果sql语句中的txtname.text换成“fly”就可以,好像是不能用变量,具体该如何用好呢? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE