|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本题要求实现一个函数,将非负整数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;
}
/* 你的代码将被嵌在这里 */
这题用递归和不用递归分别怎么写
使用递归实现:
- #include <stdio.h>
- void dectobin(int n) {
- if (n == 0) {
- return;
- }
- dectobin(n / 2);
- printf("%d", n % 2);
- }
- int main() {
- int n;
- scanf("%d", &n);
- dectobin(n);
- return 0;
- }
复制代码
不使用递归实现:
- #include <stdio.h>
- void dectobin(int n) {
- int binary[32];
- int i = 0;
- while (n > 0) {
- binary[ i] = n % 2;
- n = n / 2;
- i++;
- }
- for (int j = i - 1; j >= 0; j--) {
- printf("%d", binary[j]);
- }
- }
- int main() {
- int n;
- scanf("%d", &n);
- dectobin(n);
- return 0;
- }
复制代码
在递归实现中,我们使用递归函数将整数n除以2,直到n为0,然后倒序输出余数即可得到二进制表示。在非递归实现中,我们使用一个数组来保存每次除以2的余数,然后倒序输出该数组即可得到二进制表示。
|
|