十进制转任意进制(以及任意进制来回转换<了解>)

 十进制转任意进制:

#include <iostream> 
#include <vector>   
#include <string>   using namespace std; // 将十进制数转换为P进制形式的字符串
string toBase(int num, int base) {string result = ""; // 初始化结果字符串为空while (num > 0) { // 当num大于0时执行循环int digit = num % base; // 计算num除以base的余数char digitChar; // 定义字符变量用于表示余数对应的字符if (digit >= 10) { // 如果余数大于等于10digitChar = 'A' + digit - 10; // 将余数转换为对应的字母(大写)} else { // 否则余数为个位数digitChar = '0' + digit; // 将余数转换为对应的字符}result = digitChar + result; // 将当前字符添加到结果字符串的开头num /= base; // 更新num为num除以base的商}return result; // 返回转换后的P进制字符串
}int main() {cout << "请输入需要转换的数字x和进制数P:"; int x;cin >> x;int P; cin >> P; cout <<  toBase(x,P);return 0; 
}

 几个案例解释:

案例一:

  1. 用户输入: 用户输入两个值:xP。在这个例子中,x 为66,P 为4。

  2. 调用 toBase 函数: 函数 toBase 接受两个参数:要转换的十进制数 num(这里是66)和目标进制数 base(这里是4)。

  3. 循环计算

    • 第一次循环
      • 计算 66 % 4 = 2,余数为2。对应的字符是 '2'
      • 66 / 4 = 16,商为16。更新 num 为16。
    • 第二次循环
      • 计算 16 % 4 = 0,余数为0。对应的字符是 '0'.
      • 16 / 4 = 4,商为4。更新 num 为4。
    • 第三次循环
      • 计算 4 % 4 = 0,余数为0。对应的字符是 '0'
      • 4 / 4 = 1,商为1。更新 num 为1。
    • 第四次循环
      • 计算 1 % 4 = 1,余数为1。对应的字符是 '1'
      • 1 / 4 = 0,商为0,循环结束。

    由于 result 是逆序构建的,结果字符串为 '1002'

  4. 输出结果: 将 toBase 的结果输出至标准输出流。 最终结果为 '1002',即66转为4进制的表示是 '1002'

案例二: 

  1. 用户输入: 用户输入两个值:xP。在这个例子中,x 为666,P 为24。

  2. 调用 toBase 函数: 函数 toBase 接受两个参数:要转换的十进制数 num(这里是666)和目标进制数 base(这里是24)。

  3. 循环计算

    • 第一次循环
      • 计算 666 % 24 = 18,余数为18。对应的字符是 'I'
      • 666 / 24 = 27,商为27。更新 num 为27。
    • 第二次循环
      • 计算 27 % 24 = 3,余数为3。对应的字符是 '3'
      • 27 / 24 = 1,商为1。更新 num 为1。
    • 第三次循环
      • 计算 1 % 24 = 1,余数为1。对应的字符是 '1'
      • 1 / 24 = 0,商为0,循环结束。

    由于 result 是逆序构建的,结果字符串为 '1318'

  4. 输出结果: 将 toBase 的结果输出至标准输出流。 最终结果为 '1318',即666转为24进制的表示是 '1318'

案例三: 

  1. 用户输入: 用户输入两个值:xP。在这个例子中,x 为999,P 为36。

  2. 调用 toBase 函数: 函数 toBase 接受两个参数:要转换的十进制数 num(这里是999)和目标进制数 base(这里是36)。

  3. 循环计算

    • 第一次循环
      • 计算 999 % 36 = 27,余数为27。对应的字符是 'R'
      • 999 / 36 = 27,商为27。更新 num 为27。
    • 第二次循环
      • 计算 27 % 36 = 27,余数为27。对应的字符是 'R'
      • 27 / 36 = 0,商为0,循环结束。

    由于 result 是逆序构建的,结果字符串为 'RR'

  4. 输出结果: 将 toBase 的结果输出至标准输出流。 最终结果为 'RR',即999转为36进制的表示是 'RR'

任意进制之间的转换: 

