第二周实验(1‐1)编写递归函数将十进制数转换成二进制数输出。

本文详细介绍了如何使用递归函数将十进制数转换为二进制数,并提供了完整的代码实现。通过算法说明、具体步骤和代码示例,帮助读者理解并掌握十进制到二进制的转换过程。
 
  • /*(1‐1)编写递归函数将十进制数转换成二进制数输出。 
  • * 算法说明:十进制数转换成二进制数输出 
  • *           我们首先要知道具体的算法,知道了具体的算法我们才可能用代码实现; 
  • *           1.将n进行整除运算,当然其中的余数是要输出的。 
  • *             运用递归在输出的处理上就处理的很好; 
  • *           2.明确函数结束的标志,以及做的相应的数据处理; 
  • *           3.定义静态局部变量,实现输入0输出0。 
  • *             且,不会开始输出0。 
  • *       *其实变量a还有一个功能就是记录了调用函数d2b();的次数。 
  • */  
    #include<iostream>
    
    using namespace std;
    
    void d2d(int n)
    {
    	if(n==0)
    	{
    		cout<<0;
    	}
    	else
    	{
    		d2d(n/2);	
    	    cout<<n%2;
    	}
    	
    }
    int main()
    {
    	int a;
    	cin>>a;
    	d2d(a);
    	return 0;
    }

以下为几种编写十进制数转换成二进制数函数的方法: ### 非递归方法(C语言) ```c #include <stdio.h> // 函数十进制数n转换成二进制数将结果保存在des中 void DecToBin(char *des, int n) { int j, i = 0; char temp; while (n != 0) { // 除2取余法 des[i] = n % 2 + '0'; n = n / 2; i++; } des[i] = '\0'; for (j = 0; j < i / 2; j++) { // 反序 temp = des[j]; des[j] = des[i - j - 1]; des[i - 1 - j] = temp; } } int main() { char des[1024]; int n; scanf("%d", &n); DecToBin(des, n); printf("%s\n", des); return 0; } ``` 此方法借助除2取余法把十进制数转换二进制数,再将余数逆序排列得到最终的二进制数。 ### 递归方法(C++) ```cpp #include <iostream> using namespace std; // 递归函数十进制数转换成二进制数输出 void decTobin(int n) { if (n > 1) { decTobin(n / 2); } cout << n % 2; } int main() { int n; cout << "请输入一个十进制数:"; cin >> n; cout << "输出二进制数是:"; decTobin(n); cout << endl; return 0; } ``` 递归方法先对十进制数不断除以2,直至商为0,再反向输出每次的余数,从而得到二进制数。 ### 简单函数方法(C语言) ```c #include <stdio.h> // 函数十进制数n转换成二进制数 void decTobin(int n) { if (n == 0) { printf("0"); return; } 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; printf("请输入一个整数: "); scanf("%d", &n); decTobin(n); printf("\n"); return 0; } ``` 该方法把十进制数逐次除以2,把余数存于数组,最后逆序输出数组元素,以得到二进制数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值