#include  <iostream.h > void print(const int num){ 
int *pnum; 
int onum=num; 
int i=0; 
for(;onum!=1 ¦ ¦onum!=0;i++){ 
*(pnum++)=onum%2; 
onum/=2; 

*pnum=onum; 
for(;i!=0;i--) 
cout < <*(pnum--); 
} void main(){ 
int num=123456789; 
cout < <"二进制的值为:"; 
print(num); 
cout < < '\n '; 

这个程序哪错了,请指教

解决方案 »

  1.   


    #include   <iostream.h  >  void print(const int num){  
      int bitBuf[32];
      int *pnum = &bitBuf[0];  
      int onum=num;  
      int i=0;  
      for(;onum!=1 ¦ ¦onum!=0;i++){  
        *(pnum++)=onum%2;  
        onum/=2;  
      }  
      *pnum=onum;  
      for(;i!=0;i--)  
        cout  << *(pnum--);  
    }  void main(){  
      int num=123456789;  
      cout  <  <"二进制的值为:";  
      print(num);  
      cout  <<  '\n  ';  
    }  
    建议转换程序改为void print(const int num) {
      unsigned int mask = 0x80000000;
      for(int i=0;i<32;i++) {
        if(mask & (unsigned int)num)
          count << "1";
        else 
          count << "0";
        mask >>= 1;
      }
    }
    如果不需要前面的若干零,可以考虑void print(const int num) {
      unsigned int mask = 0x80000000;
      int flag = 0;
      for(int i=0;i<32;i++) {
        if(mask & (unsigned int)num) {
          flag = 1;
          count << "1";
        }
        else if(flag) 
          count << "0";
        mask >>= 1;
      }
    }
      

  2.   

    嗯,你光声明了一个int型的指针就往里面放数怎么能行,往里放数是需要先申请空间的。
      

  3.   

    我现在不知道num编程2进制有多长,定义一个数组的话有缺陷,请问应该怎么办