C语言编程 C Language Programming - 0
2018-12-11 本文已影响0人
Articraft
编程题0008 (from Programming Teaching Assistant (PTA))
十进制转换二进制
本题要求实现一个函数,将正整数n转换为二进制后输出。
函数接口定义:void dectobin( int n );
函数dectobin
应在一行中打印出二进制的n
。建议用递归实现。
裁判测试程序样例:
#include <stdio.h>
void dectobin( int n );
int main()
{
int n;
scanf("%d", &n);
dectobin(n);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
10
输出样例:
1010
Answer 1 - Preliminary:
void dectobin( int n ){
int out = 0, base = 1;
while(n) {
out += (n%2) * base;
base *= 10;
n /= 2;
}
printf("%d",out);
}
Answer 2 - Secondary:
void dectobin( int n ){
int cnt = 1, n_cpy = n;
while(n = n/2) cnt++;
char *out =(char *) malloc(cnt + 1); out[cnt]='\0';
int i = cnt - 1;
n = n_cpy;
while(i >= 0){
out[i] = '0' + (n%2);
n /= 2;
i--;
}
printf("%s",out);
}