神秘博客

【C语言】分别用循环和递归以二进制形式打印整数

//以二进制形式打印整数
#include <stdio.h>

void to_binary(unsigned long n);
void fo_binary(unsigned long n);

int main()
{
  unsigned long number;

  printf("输入整数[q退出]: ");

  while (scanf_s("%lu", &number) == 1)
  {
    printf("递归: 二进制为 ");
    to_binary(number);
    putchar('\n');
    printf("循环: 二进制为 ");
    fo_binary(number);
    putchar('\n');
    printf("输入整数[q退出]: ");
  }
  printf("完成\n");

  system("pause");
  return 0;
}

//用递归打印整数的二进制
void to_binary(unsigned long n)
{
  int r;

  r = n % 2;
  if (n >= 2)
    to_binary(n / 2);
  putchar(r == 0 ? '0' : '1');

  //return;
}

//用循环打印整数的二进制
void fo_binary(unsigned long n)
{
  int i, j[50],x, z;

  for (i = 0, z = 0; n >= 2; n /= 2, z++)
  {
    i = n % 2;
    if (i == 0)
      j[z] = 0;
    else
      j[z] = 1;
    

  }
  putchar('1');
  for (x = z-1; x >= 0; x--)
  {
    printf("%d", j[x]);
  }
  putchar('\n');
}

 

版权说明:
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

觉得文章有用就请我吃包辣条吧

微信扫一扫打赏