C语言将十进制数转化为二进制(递归,规定位数)

时间:2021-10-03 22:24:59

/*运用递归算法*/

#include<stdio.h>
void B(int n)   //定义函数
{
 if (n != 0)
 {
  printf("%d",n%2);
  B(n / 2);
 }
}
int main()
{

 int n;
 printf("Input number:");

 scanf("%d",&n);

  printf("输出二进制:");

 B(n);   //在B()函数里打印二进制数
 return 0;
}

/*定义数组并使用do{}while();进行赋值*/

#include<stdio.h>
int main()
{
 int a;
 char s[20];
 int i = 0, rem;
 printf("Input number:");
 scanf("%d", &a);
 do
 {
  rem = a % 2;

  a = a / 2;
  s[i] = rem;
  i++;
 } while (a != 0);
 printf("输出二进制:");
 while (i > 0)
  printf("%d", s[--i]);//

  return 0;
}

/*该代码可以实现固定输出位数*/

#include<stdio.h>
#define N 32  //固定位数
int main()
{
 int arr[N] = {0};//将数组初始化为0(位数不满时,将输出0填补)
 int i;
 int n;
 printf("Input number:");
 scanf("%d",&n);
 for (i = N-1; i >=0; i--)  //对数组从后往前赋值
 {
  arr[i] = n % 2;
  n = n / 2;
 }

 printf("输出二进制:");
 for (i = 0; i <= N - 1; i++)
 {
  printf("%d",arr[i]);
 }
 return 0;
}