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

这篇具有很好参考价值的文章主要介绍了[保研/考研机试] KY80 进制转换 北京大学复试上机题 C++实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目链接:

KY80 进制转换https://www.nowcoder.com/share/jump/437195121691735660774

描述

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串(注意可能存在的一个测试用例里的多组数据)。

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

示例1

输入:

0xA

输出:

10

思路:

  1. 读入十六进制数值字符串 s。

  2. 初始化结果字符串 res 为 "0",表示最终的十进制结果。

  3. 从字符串的第三位开始遍历,即从十六进制数值的有效部分开始,因为前两位为 "0x" 表示十六进制前缀。

  4. 在遍历过程中,先将结果字符串 res 乘以 16,相当于将十六进制数值左移 4 位。

  5. 再将当前字符代表的值加到结果字符串 res 中,通过调用 Add 函数实现。

  6. 输出最终的十进制结果。

源代码:

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

// 将十六进制字符转换为对应的整数
int CharToInt(char c) {
    if (c >= '0' && c <= '9') {
        return c - '0';  // 数字字符直接转换
    } else {
        return c - 'A' + 10;  // 字母字符转换,a 对应 10,b 对应 11,依此类推
    }
}

// 将字符串表示的十六进制数与整数 x 相乘
string multiple(string str, int x) {
    int carry = 0;  // 进位
    string result;  // 存放结果
    for (int i = str.size() - 1; i >= 0; i--) {
        int current = x * CharToInt(str[i]) + carry; // 计算当前位的结果
        result = char(current % 10 + '0') + result;  // 将当前位的结果插入到结果的前面
        carry = current / 10;  // 更新进位
    }
    while (carry != 0) {
        result = char(carry % 10 + '0') + result;  // 处理剩余的进位
        carry /= 10;
    }
    return result;
}

// 将字符串表示的十六进制数与整数 x 相加
string Add(string str, int x) {
    int carry = x;  // 初始进位为 x
    string result;  // 存放结果
    for (int i = str.size() - 1; i >= 0; i--) {
        int current = CharToInt(str[i]) + carry; // 计算当前位的结果
        result = char(current % 10 + '0') + result;  // 将当前位的结果插入到结果的前面
        carry = current / 10;  // 更新进位
    }
    while (carry != 0) {
        result = char(carry % 10 + '0') + result;  // 处理剩余的进位
        carry /= 10;
    }
    return result;
}

int main() {
    string s;
    while (cin >> s) {
        string res = "0";  // 初始化结果为0
        for (int i = 2; i < s.size(); i++) {
            res = multiple(res, 16);  // 乘以16,相当于左移4位
            res = Add(res, CharToInt(s[i]));  // 加上当前字符代表的值
        }
        cout << res << endl;  // 输出最终结果
    }

    return 0;
}

提交结果:

[保研/考研机试] KY80 进制转换 北京大学复试上机题 C++实现,机试刷题记录,考研,c++,华为od

编辑切换为居中

添加图片注释,不超过 140 字(可选)文章来源地址https://www.toymoban.com/news/detail-643030.html

到了这里,关于[保研/考研机试] KY80 进制转换 北京大学复试上机题 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日
    浏览(53)
  • [保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

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

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

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

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

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

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

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

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

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

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

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

    2024年02月13日
    浏览(55)
  • [保研/考研机试] 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日
    浏览(41)
  • [保研/考研机试] KY102 计算表达式 上海交通大学复试上机题 C++实现

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

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

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

    2024年02月13日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包