[保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现

题目链接:

数制转换https://www.nowcoder.com/share/jump/437195121691734210665

描述

求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

输入描述:

输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。 数据可能存在包含前导零的情况。

输出描述:

可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

示例1

输入:

15 Aab3 7

输出:

210306

思路:

  1. 读入原进制 a、数字字符串 s 和目标进制 b。

  2. 将数字字符串按权展开转换为十进制数值 num,num 初始值为 0。

  3. 将十进制数值 num 按目标进制 b 转换为字符,将字符添加到结果字符串 res 中。

  4. 反转结果字符串 res 得到正确的转换结果。

  5. 输出转换后的结果。

源代码:

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;

// 将字符 c 转换为对应的十进制数值
int CharToInt(char c) {
    if (c >= '0' && c <= '9') {
        return c - '0';  // '0' 的 ASCII 值为 48,减去 '0' 后得到数值
    }
    else if (c >= 'a' && c <= 'f') {
        return c - 'a' + 10;  // 'a' 的 ASCII 值为 97,减去 'a' 后加上 10 得到数值
    }
    else{
        return c - 'A' + 10;  // 'A' 的 ASCII 值为 65,减去 'A' 后加上 10 得到数值
    }
}

// 将整数 n 转换为对应的字符
char IntToChar(int n) {
    if (n >= 0 && n <= 9) {
        return n + '0';  // 数值加上 '0' 的 ASCII 值即为对应字符
    }
    else {
        return n - 10 + 'A';  // 数值减去 10 后加上 'A' 的 ASCII 值即为对应字符
    }
}

int main()
{
    int a, b; // a:原进制,b:目标进制
    string s; // 输入的数字字符串
    while (cin >> a >> s >> b) {
        long num = 0; // 初始化十进制数值
        for (int i = s.size() - 1; i >= 0; i--) {
            num += CharToInt(s[i]) * pow(a, s.size() - 1 - i); // 将输入的数字字符串按权展开转换为十进制数值
        }
        
        string res = ""; // 初始化目标进制的结果字符串
        while (num != 0) {
            res += IntToChar(num % b); // 将十进制数值按目标进制转换为字符并添加到结果字符串中
            num /= b; // 取商继续处理
        }
        
        reverse(res.begin(), res.end()); // 反转结果字符串得到正确的转换结果
        cout << res << endl; // 输出结果
    }

    return 0;
}

提交结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Paragon NTFS15安装包下载免费版ntfs磁盘读写工具

Paragon NTFS for Mac 15 简体中文标准版轻量级的快捷菜单&#xff0c;可执行挂载、卸载和验证操作。软件设计优秀&#xff0c;与 macOS 无缝衔接&#xff0c;操作简单。轻量级的快捷菜单&#xff0c;可执行挂载、卸载和验证操作。软件设计优秀&#xff0c;与 macOS 无缝衔接&a…

安卓13不再支持PPTP怎么办?新的连接解决方案分享

随着Android 13的发布&#xff0c;我们迎来了一个令人兴奋的新品时刻。然而&#xff0c;对于一些用户而言&#xff0c;这也意味着必须面对一个重要的问题&#xff1a;Android 13不再支持PPTP协议。如果你是一个习惯使用PPTP协议来连接换地址的用户&#xff0c;那么你可能需要重…

【BASH】回顾与知识点梳理(二十二)

【BASH】回顾与知识点梳理 二十二 二十二. Linux 账号管理22.1 Linux 的账号与群组使用者标识符&#xff1a; UID 与 GID使用者账号/etc/passwd 文件结构/etc/shadow 文件结构 关于群组&#xff1a; 有效与初始群组、groups, newgrp/etc/group 文件结构有效群组(effective grou…

技术分享 | 如何编写同时兼容 Vue2 和 Vue3 的代码?

LigaAI 的评论编辑器、附件展示以及富文本编辑器都支持在 Vue2&#xff08;Web&#xff09;与 Vue3&#xff08;VSCode、lDEA&#xff09;中使用。这样不仅可以在不同 Vue 版本的工程中间共享代码&#xff0c;还能为后续升级 Vue3 减少一定阻碍。 那么&#xff0c;同时兼容 Vue…

爬虫017_urllib库_get请求的quote方法_urlencode方法_---python工作笔记036

按行来看get请求方式 比如这个地址 上面这个地址复制粘贴过来以后 可以看到周杰伦变成了一堆的Unicode编码了 所以这个时候我们看,我们说https这里,用了UA反爬,所以这里 我们构建一个自定义的Request对象,里面要包含Us

【kubectl详解】

目录 一、陈述式资源管理方法二、基本信息查看1、查看 master 节点状态2、查看命名空间3、查看命名空间的所有资源4、创建命名空间app5、删除命名空间app6、在命名空间kube-public 创建副本控制器&#xff08;deployment&#xff09;来启动Pod&#xff08;nginx-dz&#xff09;…

优思学院|质量第一的目的是什么?

国外有一句很著名的话&#xff1a;Quality comes first, profit is its logical sequence&#xff0c;意思是&#xff1a;质量第一&#xff0c;利润是其合理的结果&#xff0c;这句话也是很多公司或者商店使用的标语。 简而言之&#xff0c;只要你把质量放在第一位&#xff0c…

Windows下安装Sqoop

Windows下安装Sqoop 一、Sqoop简介二、Sqoop安装2.1、Sqoop官网下载2.2、Sqoop网盘下载2.3、Sqoop安装&#xff08;以version&#xff1a;1.4.7为例&#xff09;2.3.1、解压安装包到 D:\bigdata\sqoop\1.4.7 目录2.3.2、新增环境变量 SQOOP_HOME2.3.3、环境变量 Path 添加 %SQO…

07-3_Qt 5.9 C++开发指南_文件目录操作

文章目录 1. 文件目录操作相关的类2. 实例概述2.1 实例功能2.2 信号发射信息的获取 3. QCoreApplication 类4. QFile类5. QFileInfo类6. QDir类7. QTemporaryDir 和QTemporaryFile8. QFileSystemWatcher 类9. 框架和源码9.1 可视化UI设计9.2 dialog.cpp 1. 文件目录操作相关的类…

【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…

Qt应用开发(基础篇)——拆分器窗口 QSplitter

一、前言 QSplitter继承于QFrame&#xff0c;QFrame继承于QWidget&#xff0c;是Qt的一个基础工具类。 框架类QFrame介绍 QSplitter拆分器&#xff0c;用户通过拖动子部件之间的边界来控制子部件的大小&#xff0c;在应用开发中数据分模块展示、图片展示等场景下使用。 二、QSp…

适合大学生的兼职有什么?推荐四个靠谱的副业!

不知不觉新学期也要开始了&#xff0c;大学生们会不会因为苦恼的钱不够花而不够尽兴&#xff0c;很多大学生都想利用下课的时间来做一份兼职&#xff0c;但是有很多鉴于学校封校不知道自己可以做什么&#xff0c;我来为大家整理了以下几个大学生在学校内相对可靠的兼职。 第一个…

webpack复习

webpack webpack复习 webpack基本配置 拆分配置 - 公共配置 生产环境配置 开发环境配置 使用merge webpack-dev-server 启动本地服务 在公共中引入babel-loader处理es6 webpack高级配置 多入口文件 enty 入口为一个对象 里面的key为入口名 value为入口文件路径 例如 pa…

mac安装nvm管理工具遇到的问题和解决方法

nvm 是一款可以管理多版本node的工具&#xff0c;因为是刚买没多久的电脑之前用的都是windows&#xff0c;昨天折腾了一下午终于倒腾好了 第一步&#xff1a; 卸载电脑已有的node&#xff1b;访问nvm脚本网址&#xff0c;另存为到电脑上任何目录&#xff0c;我是放在桌面上的…

【音视频、chatGpt】h5页面最小化后,再激活后视频停住问题的解决

目录 现象 观察 解决 现象 页面有时候要切换&#xff0c;要最小化&#xff1b;短时间或者几个小时内切换回来&#xff0c;视频可以正常续上&#xff1b;而放置较长时间&#xff0c;几个小时或者一晚上&#xff0c;切换回来后&#xff0c;视频可能卡死 观察 切换页面&#x…

leetcode118. 119.杨辉三角

118 题目&#xff1a; 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 思路&#xff1a; 可以发现从第三行开始&#xff0c;从第二个元素到倒数第二个元素&#xff0c;每个元素都…

TypeScript 关于对【泛型】的定义使用解读

目录 概念导读泛型函数多个泛型参数泛型约束泛型别名泛型接口泛型类总结&#xff1a; 概念导读 泛型&#xff08;Generics&#xff09;是指在定义函数、接口或类的时候&#xff0c;不预先指定具体的类型&#xff0c;而在使用的时候再指定类型的一种特性。使用泛型 可以复用类型…

C#小轮子:Visual Studio自动编译Sass文件

文章目录 前言插件安装插件使用compilerconfig.jsonsass输入和css输出&#xff08;自动生成&#xff09;默认配置&#xff08;我不懂就不去动他了&#xff09; 前言 我们知道css文件用起来太麻烦&#xff0c;如果样式一多&#xff0c;嵌套起来用css样式就眼花缭乱。Sass使用层…

ElasticSearch:项目实战(1)

es环境搭建参考&#xff1a;ElasticSearch&#xff1a;环境搭建步骤_Success___的博客-CSDN博客 需求&#xff1a; 用户输入关键可搜索文章列表 关键词高亮显示 文章列表展示与home展示一样&#xff0c;当用户点击某一篇文章&#xff0c;可查看文章详情 思路&#xff1a; …

CSS-grid布局

网格布局也叫grid布局&#xff0c;平常写样式的时候基本上都是用的flex布局。 像以下布局&#xff0c;用flex布局就可能会有有点麻烦&#xff0c;这时候用grid布局就方便的多了。 或者是照片墙 grid布局就是将容器划分为行和列&#xff0c;产生单元格&#xff0c;然后在指定的…