【Day_04】进制转换
进制转换
题目来源
牛客网:进制转换
题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1
输入
7 2
输出
111
思路分析
- 进制转换的基本思路是取模,然后除以要转换的进制,直到除的结果为0
- 对负数进行标记,0直接打印结果
- 除的结果有大于10的数,要用ABCD等字母表示,所以采用使用string保存最终的结果
- 定义一个字符串存放0-F,16个数字,计算的结果映射到数组中得到对应的值
- 没得到一个结果拼接到字符串中,最后将字符串逆置,并打印结果
代码展示
#include
#include
#include
using namespace std;
int main()
{int m = 0;int n = 0;string num = "0123456789ABCDEF";//结果集映射表while (cin >> m >> n){string str = "";//m为0if (m == 0){cout << '0';continue;}int flag = 0;//标记正负if (m < 0){flag = 1;m = -m;}while (m){//进制转换的方法,取模,除以要转换的进制数,直到结果为0int temp = m % n;str += num[temp];m /= n;}if (flag){str += '-';}//逆置字符串reverse(str.begin(), str.end());cout << str << endl;}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
