数制转换
来源:互联网 发布:c语言main函数 编辑:程序博客网 时间:2024/05/09 14:52
问题描述:
描述
求任意两个不同进制非负整数的转换(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)。
样例输入
15 Aab3 7
样例输出
210306
解题思路:
本题思路较为简单,将a进制数n先转化为十进制数,然后在转化为b进制数。
解题细节:
注意题目要求,输出的字母符全部大写,同时运用公式:n=(n/d)*d+n%d;将十进制数转为任意进制数。
代码:
#include<bits/stdc++.h>using namespace std;int main(){int a,b,d[100];char c[40];while(cin>>a>>c>>b){int len=strlen(c);int i,j,k,m,n,sum=0,x;for(i=len-1;i>=0;i--){x=0;m=len-i-1;if(c[i]>='0'&&c[i]<='9')x=c[i]-'0';else if(c[i]>='a'&&c[i]<='z') x=c[i]-'a'+10; else if(c[i]>='A'&&c[i]<='Z') x=c[i]-'A'+10; sum+=x*pow(a,m);}i=0;do{d[++i]=sum%b;sum=sum/b;}while(sum!=0);for(j=i;j>=1;j--)if(d[j]>=10)cout<<(char)(d[j]-10+'A');//如果大于等于10,将数字转化为大写字母符else cout<<d[j];}return 0;}运行结果:
心得体会:
做题要有耐心,相信自己!
1 0
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- A Simple Algebraic Way to understand Quaternions and Rotations in 3D
- Spring中事务
- JDBC PreparedStatement example – Batch Update
- LeetCode部分题解
- SpringBoot bean无法注入的问题
- 数制转换
- Tensorflow+Anaconda安装教程
- 线性回归
- nyoj214——单调递增子序列(二)
- 65:Recover Binary Search Tree
- 3779: 重组病毒
- js滚动,滑动,幻灯片,轮播,swipe js滚动,滑动,幻灯片,轮播
- 【DRP】Oracle数据库安装遇到的问题及简单操作
- linux中shell环境和Makefile环境下$变量的含义