lucy6666 发表于 2020-10-5 09:42:07

新手求助 在程序中间补充什么可以是十进数转换为二进数

#include <stdio.h>

void print_binary(unsigned int n) {
        //在这里补充

}

int main(void) {
        unsigned int num;
       
        scanf("%d", &num);
        print_binary(num);
       
        return 0;
}

就是将176=10110000

liuzhengyuan 发表于 2020-10-5 09:47:41

首先你要了解十进制转二进制的方法

风过无痕1989 发表于 2020-10-7 10:45:50

本帖最后由 风过无痕1989 于 2020-10-7 11:13 编辑

// 将十进制数转换成二进制数
#include <stdio.h>

void print_binary(unsigned int n)
{
    int i,a = {0},b = {0};
        for (i = 0;i < 8;i++)
        {
      if (n >= 2)
                {
                  a = n % 2;
                  n /= 2;
                }
                else
                {
                        a = n;
                        break;
                }
        }

    for (i = 0;i < 8;i++)
        {
          b = a;   // 调换成正常的二进制高低位
        }

// 若输入为有符号数,则加上下面注释这一段

/*        if(n >0)
        {
          a = 1;            // 若输入为正数,最高位为 1
        }
        else
        {
          a = 0;            // 若输入为负数,最高位为 0
        }
*/

        for (i = 0;i < 8;i++)
        {
          printf("%d",b);
        }
        printf("\n");
}

int main(void)
{
    unsigned int num;
      
    scanf("%d", &num);
    print_binary(num);
      
    return 0;
}

乐乐学编程 发表于 2020-10-8 22:03:52

得到满意答案没?还有什么不懂的,说出来,我们会帮你的

风过无痕1989 发表于 2020-10-9 00:59:53

乐乐学编程 发表于 2020-10-8 22:03
得到满意答案没?还有什么不懂的,说出来,我们会帮你的

可能是他没有明白我中间注释的那一段,拿着我的程序运行套他的:176 <==> 10110000 呢

而我的程序运行后:176 <==> 00110000 ,原因是他在主函数定义了无符号数 unsigned int num; 故而,我将最高位的符号位注释掉了

风过无痕1989 发表于 2020-10-9 01:00:52

这回明白了没有?
页: [1]
查看完整版本: 新手求助 在程序中间补充什么可以是十进数转换为二进数