A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ★彬★卍囧神 中级黑马   /  2014-5-12 18:32  /  2099 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
编写一个函数输出整数的二进制形式?
*/

#include <stdio.h>
void erzhuan(int n );  //整数转二进制函数转换函数申明
int main()
{        int a;
        printf("请输入一个整数:\n");
        scanf("%d",&a);
        erzhuan(a);
        return 0;

}

void erzhuan(int n )
{
        int number =  (sizeof (int) << 3) - 1 ;  //调用sizeof函数算字节数
        for( int h;number >= 0; number--)
        {       
                if( (number+1) % 4 == 0)        {                //每4个就空格一次
                        printf(" ");   }
                                h=n>>number&1;                                //右移动number个单位
                                printf("%d",h);
                               
        }
        printf("\n");
}
运行结果:



最前面的空格怎么去掉.


QQ截图20140512182634.png (19 KB, 下载次数: 39)

QQ截图20140512182634.png

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1 以后程序都用插入代码格式

查看全部评分

6 个回复

倒序浏览
本帖最后由 兰闻天 于 2014-5-12 20:40 编辑
  1. void erzhuan(int n )
  2. {
  3.         int number =  (sizeof (int) << 3) - 1 ;  //调用sizeof函数算字节数
  4.         for( int h;number >= 0; number--)
  5.         {        
  6.                 if( (number+1) % 4 == 0 && (number + 1!= 31))        {                //每4个就空格一次且第一个去除
  7.                         printf(" ");   }
  8.                                 h=n>>number&1;                                //右移动number个单位
  9.                                 printf("%d",h);
  10.                                 
  11.         }
  12.         printf("\n");
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报
0除4也余0,加上一个判断条件且number!=0就行了吧
回复 使用道具 举报

  1. /*
  2. 编写一个函数输出整数的二进制形式?
  3. */

  4. #include <stdio.h>
  5. void erzhuan(int n );  //整数转二进制函数转换函数申明
  6. int main()
  7. {        int a;
  8.     printf("请输入一个整数:\n");
  9.     scanf("%d",&a);
  10.     erzhuan(a);
  11.     return 0;
  12.    
  13. }

  14. void erzhuan(int n )
  15. {
  16.     int number =  (sizeof (int) << 3) - 1 ;  //调用sizeof函数算字节数
  17.     int a = number; // 加个变量,初始化等于number
  18.     for( int h;number >=0; number--)
  19.     {
  20.         h=n>>number&1;  // 在没有判断之前先计算输出
  21.         printf("%d",h);
  22.         
  23.         if(number% 4 == 0 )//这里的number从31开始,第一次就不会有空格了
  24.         {                //每4个就空格一次
  25.             printf(" ");
  26.         }
  27.       
  28.         
  29.     }
  30.     printf("\n");
  31. }
复制代码


下面是我之前写的,用while看着更舒服
  1. void printBinary(int number)
  2. {
  3.     //记录现在挪到第几位,默认31
  4.     //右移
  5.     //减号的优先级大于左移
  6.     int temp =(sizeof(number)<<3)-1;
  7.     while (temp>=0)
  8.     {   int value = number>>temp & 1;
  9.         
  10.         
  11.         
  12.         printf("%d",value);
  13.         
  14.         
  15.         if(temp%4 ==0)
  16.         {
  17.             printf(" ");
  18.         }
  19.         
  20.         temp--;
  21.     }
  22.     printf("\n");
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报
  1. #include <stdio.h>
  2. void erzhuan(int n );  //整数转二进制函数转换函数申明
  3. int main()
  4. {        int a;
  5.     printf("请输入一个整数:\n");
  6.     scanf("%d",&a);
  7.     erzhuan(a);
  8.     return 0;
  9.    
  10. }

  11. void erzhuan(int n )
  12. {
  13.     int n1 = 0;
  14.     int number =  (sizeof (int) << 3) - 1 ;  //调用sizeof函数算字节数
  15.     for( int h;number >= 0; number--)
  16.     {
  17. //        if( (number+1) % 4 == 0)        {                //每4个就空格一次
  18. //            printf(" ");   }
  19.         if(n1 != 0 && n1 % 4 == 0)
  20.             printf(" ");
  21.         h=n>>number&1;
  22.         //右移动number个单位
  23.         n1++;
  24.         printf("%d",h);
  25.         
  26.     }
  27.     printf("\n");
  28. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报

学会这招了,谢谢!!!这里(number + 1!= 32)
回复 使用道具 举报
为梦想挺身而出 发表于 2014-5-12 21:14
下面是我之前写的,用while看着更舒服

恩恩,这个我知道
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马