当前位置: 首页 > news >正文

C语言求10进制转2进制(除2取余法)

1.思路:除2取余法,也就是说用除以2取余来将10进制数转换为二进制

2.两种代码实现,这里用了两,一个递归一个非递归。

  递归是一种编程技术,其中一个函数直接或间接地调用自己。递归通常用于解决那些可以被分解为更小的、相同类型的子问题的问题。

  递归函数必须满足两个基本条件:

  1. 基本情况(Base Case):这是递归结束的条件,通常是一个简单的问题,可以直接解决而不需要进一步的递归调用。
  2. 递归步骤(Recursive Step):这是函数调用自己的部分,它将问题分解成更小的子问题。

  递归的工作原理可以类比为数学中的等比数列求和,或者像是一个俄罗斯套娃,每个问题都包含了一个更小的问题,直到达到基本情况。

3.代码实现

(1)递归:这里定义了一个printBinary函数,它递归地将输入的10进制数除以2并打印出余数,直到10进制数变为0。在main函数中,程序会提示用户输入一个10进制数,然后调用printBinary函数来打印出对应的二进制表示。

#include "stdio.h"// 函数用于打印二进制表示:除2取余
void printBinary(int decimal) {if (decimal > 0) {printBinary(decimal / 2);printf("%d", decimal % 2);}
}int main() {int decimal;printf("请输入一个10进制数: ");scanf("%d", &decimal);if (decimal < 0) {printf("负数的二进制表示不是标准的,这里错误!请重输!\n");} else {printf("该10进制数的二进制表示为: ");printBinary(decimal);printf("\n");}return 0;
}

(2)非递归:这个程序首先检查输入的数是否为负数,如果是,打印负号并取其绝对值。然后使用一个循环来不断地将10进制数除以2并取余数,将余数作为二进制的最低位,然后乘以10的相应次方,累加到binary变量中。循环继续直到10进制数变为0。最后,打印出得到的二进制数。

#include "stdio.h"
#include "math.h"//pow()int main() {int decimal, binary = 0, remainder, i = 0;printf("请输入一个10进制数: ");scanf("%d", &decimal);// 处理负数if (decimal < 0) {printf("-");decimal = -decimal; // 取其绝对值}// 循环直到decimal为0while (decimal > 0) {remainder = decimal % 2;binary = binary + (remainder * (int)pow(10, i));decimal = decimal / 2;i++;}printf("该10进制数的二进制表示为: %d\n", binary);return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux x86_64平台指令替换函数 text_poke_smp/bp
  • python的魔法方法
  • 虚拟现实3d场景漫游体验实现了“所见即所得”
  • TCP粘包
  • 如何搭建一个新生录取查询系统
  • pytorch通过 tensorboardX 调用 Tensorboard 进行可视化
  • Pyspider WebUI 未授权访问致远程代码执行漏洞复现
  • 深入剖析预处理
  • 【LabVIEW学习篇 - 5】:数据类型——数值、字符串
  • RockYou2024 发布史上最大密码凭证
  • cs也能上线liunx马??你会吗???解决木马生成的操作。
  • 化工厂人员定位系统有怎样优势?
  • Zynq系列FPGA实现SDI视频编解码+UDP以太网传输,基于GTX高速接口,提供3套工程源码和技术支持
  • java花店管理系统eclipse开发mysql数据库
  • 【java12】Collectors和Completionstage的新API
  • Android Studio:GIT提交项目到远程仓库
  • Android 控件背景颜色处理
  • co.js - 让异步代码同步化
  • EOS是什么
  • JavaScript对象详解
  • javascript面向对象之创建对象
  • Node 版本管理
  • npx命令介绍
  • oldjun 检测网站的经验
  • Phpstorm怎样批量删除空行?
  • vue2.0项目引入element-ui
  • 高程读书笔记 第六章 面向对象程序设计
  • 解析带emoji和链接的聊天系统消息
  • 模型微调
  • 区块链技术特点之去中心化特性
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 我与Jetbrains的这些年
  • 一些关于Rust在2019年的思考
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 通过调用文摘列表API获取文摘
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #数据结构 笔记三
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (四)事件系统
  • (一)Thymeleaf用法——Thymeleaf简介
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • ****Linux下Mysql的安装和配置
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 怎么循环得到数组里的值_关于js数组
  • .netcore如何运行环境安装到Linux服务器
  • .net反混淆脱壳工具de4dot的使用