#include <iostream>   
#include <vector>     
#include <string>     using namespace std;   // 将十进制数转换为P进制形式的字符串  
string toBase(int num, int base) {string result = ""; // 初始化结果字符串为空while (num > 0) { // 当num大于0时执行循环int digit = num % base; // 计算num除以base的余数char digitChar; // 定义字符变量用于表示余数对应的字符if (digit >= 10) { // 如果余数大于等于10digitChar = 'A' + digit - 10; // 将余数转换为对应的字母(大写)} else { // 否则余数为个位数digitChar = '0' + digit; // 将余数转换为对应的字符}result = digitChar + result; // 将当前字符添加到结果字符串的开头num /= base; // 更新num为num除以base的商}return result; // 返回转换后的P进制字符串
}// 将P进制数(以字符串形式给出)转换为十进制数  
int fromBase(const string& num, int base) {  int result = 0;  int power = 1;  for (int i = num.size() - 1; i >= 0; --i) {  char digitChar = num[i];  int digit = 0;  if (digitChar >= '0' && digitChar <= '9') {  digit = digitChar - '0';  } else if (digitChar >= 'A' && digitChar <= 'Z') {  digit = digitChar - 'A' + 10;  } else if (digitChar >= 'a' && digitChar <= 'z') {  digit = digitChar - 'a' + 10;  } else {  cerr << "Invalid character in input string!" << endl;  return -1; // 返回-1表示输入字符串中有无效字符  }  result += digit * power;  power *= base;  }  return result;  
}  int main() {  //仅仅在调用第二个函数 cout << "请输入需要转换的数字x(以字符串形式给出)和进制数P:";   string x;  cin >> x;  int P;   cin >> P;   // 检查进制数是否合法(应在2到36之间)  if (P < 2 || P > 36) {  cerr << "Invalid base! Base should be between 2 and 36." << endl;  return 1;  }  int decimalValue = fromBase(x, P);  if (decimalValue != -1) {  cout << "转换后的十进制数为: " << decimalValue << endl;  }  return 0;   
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《QT实用小工具·五十三》会跑走的按钮

1、概述 源码放在文章末尾 该项目实现了会逃跑的按钮&#xff1a; 两个按钮&#xff0c;一个为普通按钮&#xff0c;另一个为会跑走的按钮 鼠标移到上面时&#xff0c;立刻跑掉 针对鼠标、键盘、触屏进行优化 随机交换两个按钮的文字、偶尔钻到另一个按钮下面、鼠标移开自…

pytorch_lightning 训练教程

步骤1&#xff1a;引入必要的库 首先&#xff0c;确保你已经安装了 pytorch_lightning。pip 安装&#xff1a; pip install pytorch_lightning 然后在你的代码中导入必要的库&#xff1a; import pytorch_lightning as pl from pytorch_lightning.callbacks import ModelC…

JDBC——事务相关

JDBC中的事务提交机制 JDbC 事务机制&#xff1a; JDBC中的事务是自动提交的&#xff0c;即JDBC中DML语句执行一次&#xff0c;事务自动提交一次&#xff0c; 这是JDBC默认的事务行为&#xff0c;但是在实际的业务开发中&#xff0c;通常都是N条DML语句共同联合才能完成的&a…

2024.1.1 IntelliJ IDEA 使用记录

2024.1.1 IntelliJ IDEA 使用记录 下载设置文件编码maven 配置 插件可以中文语言包安装lombok 插件Smart Tomcat ( 根据需要安装)Smart Tomcat 配置 项目导入java 设置maven 配置 项目运行SpringBoot 项目运行tomcat 运行 (根据需要)相关依赖添加运行配置 下载 IntelliJ IDEA …

0基础学PHP有多难?

php作为web端最佳的开发语言&#xff0c;没有华而不实&#xff0c;而是经受住了时间考验&#xff0c;是一门非常值得学习的编程语言。 目前市场上各种网站、管理系统、小程序、APP等&#xff0c;基本都是使用PHP开发的&#xff0c;也侧面反映了PHP的需求以及学习的必要性&…

【Python小练】随机验证码

题目 提示输出含数字、字母的四位随机数&#xff0c;输入提示的验证码进行验证&#xff0c;验证码正确结束程序&#xff0c;验证码错误继续输入。 分析 我们可以通过random模块生成0到9的随机数&#xff0c;也可以通过生成65到90的随机数&#xff0c;将65到90的随机ASCLL码转换…

从浏览器输入url到页面加载(十)接收到网卡数据的处理

上一节我们说到数据经过漫长的旅程,从客户端,到达了服务端。然后服务端的等待连接程序被开启,与客户端建立了连接,这一节我们继续说。 目录 1 接收到的数据是什么样的? 2 网卡驱动被激活 3 达到协议栈

Nginx+uwsgi+Django实现本地服务器部署发布

目录 安装相关软件包安装python3.9Nginx安装 环境准备部署uwsgiWSGI是什么&#xff1f;步骤 遇到的问题 安装相关软件包 安装python3.9 安装依赖包 yum install libffi-devel -y yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-dev…

前端传递list(数组)类型参数,后端接收失败

一顿报错,我之前遇到的list都是Long类型 貌似用GET也是可以的,但是很奇怪一直报错 就是不可以 后来去百度 查询到可以用两种方法解决这个问题 1、拆开 传 以GET方式&#xff0c;后端GetMappingRequestParam接收。 2、以Post方式传&#xff0c;后端创建dto PostMappingReques…

React 之 Effect与事件(event)(八)

Effect&#xff08;useEffect Hook&#xff09; 在React中&#xff0c;Effect&#xff08;或者更具体地说&#xff0c;useEffect Hook&#xff09;是一个特殊的函数&#xff0c;它允许你在函数组件中执行副作用操作。这些副作用操作可能包括数据获取、手动更改DOM、订阅或取消订…

Open AI API 参数解释

在使用 OpenAI 的 API 发送请求时&#xff0c;temperature、top_p 和 stream 这几个参数具有特定的含义和作用&#xff1a; temperature&#xff1a; 用途&#xff1a;这个参数用于控制模型输出的随机性或多样性。temperature 的值可以从 0 到 1 范围内调整。行为&#xff1a;当…

55. 【Android教程】位图:Bitmap

在上一节学习 Drawable 图像资源的时候我们在很多地方用到了 bitmap&#xff0c;bitmap 其实就是真实图片在 Android 中最直接的表现形式&#xff0c;这一节我们来仔细学习一下 Bitmap 的使用。 1. 什么是 Bitmap Bitmap 在 Android 中对应一张图片文件&#xff0c;它是一个二…

普通人可以做什么兼职副业?推荐7 种卖情怀的生意,小众高利润

一瓶茅台&#xff0c;尽管成本仅为70元&#xff0c;但其建议零售价却高达1499元&#xff0c;而在市场上的流通价格更是突破了2600元大关。同样的一款手提包&#xff0c;在网络上仅售几百元&#xff0c;但一旦贴上了LV的标志&#xff0c;其售价便瞬间飙升至一万多元。这究竟是为…

【超好用的前端表单辅助功能】

前端表单辅助功能 1. 根据模块自动生成目录锚点定位2. 描点定位动态组件3. 隔离组件&#xff0c;组件内部实现校验逻辑&#xff0c;交给提交按钮统一处理4. 选择不同的类型需要重组不同的模块展示&#xff0c;并整合数据传给后端 最近做了一个复杂的表单&#xff0c;涉及到的技…

AI实景自动无人直播软件:引领直播行业智能化革命;提升直播效果,无人直播软件助力智能讲解

随着科技的快速发展&#xff0c;AI实景自动无人直播软件正在引领直播行业迈向智能化革命。它通过智能讲解、一键开播和智能回复等功能&#xff0c;为商家提供了更高效、便捷的直播体验。此外&#xff0c;软件还支持手机拍摄真实场景或搭建虚拟场景&#xff0c;使直播画面更好看…

43.WEB渗透测试-信息收集-域名、指纹收集(5)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;42.WEB渗透测试-信息收集-域名、指纹收集&#xff08;4&#xff09; web-架构资产收集&a…

蓝桥杯备赛(填空题)【Python B组】

一、弹珠堆放 问题描述 小蓝有 20230610 颗磁力弹珠&#xff0c;他对金字塔形状尤其感兴趣&#xff0c;如下图所示&#xff1a; &#xff08;图是盗来的啊&#xff0c;侵权请联系删除&#xff09; 问题分析 找规律&#xff0c;第一层1个&#xff0c;第二层3个&#xff0c;第…

UE5 audio capture 回声问题 ||在安卓上有爆鸣声

参考视频 0.基本步骤 【UE4_蓝图】录制麦克风声音/系统声音并输出保存WAV文件_ue4录音-CSDN博客 1.步骤 1.创建Sound Submix A 2. 右键新建Sound Submix B 3.把B的两个参数调为-96 4.audio capture的Base Submix&#xff0c;把前面提到的A赋值进去 5.开始录制输出和完成录制…

PXE远程部署CentOS系统

文章目录 在局域网内搭建PXE服务器PXE 启动组件PXE的优点实验一、搭建PXE服务器&#xff0c;实现远程部署CentOS系统环境准备server关闭防火墙安装组件准备 Linux 内核、初始化镜像文件及PXE引导文件配置启用TFTP 服务配置启动DHCP服务准备CentOS 7 安装源配置启动菜单文件 Cli…

突然断电,瀚高数据库启动失败

服务器临时断电后&#xff0c;数据库启动不起来 ps -ef|grep postgres 进到数据库的data目录下看下ls 看下 查看临时文件&#xff1a; ls -la /tmp 把这两个5866的文件改个名字张老师 加个bak就行 改完了pg_ctl start起一下