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

这篇具有很好参考价值的文章主要介绍了[保研/考研机试] 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;
}

提交结果:

[保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现,机试刷题记录,c++,算法,数据结构,研究生复试,考研机试

文章来源地址https://www.toymoban.com/news/detail-642882.html

到了这里,关于[保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [保研/考研机试] KY235 进制转换2 清华大学复试上机题 C++实现

    KY235 进制转换2 https://www.nowcoder.com/questionTerminal/ae4b3c4a968745618d65b866002bbd32 将M进制的数X转换为N进制的数输出。 输入的第一行包括两个整数:M和N(2=M,N=36)。 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。 输出X的N进制表示的数。 将M进制

    2024年02月13日
    浏览(49)
  • [保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

    将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述: 每行输出对应的二进制数。 仍然是“除2取余法”,主要的区别在

    2024年02月13日
    浏览(80)
  • [保研/考研机试] KY180 堆栈的使用 吉林大学复试上机题 C++实现

    堆栈的使用_牛客题霸_牛客网     堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入描述:     对于每组测试数据,第一行是一个正整数 n(0 n = 1

    2024年02月13日
    浏览(108)
  • [保研/考研机试] KY11 二叉树遍历 清华大学复试上机题 C++实现

    二叉树遍历_牛客题霸_牛客网 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。题目来自【牛客题霸】 https://www.nowcoder.com/share/jump/437195121692547007478 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一

    2024年02月11日
    浏览(40)
  • [保研/考研机试] KY129 简单计算器 浙江大学复试上机题 C++实现

        读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 输入描述:     测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

    2024年02月13日
    浏览(43)
  • [保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现

    KY3 约数的个数 https://www.nowcoder.com/share/jump/437195121691716950188 输入n个整数,依次输出每个数的约数的个数 输入的第一行为N,即数组的个数(N=1000) 接下来的1行包括N个整数,其中每个数的范围为(1=Num=1000000000) 可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上

    2024年02月13日
    浏览(50)
  • [保研/考研机试] KY110 Prime Number 上海交通大学复试上机题 C++实现

    Prime Number https://www.nowcoder.com/share/jump/437195121691717713466 Output the k-th prime number. 输入描述: k≤10000 输出描述: The k-th prime number. 输入: 输出:

    2024年02月13日
    浏览(37)
  • [保研/考研机试] KY102 计算表达式 上海交通大学复试上机题 C++实现

    对于一个不存在括号的表达式进行计算 输入描述: 存在多组数据,每组数据一行,表达式不存在空格 输出描述: 输出结果 ①设立运算符和运算数两个栈,,一个用来存储运算符,另一个用来存储运算数。 ②在运算符栈中放置一个特殊运算符#,其优先级最低。 ③将表达式尾部

    2024年02月13日
    浏览(89)
  • [保研/考研机试] KY163 素数判定 哈尔滨工业大学复试上机题 C++实现

    素数判定 https://www.nowcoder.com/share/jump/437195121691718831561 给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。 测试数据有多组,每组输入一个数n。 对于每组输入,若是素数则输出yes,否则输入no。

    2024年02月13日
    浏览(50)
  • [保研/考研机试] KY7 质因数的个数 清华大学复试上机题 C++实现

    求正整数N(N1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。 输入描述: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1N10^9)。 输出描述: 对于每组数据,输出N的质因数的个数。 输入: 输出: 只需要判断因数是否能够整除当前

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包