清华大学考研复试机试:进制转换2

这篇博客详细介绍了如何将一个M进制的数转换为N进制,其中M和N介于2到36之间。内容包括输入输出描述、示例、注意事项和算法分析。重点在于处理字母字符的大小写转换和利用数组存储中间结果,提高计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

将M进制的数X转换为N进制的数输出。

输入描述

输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。

输出描述

输出X的N进制表示的数。

示例:

输入

10 2
11

输出

1011

注意

输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。

分析

这道题其实和10进制与2进制的转换是一样的,算法是相同的,只不过是换成了M和N而已,具体算法可以参考博主之前的博客进制转换。不过这道题需要注意输入和输出的大小写字母,所以需要单独写两个转化函数,这里使用了c库的判断类型的函数。另外这道题使用数组来存储输入和中间结果,并在计算过程中判断输入是否变为0,输入变为0就表示已经计算出结果,不再像之前一样单独写一个判断函数,这样提高了效率。还要注意结果的存储,如果将每一步的结果直接插入字符串的结尾,则在输出时需要逆序输出;如果插入到字符串的最前端,那么最后可以直接输出。

AC代码如下:

#include<iostream>
#include<string>
#include<cctype>//c库类型函数

using namespace std;

int m, n;//输入

int ctoi(char c)//char to int
{
   
	if(isalpha(c)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值